在python的print语句中实现60秒倒数计时器

时间:2019-01-29 17:14:42

标签: python

如何在打印语句中实现一个60秒的倒计时计时器,该计时器仅更新秒数而不影响打印语句中的字符串?这是针对Linux终端的。

3 个答案:

答案 0 :(得分:2)

这听起来似乎是家庭作业,所以我将尝试为您提供解决问题的工具,而不是现成的解决方案。

首先,等待一秒钟:

from time import sleep

print('Starting...')
sleep(1)
print('It's now been one second')

第二,更新屏幕上的字符串:

print('This is the first string', end='\r')
print('This is the second string, which overwrites the first')

end='\r'告诉Python,与其在终端的末尾向下移动,不如将其返回到同一行的开头(因此,下一个print语句将覆盖前一个)。 \r代表“回车”,这是一个老式的打字机术语。 (end的默认值为\n,“换行符”。)

第三,从60开始倒数​​:

for secs in range(60, 0, -1):
    print('Time remaining:', secs)

这将打印60,然后打印59,然后打印58,依此类推,一直打印到1。然后它将停止。在range调用中,第一个参数是从哪里开始,第二个参数是从哪里停止,第三个参数是步长。

在这三个之间,您应该具有解决此问题所需的所有工具!

答案 1 :(得分:0)

对于Python 3:

print(60,"\r",end="")

“ \ r”表示回车,它将键入光标设置回当前行的开头。 end =“”覆盖默认的打印功能行为,这使每个打印都以换行符结束。您的倒计时可以这样实现:

from time import sleep
for i in range(0,60):
    print(60-i,end=" /r")
    sleep(1)

答案 2 :(得分:0)

尝试以下

import sys
import time


msg = "hello world"

for i in range(10):
    sys.stdout.write("\r{} {}seconds ".format(msg, i))
    time.sleep(1)
    sys.stdout.flush()

还可以查看python中的tqdm库:)。

https://tqdm.github.io/

$ seq 9999999 | tqdm --bytes | wc -l
75.2MB [00:00, 217MB/s]
9999999
$ 7z a -bd -r backup.7z docs/ | grep Compressing | \
    tqdm --total $(find docs/ -type f | wc -l) --unit files >> backup.log
100%|███████████████████████████████▉| 8014/8014 [01:37<00:00, 82.29files/s]