gpt4 book ai didi

python - Python 中的时间问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:26 24 4
gpt4 key购买 nike

我的程序正在使用来自用户的 input()。当用户在 5 秒内没有写任何内容时,我想打印 "hey, are you there?"。例如,用户写了一些东西,然后停止打字。如果用户等待超过 5 秒,那么我想打印 “嘿,你在吗?”。到目前为止,我试过这个:

while True:
start=time.time()
x=input("enter something")
end=time.time()
dif=end-start
if 5<dif:
print("hey are you there?")

它没有像我预期的那样工作,因为它在等待用户。在用户写了一些东西之后,它正在写 "hey are you there?"。但我希望当用户不输入任何内容时,它也意味着 x==False,我想警告用户。

更新 我试过这个:

import msvcrt
import time

time1 = 0

print('enter something: ')

while not msvcrt.kbhit():
time.sleep(1)
time1 +=1
if time1 == 5:
print("hey are you there?")

while msvcrt.kbhit():
x = input()

也没用。它甚至在 5 秒后打印了 "hey are you there?" x==True。到目前为止没有解决方案,希望我解释了我需要什么。

最佳答案

这似乎可行,但我使用的是 python 2.7:

    import threading, time

class ValueGetter(object):
def __init__(self, wait_time_sec = 5.0):
self.stop_flag = True
self.wait_time_sec = wait_time_sec

def get_value(self):
self.stop_flag = False
p = threading.Thread(target=self.print_uthere)
p.start()
retval = raw_input('enter something:\n')
self.stop_flag = True
p.join()
return retval

def print_uthere(self):
tprint = tnow = time.clock()
while not self.stop_flag:
if tnow > (tprint + self.wait_time_sec):
print 'Are you there???'
tprint = time.clock()
time.sleep(0.01)
tnow = time.clock()

v = ValueGetter()
print v.get_value()

这是一个修改后的版本,只要他们输入一个键,就会重置 5 秒计时器。不过仅限 Windows。

import threading, time, msvcrt, sys

class ValueGetter(object):
def __init__(self, wait_time_sec = 5.0):
self.stop_flag = True
self.wait_time_sec = wait_time_sec
self.tprint = self.tnow = time.clock()

def get_value(self):
self.stop_flag = False
p = threading.Thread(target=self.print_uthere)
p.start()
print 'enter something:'
retval = ''
ch = ''
while not ch == '\r':
retval += ch
ch = msvcrt.getch()
sys.stdout.write(ch)
self.tprint = time.clock()
print
self.stop_flag = True
p.join()
return retval

def print_uthere(self):
self.tprint = self.tnow = time.clock()
while not self.stop_flag:
if self.tnow > (self.tprint + self.wait_time_sec):
print 'Are you there???'
self.tprint = time.clock()
time.sleep(0.01)
self.tnow = time.clock()

v = ValueGetter()
print v.get_value()

关于python - Python 中的时间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com