我是个傻瓜。我正在谈论a,b,c初学者。我正在上课,我正在进行一项项目,我被迫坚持下去。我写了这个代码,它接缝工作正常,除非不准确。我想我必须重写整个代码,但我想在我做之前先试试你们。这是我同行给予的唯一选择:(
===删除====
这使我的计时器工作但不正确。我的问题是,你可以看到增量1开始的同时另一个变量为0.这使得时钟关闭,因为9和0同时发生。我可以在这段代码中做些什么来确保在整个工厂秒之后+ 1或者z在0或0之间出现?我尝试过一些东西。没有什么是有效的,我可以访问的有限的东西(及时(只有时间到时间,时间()),数学等模块)所以我希望你的答案将是真正的基本。
我希望这是有道理的。
答案 0 :(得分:0)
import time
import datetime
class timer():
def start(self):
while 1:
x = datetime.datetime.utcnow()
print(x.strftime('%M.%S.%f'))
time.sleep(0.1)
worker = timer()
worker.start()
这就是工作。
请注意,Python的准确性非常有限,如果你想获得一个更完美的计时器,你必须存储最后一个已知的毫秒(1/1000秒)并创建一个while 1
循环来等待完全纠正大量的时间,然后释放并继续start()
内的无限循环。
有些事情:
import time
import datetime
def getTime():
return int(round(time.time() * 1000))
class timer():
def start(self):
lastRun = getTime()
while 1:
while getTime() - lastRun < 100:
pass
lastRun = getTime()
x = datetime.datetime.utcnow()
print(x.strftime('%M.%S.%f'))
worker = timer()
worker.start()
这和Python一样准确。
并向解释部分说明:
x = datetime.datetime.utcnow()
会将当前时间显示在名为x
的变量中。在python中,变量是带有函数的“对象”..而这个特定的变量作为一个名为strftime
的函数
strftime
接受一些参数,并将当前时间转换为您希望能够读取的字符串,在这种情况下,我们将创建%M
分钟,然后是一个点,然后是{{1对于秒,最后是一个点后跟%S
,这是毫秒
当然,它基于您当前的时间,如果您需要计算某些内容的运行时间,您可以将%f
添加到time.time() - self.time
函数之一而不是datetime.datetime
中,这样它就会计算一直运行的时间。
utcnow()
代码几乎相同,唯一的区别是使用存储“启动时间”的import time
import datetime
def getTime():
return int(round(time.time() * 1000))
class timer():
def __init__(self):
self.time = datetime.datetime.today()
def start(self):
lastRun = getTime()
while 1:
while getTime() - lastRun < 100:
pass
lastRun = getTime()
x = datetime.datetime.today() - self.time
print(x)
worker = timer()
worker.start()
,我们将self.time
减去now
,因此操作将是:
答案 1 :(得分:0)
这是您的代码修改为正确递增,并显示像伪计时器(分钟,秒和1/10秒)。 请注意,这不是真正的计时器,因为模拟5分钟的时间增量只需要大约一秒钟。 (Torxed的答案实现了一个真正的计时器。)
fsec = 0
sec = 0
minute = 0
while (minute < 5):
fsec += 1
if fsec == 10:
fsec = 0
sec += 1
if sec == 60:
sec = 0
minute += 1
print str(minute) + ":" + str(sec) + "." + str(fsec)