当python执行while循环时,如何获得实时输入?

时间:2017-01-16 17:34:19

标签: python python-3.x

我正在尝试制作一个计时器(Python 3.6.0)。我知道还有其他帖子更简单的计时器,但我想制作一个更复杂的计时器。这是我的代码:

import time

x = 0

run = input("Start timer? [Y]/[N]")
while run == 'Y':
    time.sleep(1)
    x += 1
    print(x)
else:
    print("end of code")

有没有办法在程序运行时打破while循环(以便计时器可以停止)?如果我在“x + = 1”行下面放入“in = input()”以便用户可以停止循环,则计时器停止计数,因为用户必须每秒提供输入。如果我在没有任何输入的情况下运行上面的代码,我就无法在Python Shell中输入任何内容,因为循环继续。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的,这样的事情可能适合您。我不太确定在等待input时计时器应该做什么,但也许这样的事情会有所帮助。

import time

start_timer = input('Do you want to start the timer? Y / N: ')

if start_timer.lower() == 'y':
    print('Type N or n to break the loop')
    start = time.time()
    while start_timer.lower() != 'n':
        start_timer = input()

    end = time.time()
    print('Total loop time: {}'.format(end - start))
else:
    print('Ok, ending')

编辑: 打破while循环的唯一方法是键入Nn(使用.lower()会将输入转换为n(如果是N)。在进入循环之前记录系统时间。然后,用户可以根据需要键入他们想要的任何内容,但n除外。然后键入n将中断循环,再次获取系统时间,并显示开始和结束时间之间的差异。不需要运行计时器,只需要"之前和之后"倍。