为什么 KeyboardInterrupt 不输出 if-else 循环?

Why is KeyboardInterrupt not outputting an if-else loop?

所以我有一个我想制作的小游戏的代码,但是键盘中断的输出不起作用。我是 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

当我按下 Cntrl+C 时输出:

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

因此,我没有使用键盘中断作为导入,而是将其切换为使用键盘模块,如果您还没有安装它,请执行 pip install keyboardpip3 install keyboard 如果您是 运行ning linux 你可能需要 运行 python 作为 sudo,如果你不在 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