如何解决为什么 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 keyboard
或 pip3 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。