1

我正在尝试循环执行某些操作(在此示例中打印为 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
4

1 回答 1

0

这是 Wing IDE 101 的限制。停止这样的循环的唯一方法是重新启动 shell。

于 2016-07-20T17:16:42.993 回答