簡體   English   中英

為什么 KeyboardInterrupt 不輸出 if-else 循環?

[英]Why is KeyboardInterrupt not outputting an if-else loop?

所以我有這個我想做的小游戲的代碼,但是帶有鍵盤中斷的 output 不起作用。 我是 python 的菜鳥,所以我願意接受任何修復我的代碼的建議。

代碼:

"""
GAME
number 1-20 rapidly listing
if press Ctrl+C on 10, then win
if not, then lose and restart
"""

import time

print("Type Ctrl+C to stop")
print("If you land on 10, you win!")
time.sleep(2)
i_dict = {1: 14, 2: 13, 4: 11}
dict_num = 0
while True:

    try:
        for i in range(1, 21):
            print(i)
            time.sleep(0.07)
    except KeyboardInterrupt:
        i_dict[dict_num + 1] = i
        if i == 10:
            print("You Win! Nice Job!")
        else:
            print(f"You landed on {i}!")
        scores = input("Would you like to see your past scores?").lower()
        if scores == 'yes':
            for num, score in i_dict.items():
                print(f"{num}: {score}")
        restart = input("Would you like to try again? Answer with Yes or No: ").lower()
        if restart == 'yes':
            break

Output 當我按 Cntrl+C 時:

----------FINISHED----------
exit code: 2 status: 0

因此,我沒有使用鍵盤中斷作為導入,而是將其切換為使用鍵盤模塊,如果您還沒有安裝它,請通過執行pip install keyboardpip3 install keyboard如果您正在運行 linux 您可能必須運行 Z23EEEB4347BDD26BDDFC6B755 ,如果您不在 linux 上,請不要擔心。 這是稍微改進的代碼。 快樂編碼!

import keyboard
import time
print('Hit "F" to stop. ')
print("If you land on 10, you win!")
time.sleep(2)
print("Start!")
i_dict = {1: 14, 2: 13, 4: 11}
dict_num = 0
i = 0
while True:
    if i != 21:
        print(i)
        time.sleep(0.07)
        i += 1
        if keyboard.is_pressed("f"):
            i_dict[dict_num + 1] = i
            if i == 10:
                print("You Win! Nice Job!")
            if i != 10:
                print(f"You landed on {i}!")
            i = 0
            restart = input("Would you like to try again? Answer with Yes or No: ")
            if restart.lower() == 'yes':
                i = 0
            elif restart.lower() == 'no':
                print("Thanks for playing")
                exit()
    if i >= 21:
        i = 0
   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM