文本进度条

采用字符串方式打印可以动态变化的文本进度条

  • 进度条需要能在一行中逐渐变化
  • 采用sleep()函数模拟一个持续的进度

版本一:简单的开始

# TextProBarV1.py
import time
scale = 10
print("------执行开始------")
for i in range(scale + 1):a = "*" * ib = "-" * (scale - i)c = (i / scale) * 100print("{:^3.0f}%[{}->{}]".format(c, a, b))time.sleep(0.1)
print("------执行结束------")

版本二:单行动态刷新

刷新的本质:用后打印的字符覆盖之前的字符

  • 每次输出之后不能换行:print()需要被控制,end参数
  • 每次输出之后要能回退:\r 光标返回到本行行首
# TextProBarV2.py
import time
for i in range(101):print("\r{:3}%".format(i), end="")time.sleep(0.1)

  • Print(),默认输出后在后面增加一个换行。end作用:print输出完成后后面增加的信息。如果希望输出后增加一个其他东西,则end=”其他东西”,如果end=””,则输出完成后不换行,光标停在那当次输出字符串的后面
  • \r,在打印字符串之前将光标移动到本行行首
  • IDE不是运行程序的环境,是开发程序的环境,为保证开发环境效果,系统将\r屏蔽掉了。为保证运行效果,可打开Windows命令行工具:Windows键+R输入“cmd”输入文件地址和文件名回车 即可看到单行动态刷新的进度。或者在Pycharm或VS Code即可看到。

版本三:完整效果

# TextProBarV3.py
import time
scale = 50
print("执行开始".center(scale // 2, "-"))
start = time.perf_counter()
for i in range(scale + 1):a = "*" * ib = "-" * (scale - i)c = (i / scale) * 100dur = time.perf_counter() - startprint("\r{:3.0f}%[{}->{}]{:.2f}s".format(c, a, b, c), end="")time.sleep(0.1)
print("\n" + "执行结束".center(scale // 2, "-"))

四、举一反三

文本进度条程序使用了time.perf_counter()计时

  1. 计时
  • 计时方法适合各类需要统计时间的计算问题
  • 例如:比较不同算法时间,统计部分程序运行时间
  1. 进度条
  • 在任何运行时间较长的程序中增加进度条
  • 在任何希望提高用户体验的应用中增加进度条
  • 进度条是人机交互的纽带之一

版本四:early pause:speeds up

# TextProBarV4.py
import time
from math import sinscale = 50
print("执行开始".center(scale // 2, "-"))
start = time.perf_counter()for i in range(scale + 1):x = i + (1 - sin(i * 3.14 * 2 + 3.14 / 2)) / -8a = "*" * int(x)b = "-" * (scale - int(x))c = (i / scale) * 100dur = time.perf_counter() - start# print("\r{:3.0f}%[{}->{}]耗时{:.2f}s".format(c, a, b, c), end="")print("\r{:3.0f}%[{}->{}]".format(c, a, b), end="")time.sleep(0.1)
print("\n" + "执行结束".center(scale // 2, "-"))

Power:speeds up

# TextProBarV4.py
import timescale = 10
print("执行开始".center(scale // 2, "-"))
start = time.perf_counter()for i in range(scale + 1):x = (i + (1 - i) * 0.03) ** 2a = "*" * int(x)b = "-" * (scale - int(x))c = (i / scale) * 100dur = time.perf_counter() - start# print("\r{:3.0f}%[{}->{}]耗时{:.2f}s".format(c, a, b, dur), end="")print("\r{:3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end="")time.sleep(0.4)
print("\n" + "执行结束".center(scale // 2, "-"))

版本五:progressbar

# ProgressBarV5.py
progressBefore = 0def printProgressBar(percent, prefix = ''):global progressBeforeif percent - progressBefore < 0.001:  # 只有当进度达到千分之一才刷新,避免频繁刷新进度条returnprogressBefore = percentpercentStr = "{0:.1f}".format(percent*100) filledLength = int(30 * percent)bar = '█' * filledLength + '-' * (30 - filledLength)print('\r%s |%s| %s%% ' % (prefix, bar, percentStr), end='')if __name__ == "__main__":   import timefor i in range(1000):printProgressBar((i+1)/1000, prefix="Progress:")time.sleep(0.01)      # 当前进程暂停0.01s

PS:参阅python123.io

Python项目实践:文本进度条相关推荐

  1. Python小菜鸟-----文本进度条的不同设计函数

    设计名称 趋势 设计函数Linear Constant f(x) = xEarly Pause Speeds up f(x)= x+(1-sin(x*π*2+π/2)/(-8))Late Pause ...

  2. 从文本进度条开始:谈谈自己缺失的Python基础知识

    从文本进度条开始:谈谈自己缺失的Python基础知识 一.文本进度条 二.基础知识 (一)Python center()方法 (二)time.perf_counter() (三)print() 三.练 ...

  3. python文本进度条94页_Python学习笔记 | 实例4:文本进度条

    本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> 文本进度条-简单的 ...

  4. Python实现 文本进度条展示(嵩天老师)

    示例4:文本进度条 输出要求: -采用字符串方式打印文本进度条 -进度条需要能在一行中逐渐变化 代码:(不能动态刷新) #TextProBarV1.py import time scale=10 pr ...

  5. [Python] 实现文本进度条

    目录 简单的开始 单行动态刷新 带刷新的文本进度条 简单的开始 进度条是计算机处理任务或执行软件中常用的增强用户体验的重要手段,它能度条功能.今天我们将利用 Python 字符串处理方法实现文本进度条 ...

  6. Python文本进度条

    进度条是计算机处理任务或执行软件中常用的增强用户体验的重要手段,它能够实时显示任务或软件的执行进度. 非刷新文本进度条 #非刷新的文本进度条 import time scale = 10 print( ...

  7. Python progress - 文本进度条

    Python progress - 文本进度条 https://pypi.org/project/progress/ https://github.com/verigak/progress Proje ...

  8. Python 之文本进度条

    看到进度条一点点逼近百分之百,是不是很有成就感?! 下面我们就借助 python 来实现它. 为了能够更直观,我们姑且赋予开始和结束提示: #文本进度条import timescale=10print ...

  9. 【Python】IDLE中文本进度条的单行动态刷新无法实现分析

    文本进度条需求分析 采用字符串方式打印可以动态变化的文本进度条 进度条需要能在一行中逐渐变化 如何获得文本进度条的变化时间呢?我们采用sleep()模拟一个持续的进度 import time scal ...

最新文章

  1. 指针和数组的区别是什么?
  2. oracle 的目录是空的,oracle sqlplus在@命令路径中有空格的问题
  3. sylog mysql_25.2 配置使用基于mysql存储日志信息
  4. Shell脚本中字符串的一些常用操作
  5. DenseNet论文笔记
  6. UI设计灵感|插画在App设计中有哪些常用方式?
  7. springmvc和mybatis整合
  8. [JZOJ5618]【NOI2018模拟3.31】华胥梦天
  9. 超详细的CentOS7的下载安装配置教程
  10. 8位单片机003兼容替换意法半导体STM8S003F3P6
  11. 单片机、ARM与DSP对比
  12. @JsonFormat和@DataFormat的使用
  13. LimeSDR Mini轻松上手系列1: 介绍
  14. Mir2源码详解之服务端-选择(角色)网关(SelGate)
  15. 强化学习课程笔记之policy-based方法
  16. 不懂游戏类型?敢说你懂游戏音乐
  17. 布尔矩阵与自动推荐系统
  18. SQL Pretty Printer
  19. python打造记账本_python实现日常记账本小程序
  20. 网站设计的思考 阿捷原创

热门文章

  1. 可输入可选择的input
  2. 13、字符设备驱动的使用
  3. 与内存管理相关的几个宏
  4. Solr相关概念详解:SolrRequestHandler
  5. MasterPages: Improved Version(翻译)
  6. go excel换行符替换_微软Excel与WPS Excel哪个好玩?
  7. python第三方库文件传输助手_Python中的第三方模块(itchat)
  8. 单结晶体管的导电特性_适用于印刷电子的导电墨水可在纸和PET薄膜上印刷薄膜晶体管...
  9. idea 远程调试_IDEA太强悍,针对调试器和代码分析器的改进,提前知道代码怎么跑...
  10. mysql架构 三级主从同步_MySQL 主从同步架构中你不知道的“坑”