python 文本换行_如何用Python写个文本进度条?

dc237b94fff444f9cd3d75a13c88a71f.png

点击上方「蓝字」关注"程序员Bob"

每天与你不见不散!

eae2e7b3b34af6529dc72026fcc09e8c.gif

每日一句,送给最珍贵的你:

知行合一!

往日推荐:Python字符串及Time库介绍

e6561d63c1ffb9c15e4c6423f37de73d.png

程序员Bob(ID:gh_8a1a1530d0bf)  第218次推文   图源:小张

昨天我们学到了Python中Time库的使用,今天就可以开始用Time库完成进度条的操作啦!

进度条-反映某一事件的运行状态

文本进度条:采用字符串方式打印可以动态变化的文本进度条,且在一行中能够逐渐变化。

其实学过进度条的就知道进度条其实只是一个模拟化的持续进程,但也在一定程度上能够反映运行的一个进度情况。

在这里我们需要用到Time库中的sleep函数,用它来模拟持续化进程。

比如下面这段代码就演示了一个简单的进度条实例:

import time  #调用Time库scale = 10   #定义文本进度条大概的宽度为10print("------执行开始------")for i in range(scale+1):    #引入一个for循环    a='*'*i                 #动态变化的*    b='.'*(scale-i)         #动态变化的.    c=(i/scale)*100  #输出进度条的百分比    print("{:^3.0f}%[{}-{}]".format(c,a,b))    time.sleep(0.1)print("------执行结束------")

运行结果:

71b8c5dc8060ef894a50a7ec5415ce2d.png

上面提到的是简单的文本进度条,其实用得更多还是单行动态刷新的文本进度条,即会在显示文本进度条时即时刷新——用后打印的字符信息覆盖之前打印的信息。

  1. 单行动态刷新的关键是\r。

  2. 刷新的本质是用后打印的字符覆盖之前的字符;

  3. 且不能换行:在用print时控制输出;

  4. 要能回退:打印后光标退回到之前的位置\r。

初始版本如下:

import timefor i in range(101):    print("\r{:3}%".format(i),end=" ")  #\r让光标返回到行首;end=" "让光标不进行换行操作    time.sleep(0.1)

运行结果(两张为连续变化):

47dd6b1deac627ca171e73bd78d6a051.png

c323797c1b0304d958d1251fb72ea5e1.png

最终版本:

import timescale = 50print("执行开始".center(scale//2,"-"))start=time.perf_counter()  #记录打印开始的时间for i in range(scale+1):    a='*'*i    b='.'*(scale-i)    c=(i/scale)*100    dur=time.perf_counter()-start    print("\r{:^3.0f}%[{}-{}]{:.2f}s".format(c,a,b,dur),end=' ')    #增加了dur变量,用来记录打印文本进度条所消耗的时间。    time.sleep(0.1)print("\n"+"执行结束".center(scale//2,'-'))

运行结果(两张为连续变化)

998528f1c832a0808059893dc12479c9.png

5b4d965ae610bbe5aceb3d82c9e47b9f.png

未完待续...

9d209b09a9d42fa82346c749efb6c512.png

往期推荐:

Python字符串及Time库介绍

2020-09-03

d223b5d3e975dda0a62f769e72674787.png

如何一个月过英语四级?

2020-09-02

c1c5de12efb79c2e6c052fdc5a65b9fc.png

八月碎碎念 || 每一次尝试,我们都得努力坚持

2020-08-31

b840bbaefbc57e3382bfc913c2cf27e1.png

为你,千千万万遍.

关注程序员Bob公众号,与你一起终生学习

930daa32694937a7450c7c5f0c0d5999.png

一键三连,就差你了 e95faf88dea21398150d976a8c0b417e.png

写留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值