我需要停止一个无限的while循环

I need to stop an infinite while loop

提问人:Brandhorst Beaumont 提问时间:2/4/2023 更新时间:2/4/2023 访问量:77

问:

当脚本运行时,它需要在输入之外才能捕获关键字并打破循环,我需要立即用“esc”字打破循环,而脚本等待用户输入

¿我是怎么做到的?

import time ; import keyboard as kb

while (True):
    if kb.is_pressed('esc'):
        break
    n = str(input('f(x) = '))
    print(n)
    time.sleep(1)

这有点心血来潮,但停止循环的唯一方法是按住“esc”关键字,按下该键并立即打破循环会更舒服,我尝试了几种方法,但它们都会导致同样的事情,而这是最有效的

python while-loop 无限循环 中断 execute-immediate

评论

1赞 101 2/4/2023
也许删除 ,已经减慢了循环执行速度。sleepinput
1赞 Ishwor Khatiwada 2/4/2023
这回答了你的问题吗?如何在 Python 中安全地停止无限循环?
0赞 nneonneo 2/4/2023
如果您不介意更改键,您会发现 Ctrl+C 将立即停止循环。

答:

0赞 Shail 2/4/2023 #1

如果您可以使用 + 而不是 ,则可以捕获错误。CtrlCescKeyboardInterrupt

import time

while True:
    try: 
        n = str(input('f(x) = '))
        time.sleep(1)
    except KeyboardInterrupt:
            print("\nBreaking from the infinite loop")
            break

SIGINT是我们按 + 时发送的信号。默认操作是终止进程。但是,在 Python 中,会引发错误。CtrlCKeyboardInterrupt

按下 escape 键时可能很难触发 a,因为中断过程取决于硬件和操作系统。SIGINT