import time
# Print a countdown using carriage return
def countdown():
for i in range(5, 0, -1):
print(f"Time remaining: {i}", end='\r')
print("Time's up!")
# Call the countdown function
countdown()
通过使用“ “(回车)输出必须是最后一个打印语句“Time's up!”,但输出是“Time's up!ning:1”
以下是所发生事件的详细说明:
回车
\r
:此字符将光标移回控制台中当前行的开头。它不会删除该行的内容,而只是允许新文本覆盖旧文本。
行覆盖: 在倒计时循环中,由于
\r
,每条新的“剩余时间:X”消息都会覆盖前一条消息。但是,如果新消息比前一条消息短,则不会完全删除旧消息。
最终打印语句: 当您打印“Time's up!”时,它会覆盖最后一条“剩余时间:1”消息的开头。因为“时间到了!”比“剩余时间:1”短,上一条消息中的剩余字符(“ning:1”)不会被覆盖并保持可见。
这会产生串联输出“Time's up!ning: 1”。
要解决此问题并确保
Time's up!
干净地覆盖上一行,您可以用空格填充它,以确保它与要覆盖的最长消息一样长:
import time
def countdown():
for i in range(5, 0, -1):
print(f"Time remaining: {i} ", end='\r')
time.sleep(1) # Adding a small delay to see the countdown
print("Time's up! ") # Pad with spaces
countdown()