我要进行一次启动倒计时(从10到0),但是在打印“ 10”之后,而不是打印“ 9”,“ 8” ...它将结束打印“ 90”,“ 80”, “ 70” ...还有一个额外的零。
以下代码:
import time
contag = 10
while True:
print("Launch in:", contag, end="\r")
contag -= 1
time.sleep(1)
if contag == 0:
break
print()
print()
print("Liftoff!")
答案 0 :(得分:1)
之所以会这样,是因为当您在打印语句Console.Write
中使用“ / r”
它将行中的当前字符串替换为新字符串,但是由于该字符串的长度与新字符串的长度不同,
从第一个值开始的10中的0,永远不会被替换
这样,要解决此错误,您需要做的就是在打印print("Launch in:", contag, end="\r")
的{{1}}之后添加" "
。
contag
答案 1 :(得分:0)
发生这种情况是因为您开始打印10
。之后,您只需在控制台上覆盖1
。您可以通过在print命令中添加额外的空间来轻松解决此问题:
print("Launch in:", str(contag) + " ", end="\r")
答案 2 :(得分:0)
第一个打印出来的消息是这样的:
Launch in: 10
\r
告诉光标返回到行的开头,但是它不会清除已经打印的文本。
然后显示的第二条消息是:
Launch in: 9
第二条消息要短一个字符,因此0
将保留为第一条消息的剩余文本。