根据用户输入提前保留循环,而不提示每次迭代

时间:2014-08-12 02:00:17

标签: python loops user-input break

我有一个需要很长时间才能运行的程序,我希望它能够做它需要做的事情,但是如果用户点击特定键,那么我希望循环在某一点上断。我见过的大多数问答都与这个问题有关,提示用户在循环的每次迭代中输入一些内容,但我不想这样做。我希望循环不受干扰地运行,直到它需要退出。

该脚本将在命令提示符(Windows)中作为可执行文件运行,所以我猜用户可以关闭窗口,但我希望循环在某个时刻中断。例如:

while True:
 print "Doing whatever I feel like"
 userinput = raw_input()
 if userinput == 'q':
    break

因此,这会一直打印,直到用户输入“q”,但它会在每次迭代时提示用户输入。我怎么能避免这个?

4 个答案:

答案 0 :(得分:1)

两种可能的解决方案:
1.按Ctrl-C关闭程序。这也适用于linux 2。

while True:
  for _ in range(100)
    print "Doing whatever I feel like"
  userinput = raw_input()
  if userinput == 'q':
    break

这仅询问用户每100次迭代。

答案 1 :(得分:1)

启动一个单独的线程来执行您需要执行的计算while self.flag == False,主程序可以坐在那里等待用户输入。一旦给出用户输入,设置Thread.flag = True,这将停止线程。等待Thread完成并加入,然后你也可以退出主程序。

答案 2 :(得分:1)

如果您不需要在特定点停留,但只是为了能够停止它,您可以使用带有KeyboardInterrupt(Ctrl-C)的try / except。

try:
    while True:
        print "Doing whatever I feel like"
except KeyboardInterrupt:
    exit

当用户点击CTRL-C时,它将退出。

答案 3 :(得分:1)

或者这个:

import msvcrt        
while True:
    print "Doing whatever I feel like"
    if msvcrt.kbhit():              # True if a keypress is waiting to be read.
        if msvcrt.getch()=="q":     # will not wait for Enter to be pressed
            break

检查msvcrt