python print 实现动态loading......效果,省略号无限循环

本来是要查找print()的flush参数的用法,于是阅读了这篇文章

但在阅读过程中,这篇文章中的动态loading效果引起了我的兴趣,如下图所示。 

​      

博主Granthoo给出的代码如下:

import time                                                                           
print("Loading",end = "")
for i in range(6):
    print(".",end = '',flush = True)
    time.sleep(0.2)

结果如下:

 (因为是gif动图,所以会一直画面会不停的动,实际输出六个点之后就停止了)

博主Granthoo给出的代码在打印出loading后,能够动态输出6个点号一次,但不能一直循环。

于是我产生了实现,loading后6个点号逐个输出并一直无限循环下去,的想法。 

1.最初的想法是,将逐个输出六个点的for循环放入一个无限循环中,

于是我查找了Python实现无限循环的方法

参考了这篇文章,只要将while语句的条件表达式设置为永远不为False,就可以实现无限循环,使用ctrl+c可以退出当前无限循环。

于是有了以下代码:

import time 
print("loading",end='')
val=1
while val==1 :
    for i in range(6):
        print('.',end='',flush = True)
        time.sleep(0.5)

但结果却是:

loading............................

loading后逐个输出六个点后,这六个点并未消失,而是在此之后继续逐个输出六个点,无限循环,这不是我们想要的效果。

2.于是我又查找了如何让输出的字符消失的方法,参考了这篇文章

转义符\b可以让光标向前移动一位,当光标移动后,光标后面的已经输出的字符串对电脑来说变为空白,但我们还可以看见,此时再从新的光标位置输入时,新输入的内容就会覆盖原来输出的字符串,相当于删除。

于是只要在每一次输出六个点后,将光标向前移动六位,就可以覆盖掉上一次输出的六个点,输出新的六个点。在原来的代码中,加入一行print语句即可实现。

新的代码如下:

import time 
print("loading",end='')
val=1
while val==1 :
    for i in range(6):
        print('.',end='',flush = True)
        time.sleep(0.5)
    print('\b\b\b\b\b\b',end='')

结果如下:

 (因为只能上传5M以内的 gif动图,所以只截取了第一次输出六个点的画面,但效果是一样的)

可以看到,这就是我们想要的效果。

(gif动图是用win+g录频后,再用pr裁剪导出得到的。)

初学python,写下这篇作为学习笔记,

第一次写CSDN博客,内容浅显,只为分享一次小小成功后的喜悦。

学海无涯,前路漫漫,继续加油。

2023.8.19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值