我尝试在循环中执行某些操作(在此示例中打印到100)并按下&c; Ctrl + C'随时取消计数。
我正在使用的测试代码如下,但是这不起作用(编辑:它在从终端启动的脚本中工作但在我的IDE的python shell中运行时不起作用 - Wing 101 )。 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
我已经阅读了这个问题here而且我很确定这不是我的问题,因为我已经把#time; time.sleep(0.5) &#39;命令进入以减慢程序速度。我也读过this question但是现在已经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
答案 0 :(得分:0)
这是Wing IDE 101的限制。停止这样的循环的唯一方法是重新启动shell。