文本进度条(Python练习)
采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化。 要求如下:
(1) 采用sleep()模拟一个持续的进度,获得文本进度条的变化时间;
(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为’’,每次使用print()函数输出时不能换行;
(3) 要能回退:打印后光标到之前的位置 。
代码:
import time scale = 50 print("执行开始".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(" {:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end= ) time.sleep(0.1) print(" "+"执行结束".center(scale//2,-))
解析: center方法及使用 str.center(width[,fillchar]) 字符串str根据宽度width居中,fillchar可选 scale//2: 表示scale整除2,得到的结果是个整数。
time.perf_counter(): 返回一个CPU级别的精确时间计数值,单位为秒,由于这个计数值点不确定,连续调用差值才有意义。 : 打印后光标退回到之前的位置 {:^3.0f}的解释 : 引导符号 ^ 居中对齐 3 宽度 .0f 浮点数小数精度到0位
sleep(s): s拟休眠的时间,单位是秒,可以是浮点数。 所谓休眠就是指程序停在那里s秒,然后再进一步向前运行。
: 换行
end="" : 在print()函数的使用中,我们可以使用end的一个参数,来决定每一个print输出之后,是否要换行,如果end等于空,那么输出之后并不换行,那么所有的print输出将在一行中表示。