为什么下面的代码在输出中输出一个零值?

时间:2020-07-07 14:40:28

标签: python format

我要进行一次启动倒计时(从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!")

3 个答案:

答案 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将保留为第一条消息的剩余文本。