为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻翻过去那场雪 2023-02-22 19:14:43
我正在进行启动倒计时(从 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!")


查看完整回答
反对 回复 2023-02-22
?
智慧大石

TA贡献1946条经验 获得超3个赞

打印的第一条消息是这样的:

Launch in: 10

指示\r光标返回行首,但不会擦除已打印的文本

然后打印的第二条消息是这样的:

Launch in: 9

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


查看完整回答
反对 回复 2023-02-22
?
catspeake

TA贡献1111条经验 获得超0个赞

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

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



查看完整回答
反对 回复 2023-02-22
  • 3 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信