Ryeowook 发表于 2022-6-14 10:50:43

循环输出结果

循环在一行上递减的输出一段字符,如图代码。预期的最终输出结果应为[->]s,但不明白为什么最终输出结果如图所示。
希望能得到讲解。

Lai013 发表于 2022-6-14 11:05:33

\r 回车
将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
他是逐个替换之前打印的内容,不是全部替换。
[->->->->->]s
[->->->->]s
[->->->]s
[->->]s
[->]s
这样逐级替换下来就是[->]s]s]s]s]s了

森亦简 发表于 2022-6-14 11:05:59

[->->->->->]s
[->->->->]s
[->->->]s
[->->]s
[->]s

没有问题呀,我按照你代码的打的,输入的结果是这个
可能是软件显示的问题?

白two 发表于 2022-6-14 12:04:48

[->]s
我用pycharm输出结果是对的, 可能 vscode 抽风了

gujing58 发表于 2022-6-14 13:38:01

{:10_257:}

临时号 发表于 2022-6-14 14:25:00

\r只会逐一替换开头部分的字符,对后面的字符不会替换
它的替换过程是这样的:
[->->->->->]s
[->->->->]s]s
[->->->]s]s]s
[->->]s]s]s]s
[->]s]s]s]s]s
所以结果是[->]s]s]s]s]s
如果要实现你预期的效果话,可以这么写
import time

for i in range(5):
        c = "->" * (5-i)
        print('\r[{}s]'.format(c)+" "*(i+1),end="")
        time.sleep(1)
页: [1]
查看完整版本: 循环输出结果