python 文本单行刷新

今天程序没有在同行刷新的原因是忘加end=" "了


需要实现的功能类似单行歌词刷新,或者文本进度条类似的功能。如果要实现这个问题,首先需要明白这么几个问题,文本为什么换行,以及文本回到行首。

文本为什么会换行

因为print函数默认会为字符串添加换行符’\n’,如果不想让文本换行,可以利用print函数的end参数对字符串末尾添加的字符进行限制,比如

import time
for i in range(100):
    time.sleep(0.5)
    print("The program has processed {:2}%".format(i+1),end="")

这段代码的执行结果是在同一行打印了100次文本,那么如何让每次打印的时候光标回到行首呢

文本光标回到行首

这个需要用到之前在字符串中介绍过的一个转义符“\r”,这个转义符的功能是光标回到行首。这样,每一行打印时都会把之前的打印删掉,重新从行首开始打印。比如:

import time
for i in range(100):
    time.sleep(0.5)
    print("\r The program has processed {:2}%".format(i+1),end="")

为什么在idle中没有这样的效果呢?

可能有人会在idle中写上述代码执行,发现就算加了\r之后,仍然是在同一行进行打印,并没有像期望的那样,在同一行刷新,这是为什么呢?

因为IDLE作为调试命令行,默认是会打开debug开关,这样,所有的打印都会保留下来,而不会被后来的打印冲掉,我们可以把代码保存问文件进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值