python执行while循环时如何获得实时输入?
我正在尝试制作一个计时器(Python3.6.0)。我知道还有其他帖子有更简单的计时器,但我想做一个更复杂的计时器。这是我的密码:python执行while循环时如何获得实时输入?,python,python-3.x,Python,Python 3.x,我正在尝试制作一个计时器(Python3.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循环(以便计时器可以停止)?如果我将
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循环(以便计时器可以停止)?如果我将“in=input()”放在“x+=1”行下面,以便用户可以停止循环,则计时器将停止计数,因为用户必须每秒提供输入。如果我在没有任何输入的情况下运行上述代码,我将无法在Python Shell中键入任何内容,因为循环一直在进行。有什么方法可以解决这个问题吗?正如评论中所讨论的,这样的方法可能适合您。我不太确定计时器在等待
输入时应该做什么,但这样做可能会有所帮助
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')
编辑:
当
循环时,打破循环的唯一方法是键入N
或N
(如果输入是N
,则使用.lower()
将输入转换为N
)。系统时间在进入循环前记录。然后,用户可以键入任何他们想要的内容,只要他们想要,除了n
。然后,键入n
将中断循环,再次获取系统时间,并显示开始和结束时间之间的差异。不需要运行计时器,只需要“之前和之后”时间 正如评论中所讨论的,这样的东西可能适合您。我不太确定计时器在等待输入时应该做什么,但这样做可能会有所帮助
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')
编辑:
当
循环时,打破循环的唯一方法是键入N
或N
(如果输入是N
,则使用.lower()
将输入转换为N
)。系统时间在进入循环前记录。然后,用户可以键入任何他们想要的内容,只要他们想要,除了n
。然后,键入n
将中断循环,再次获取系统时间,并显示开始和结束时间之间的差异。不需要运行计时器,只需要“之前和之后”时间 如果希望在执行input()时执行代码,则需要使用线程。这会很快变得相当复杂。你确定这就是你需要做的吗?看看哪一个本身是重复的,以帮助你开始。注意:Alex Martelli的基本副本似乎在不同操作系统之间工作时处于不断变化之中。另一个过度使用的选项是使用类似pygame的东西,因此,它将记录您的按键笔划,并检查在循环过程中是否可以使用select
等待用户输入,而不是像下面的回答那样睡觉。如果您希望在执行输入()时执行代码,则需要使用线程。这会很快变得相当复杂。你确定这就是你需要做的吗?看看哪一个本身是重复的,以帮助你开始。注意:Alex Martelli的基本副本似乎在不同操作系统之间工作时处于不断变化之中。另一个过度使用的选项是使用类似pygame的东西,因此,它将记录您的按键笔划,并在循环过程中检查您是否可以使用select
等待用户输入,而不是像下面的回答中那样睡觉@BramFran我稍微更改了代码。现在只有一种方法可以中断循环,允许用户继续输入与设置为中断循环的输入不匹配的输入(n
)。我还添加了一个解释。这正是我所需要的!非常聪明的解决方案。@BramFran我稍微修改了代码。现在只有一种方法可以中断循环,允许用户继续输入与设置为中断循环的输入不匹配的输入(n
)。我还添加了一个解释。这正是我所需要的!非常聪明的解决方案。