提问者:小点点

为什么下面的代码在输出中打印一个额外的零?


我正在做发射倒计时(从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个答案

匿名用户

这是因为当您在print语句print(“launch in:”,contag,end=“\r”)中使用“/r

它用新字符串替换行上的当前字符串,但由于该字符串与新字符串的长度不同,

从第一个值10开始的0永远不会被替换,

因此,要修复此错误,您只需在printprint(“launch in:”,contag,“”,end=“\r”)中的contag后面添加一个“”

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!")

匿名用户

这是因为您开始打印10。 之后,您只需覆盖控制台上的1。 您可以通过在print命令中添加一个额外的空间来轻松解决此问题:

print("Launch in:", str(contag) + " ", end="\r") 

匿名用户

打印的第一条信息如下:

Launch in: 10

\r告诉光标返回到行首,但它不会擦除已经打印的文本。

那么打印的第二条消息是这样的:

Launch in: 9

第二条消息短了一个字符,因此0作为第一条消息的剩余文本保留下来。