我正在尝试通过使用while循环来增加时间来进行速度相机程序。我希望用户能够输入"输入"停止while循环,while循环暂停并等待用户输入内容,因此while循环用作时钟。
import time
timeTaken=float(0)
while True:
i = input #this is where the user either choses to input "Enter"
#or to let the loop continue
if not i:
break
time.sleep(0.01)
timeTaken=timeTaken+0.01
print(timeTaken)
我需要一行代码,可以检测用户是否输入了某些东西而不使用"输入"。
答案 0 :(得分:1)
至少有两种方法可以解决这个问题。
首先要检查你的“标准输入”流是否有一些数据,没有阻塞实际等待直到有一些数据。评论中引用的答案告诉您如何处理此问题。然而,尽管这在简单性方面具有吸引力(与替代方案相比),但是无法在Windows和Linux之间透明地进行这种操作。
第二种方法是使用线程来阻止并等待用户输入:
import threading
import time
no_input = True
def add_up_time():
print "adding up time..."
timeTaken=float(0)
while no_input:
time.sleep(0.01)
timeTaken=timeTaken+0.01
print(timeTaken)
# designed to be called as a thread
def signal_user_input():
global no_input
i = raw_input("hit enter to stop things") # I have python 2.7, not 3.x
no_input = False
# thread exits here
# we're just going to wait for user input while adding up time once...
threading.Thread(target = signal_user_input).start()
add_up_time()
print("done.... we could set no_input back to True and loop back to the previous comment...")
正如您所看到的,关于如何从线程到主循环进行通信已经收到了输入,这有点两难。发信号的全局变量...... yucko嗯?
答案 1 :(得分:-2)
你应该使用一个帖子,如果你应该听取输入并且同时正在处理其他东西。