I'm trying to create a code for a countdown timer that stays in place: so that each line overwrites the previous one. This is what I have so far:
import time
def countdown(t):
while t:
mins, secs = divmod(t, 60)
timeformat = "{:02d}:{:02d}".format(mins, secs)
print(timeformat, end='\r')
time.sleep(1)
t -= 1
print("That's the end! You lose...\n\n\n\n\n")
exit()
countdown(10)
The output, however, is:
00:10
00:09
00:08
...
00:00
That's the end! You lose...
Why is the carriage return seemingly not working?
IDLE doesn't support most control characters such as \\r
, \\b
. It is still true in 2020 (no support in Python 3.9)
\\r
should work if you start Python REPL in a Unix terminal or in Windows console instead.
当\\r
不起作用时,尝试\\x08
(退格),并添加flush=True
以确保安全:
print('\x08' * 5 + timeformat, end='', flush=True)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.