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

问题描述

所以我有一个我想制作的小游戏的代码,但是带有键盘中断的输出不起作用。我是 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(如果您正在运行 linux)来安装它可能必须以 sudo 的身份运行 python,如果你不在 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
   

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...