在Python中,当用户没有给出输入时,我可以用循环方式做什么。 我有python客户端,我要求用户输入,但是当用户没有给出输入时,我希望每五秒钟继续提供更新。
我无法使用
while (raw_input==""):
update()
因为如果输入是"",则表示用户已输入内容(按回车键);
有办法吗?
更新:
我仍然无法为我工作。我尝试了下面的方法,也尝试了类似于这个线程的东西:waiting for user input in separate thread。我还尝试将update()方法传递给应该在后台运行的线程。但是任何使用raw_input()的东西都会让它等待输入:
import threading
import time
def update():
while True:
time.sleep(5)
print "update"+'\n'
mythread = threading.Thread(target=update, args=())
mythread.daemon = True
mythread.start()
while True:
usrin=raw_input()
print "you typed: "+usrin
每次用户输入内容时,都会进行更新,然后返回usrin。如果这是我想要的,我可以轻松地将update()放入最后一个while循环中。
如果我只是使用update方法启动此线程并且在程序中不执行任何操作(废弃最后一次while循环),那么在shell中,每隔五秒更新一次,我仍然可以使用shell(即类型3 + 5)它给了我8)。我想在程序中发生类似的事情,当用户处于非活动状态更新时,如果他输入反应并返回更新。
注意:另外,我目前正在使用python 2.7.8,切换版本会有帮助吗?
答案 0 :(得分:1)
也许这可以让你开始:
from threading import Thread
from time import sleep
result = None
def update_every_second():
while result is None:
sleep(1)
print "update"
t = Thread(target=update_every_second)
t.start()
result = raw_input('? ')
print "The user typed", result