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

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


翻翻过去那场雪
浏览 201回答 3
3回答

小怪兽爱吃肉

出现这种情况是因为当你在打印语句中使用“/r”print("Launch in:", contag, end="\r")它用新字符串替换行中的当前字符串,但由于字符串与新字符串的长度不同,第一个值的 10 中的 0,永远不会被替换,因此,要修复此错误,您需要做的就是在 print 中添加一个" "after 。contagprint("Launch in:", contag, " ", end="\r")import time contag = 10while True:     print("Launch in:", contag, " ", end="\r")     contag -= 1    time.sleep(1)    if contag == 0:             break print()print()print("Liftoff!")

智慧大石

打印的第一条消息是这样的:Launch in: 10指示\r光标返回行首,但不会擦除已打印的文本。然后打印的第二条消息是这样的:Launch in: 9第二条消息短了一个字符,因此0保留为第一条消息的剩余文本。

catspeake

发生这种情况是因为您开始打印10。之后你只需覆盖1控制台上的。您可以通过在 print 命令中添加额外的空格来轻松解决此问题:print("Launch in:", str(contag) + " ", end="\r")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python