2016-12-03 39 views
0

注:运行的Python 2.7,在MacBook上工作(OSX)的Python:我怎么反复获取用户输入,可每次都超时

我想查询我的用户的输入,但如果未发生输入经过一段时间后,运行其他程序并重试。下面是我写:

import sys, select 

def test(): 
    waittime = 4 
    i, o, e = select.select([sys.stdin], [], [], waittime) 
    if i: 
     print 'got i' 
    else: 
     print 'did not get i' 
    test() 

这里做的事情:如果用户不按[返回],等待3秒,打印“没有得到我”,重新运行该功能。如果用户按[返回],如果(i)语句无限期地运行。

我想要它做什么:如果用户按[返回],打印'得到我',重新运行该功能,等待用户按下回车。如果用户没有按回车,等待三秒钟,打印'没有得到我',再试一次。

在此先感谢您的帮助! -Erik

+2

的[如何设置输入时间限制(http://stackoverflow.com/questions/2933399/how-to-set-time-limit-on-input) –

回答

0

首先我用多线程解决了这个问题,但我想这是过度的。

import sys,time,select 

anidle = 0.0 

while True: 
    time.sleep(0.01) 

    incoming = select.select([sys.stdin],[],[],0.0)[0] 
    if len(incoming) > 0: 
     anidle = 0.0 
     aline = sys.stdin.readline() 

     # process the input here 
     print 'Input:', aline 
     break 

    anidle += 0.01 
    if anidle > 4: 

     # process no input for 4 seconds here 
     print 'No input.' 
     break 
+0

这工作可能重复的!非常感谢。我通过改变(while True)到(while health> 0)以及用于“处理输入”的hashtags(我写了health - = 20)来适应自己的个人用途(在一个小游戏中工作)。 –

相关问题