文本进度条分析
1.1 文本进度条
安装软件和加载某些数据看到的进度显示
1.2 需求分析
-
采用字符串方式打印可以动态变化的文本进度条
-
进度条需要能在一行中逐渐变化
1.3问题分析
如何获得文本进度条的变化时间?
-
采用sleep()模拟一个持续的进度
二文本进度条的简单开始
2.1 简单的开始
# 定义一个值
count = 100
# 打印提示信息
print("-------开始执行-------")
# 让上面定义的值循环并且加一
for i in range(count + 1):
# print(i)
# a为#号并且随着变量i变化
a = "#" * i
# b为.并且随着定义的值除以2后减变量i
b = "." * (count//2 - i)
# c为i除以定义的值再成以100
c = (i / count) * 100
# print(c)
#打印abc的值并且以百分号形式进度条显示(2f是保留两位)
print(f"[{a}->{b}]{c:.2f}% ")
# 设置睡眠时间
time.sleep(0.1)
# print(b)
# 打印结束信息
print("-------执行结束-------")
得到的结果为
-------开始执行-------
[->..................................................]0.00%
[#->.................................................]1.00%
[##->................................................]2.00%
[###->...............................................]3.00%
[####->..............................................]4.00%
[#####->.............................................]5.00%
[######->............................................]6.00%
[#######->...........................................]7.00%
[########->..........................................]8.00%
[#########->.........................................]9.00%
[##########->........................................]10.00%
[###########->.......................................]11.00%
[############->......................................]12.00%
[#############->.....................................]13.00%
[##############->....................................]14.00%
[###############->...................................]15.00%
[################->..................................]16.00%
[#################->.................................]17.00%
[##################->................................]18.00%
[###################->...............................]19.00%
[####################->..............................]20.00%
[#####################->.............................]21.00%
[######################->............................]22.00%
[#######################->...........................]23.00%
[########################->..........................]24.00%
[#########################->.........................]25.00%
[##########################->........................]26.00%
[###########################->.......................]27.00%
[############################->......................]28.00%
[#############################->.....................]29.00%
[##############################->....................]30.00%
[###############################->...................]31.00%
[################################->..................]32.00%
[#################################->.................]33.00%
[##################################->................]34.00%
[###################################->...............]35.00%
[####################################->..............]36.00%
[#####################################->.............]37.00%
[######################################->............]38.00%
[#######################################->...........]39.00%
[########################################->..........]40.00%
[#########################################->.........]41.00%
[##########################################->........]42.00%
[###########################################->.......]43.00%
[############################################->......]44.00%
[#############################################->.....]45.00%
[##############################################->....]46.00%
[###############################################->...]47.00%
[################################################->..]48.00%
[#################################################->.]49.00%
[##################################################->]50.00%
[###################################################->]51.00%
[####################################################->]52.00%
[#####################################################->]53.00%
[######################################################->]54.00%
[#######################################################->]55.00%
[########################################################->]56.00%
[#########################################################->]57.00%
[##########################################################->]58.00%
[###########################################################->]59.00%
[############################################################->]60.00%
[#############################################################->]61.00%
[##############################################################->]62.00%
[###############################################################->]63.00%
[################################################################->]64.00%
[#################################################################->]65.00%
[##################################################################->]66.00%
[###################################################################->]67.00%
[####################################################################->]68.00%
[#####################################################################->]69.00%
[######################################################################->]70.00%
[#######################################################################->]71.00%
[########################################################################->]72.00%
[#########################################################################->]73.00%
[##########################################################################->]74.00%
[###########################################################################->]75.00%
[############################################################################->]76.00%
[#############################################################################->]77.00%
[##############################################################################->]78.00%
[###############################################################################->]79.00%
[################################################################################->]80.00%
[#################################################################################->]81.00%
[##################################################################################->]82.00%
[###################################################################################->]83.00%
[####################################################################################->]84.00%
[#####################################################################################->]85.00%
[######################################################################################->]86.00%
[#######################################################################################->]87.00%
[########################################################################################->]88.00%
[#########################################################################################->]89.00%
[##########################################################################################->]90.00%
[###########################################################################################->]91.00%
[############################################################################################->]92.00%
[#############################################################################################->]93.00%
[##############################################################################################->]94.00%
[###############################################################################################->]95.00%
[################################################################################################->]96.00%
[#################################################################################################->]97.00%
[##################################################################################################->]98.00%
[###################################################################################################->]99.00%
[####################################################################################################->]100.00%
-------执行结束-------
三 文本进度条单行动态刷新
3.1 单行刷新动态
刷新的关键字是
-
刷新的本质是:用后打印的字符覆盖之前的字符
-
不能换行:print()需要被控制
-
要能回退:打印后光标退出之前的位置
注意:IDLE如Pycharm屏蔽了
功能
# 让一个值循环
for i in range(100):
# 打印不换行的百分比(
,将光标回到本行的开头位置)
print(f"
{i}%", end="")
# 设置睡眠时间
time.sleep(0.1)
得到的结果为
99%
四 文本进度条的不同设计函数
代码演示
# 调用时间库
import time
# 定义一个变量并设定值
count = 100
# 打印开始执行标识(开始执行在中间显示,一边50个字符)
print("开始执行".center(50,'-'))
# 开始时间为计算机获取的一个时间点
start = time.perf_counter()
# 让循环并且每次加一个
for i in range(count+1):
# 定义a为# 每次显示为i的值
a = "#" * i
# 定义b为. 每次显示count的设定值减除i得到的值
b = "." * (count-i)
# 定义c为循环值i除以设定值100再乘以100
c = (i/count) * 100
# 运行完上面部分用的时间减去开始获取的计算机时间
res = time.perf_counter() - start
# 打印出上面跑的进度( 33是颜色的值,
等于回车 .2f是两位数,第三位数字四舍五入)
print(f" 33[1;31m
{c:.2f}%[{a}->{b}]{res:.2f}s 33[0m",end="")
# 程序循环一次睡眠0.1秒
time.sleep(0.1)
# 打印开始执行标识(结束执行在中间显示,一边50个字符)
print("结束执行".center(50,'-'))
得到的结果为
-----------------------开始执行-----------------------
100.00%[####################################################################################################->]10.07s
-----------------------结束执行-----------------------