是否有一种有效的方法可以通过让用户在他们想要突破的特定时间(例如按键)简单地提供输入来打破嵌套循环?我在循环中有条件语句,我可以用它来打破循环,但是如果我只是想在任何时候停止循环但仍然希望其余的代码运行,有没有一种简单的方法来做到这一点?为了澄清动机,我想做一些事情:
for x in xrange(1000):
for y in xrange(1000):
for z in xrange(1000):
print x,y,z #function of loop
if (user_has_pressed_key) == True: #a user input that
#can come at any time
#but there should NOT be
#a prompt needed for each iteration to run
break
else:
continue
break
else:
continue
break
我考虑过使用原始输入,但不希望循环等待用户的每次迭代,因为会有很多次迭代。似乎有一些proposed solutions when using different packages,但即使这些似乎只是Windows特定的。我在多台计算机上运行此代码,因此理想情况下希望它在不同的操作系统上运行。
答案 0 :(得分:5)
如果用户发出CTRL + C击键,您可以突破嵌套循环,因为它会引发KeyboardInterrupt
异常:
try:
for x in xrange(1000):
for y in xrange(1000):
for z in xrange(1000):
print x,y,z #function of loop
except KeyboardInterrupt:
print("Stopped nested loops")
答案 1 :(得分:0)
如果您希望在用户按下任何键时循环中断,则可以尝试此导入:
from msvcrt import getch
while True:
key = getch()
if (key is not None):
break