我正在进行启动倒计时(从 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 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
出现这种情况是因为当你在打印语句中使用“/r”print("Launch in:", contag, end="\r")
它用新字符串替换行中的当前字符串,但由于字符串与新字符串的长度不同,
第一个值的 10 中的 0,永远不会被替换,
因此,要修复此错误,您需要做的就是在 print 中添加一个" "after 。contagprint("Launch in:", contag, " ", end="\r")
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!")
智慧大石
TA贡献1946条经验 获得超3个赞
打印的第一条消息是这样的:
Launch in: 10
指示\r
光标返回行首,但不会擦除已打印的文本。
然后打印的第二条消息是这样的:
Launch in: 9
第二条消息短了一个字符,因此0
保留为第一条消息的剩余文本。
catspeake
TA贡献1111条经验 获得超0个赞
发生这种情况是因为您开始打印10
。之后你只需覆盖1
控制台上的。您可以通过在 print 命令中添加额外的空格来轻松解决此问题:
print("Launch in:", str(contag) + " ", end="\r")
添加回答
举报
0/150
提交
取消