我正在尝试循环执行某些操作(在此示例中打印为 100)并随时通过按“Ctrl+C”取消计数。
我正在使用的测试代码如下,但这不起作用(编辑:它在从终端启动的脚本中工作,但在我的 IDE - Wing 101 的 python shell 中运行时不起作用)。KeyboardInterrupt 没有捕捉到“Ctrl+C”命令或任何其他键。
import time
i = 1
while (i < 101):
try:
print '%d percent complete' % i
time.sleep(0.5)
i += 1
except KeyboardInterrupt:
break
我在这里读过这个问题,我很确定这不是我的问题,因为我已经输入了“time.sleep(0.5)”命令来减慢程序的速度。我也读过这个问题,但既然它已经 5 岁了,我认为这个错误现在已经修复了吗?我知道我可以使用线程来实现我想要的,但如果只是为了学习,我想知道为什么这种方法不起作用。
我在 Ubuntu 14.04 中使用 python 2.7.6,如果能解决这个问题,我将不胜感激。(编辑:我知道代码是独立工作的,但我仍然想知道为什么它在 Wing 101 IDE 的 python shell 中不起作用)
编辑 1
按照建议,我尝试将 while 循环放在 try 块中:
try:
i = 1
while (i < 101):
print '%d percent complete' % i
time.sleep(0.5)
i += 1
except KeyboardInterrupt:
break
但不幸的是,这也不起作用,而是出现以下错误:
Traceback (most recent call last):
File "/home/matt/autosys_repo1/python_test_scripts/test_refresh_line.py", line 13, in <module>
break
'break' outside loop: <string>, line 13