繁体   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