好的,我将从您的计时器滞后的原因开始。
在您的程序中发生的情况是time.sleep()
调用“休眠”程序的操作 1 秒,一旦该秒过去,您的程序将再次开始执行。但是您的程序仍然需要时间来执行您告诉它执行的所有其他命令,因此需要1s + Xs
实际执行所有操作。尽管这是一个非常基本的解释,但从根本上说,这就是为什么您的计时器不同步的原因。
至于为什么您不断地在新行上打印,该print()
函数有一个预定义的行尾字符,它附加到给定的任何字符串。
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
end="YourThing"
您可以通过像这样放入您的打印语句来用任何内容覆盖它
for x in range(3):
print("Test", end="")
上面的示例在行尾附加了一个空字符串,因此循环的输出为
"TestTestTest"
至于解决你的计时器问题,你应该使用类似于
timePoint = time.time()
while True:
#Convert time in seconds to a gmtime struct
currentTime = time.gmtime(time.time() - timePoint))
#Convert the gmtime struct to a string
timeStr = time.strftime("%M minutes, %S seconds", currentTime)
#Print the time string
print(timeStr, end="")