Python小练习—进度条制作
一、 多行刷新动态效果
(1)效果展示
(2)代码部分
import time
scale = 10
print("------执行开始------")
for i in range(scale + 1):
a,b = '**'*i,'..'*(scale - i)
c = (i/scale)*100
print("%{:^3.0f}[{}->{}]".format(c,a,b))
time.sleep(0.1)
print("------执行结束------")
(3) 代码分析
- 主体元素只有三个:分别是a,b,c
- 循环里的第一句为填充语句,
- 注意在用format语句时一定要一一对应
二、 单行刷新动态效果
(1)效果展示
(2) 代码部分
scale = 100
print("------执行开始------")
for i in range(scale + 1):
print("{:4}%".format(i),end = '')
print()
time.sleep(0.05)
print("------执行结束------")
(3) 代码分析
- python里的print()函数默认自动换行,如果取消自动换行可以使用end=‘ ’
- 为了减缓程序执行的时间,这里引入time.sleep()函数是效果可见
三、 高级别的用户体验效果
(1)效果展示
(2)代码部分
import time
scale = 50
print("执行开始".center(scale//2,'-'))
t = time.perf_counter()
for i in range(scale + 1):
a = '*' * i
b = '-' * (scale - i)
c = (i/scale) * 100
t -=time.perf_counter()
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,-t),end = '')
time.sleep(0.05)
print("\n"+"执行结束".center(scale//2,'-'))
(3) 代码分析
- time.perf_counter()函数用来计算当前的时间值,有些地方可能用的是time.clock()方法,但是time.clock在Python3.3废弃,在Python3.8中被移除,如果使用clock的话回报错,所以建议使用per_counter()函数
- 执行开始的那一句是控制输出的样式,宽度为 50//2,即 25,汉字居中,两侧填充 -
- \r是回车符,\n是换行符
- 因为循环里用了end = ‘ ’,所以打印“执行结束”的时候不会自动换行,所以这里用字符连接符‘+’进行输出并换行
- 在此提醒,使用format的时候前后一定要对应上,要不直接编个号,防止弄错