Python入门程序练习题-文本进度条

Python入门程序练习题-文本进度条

  • 程序来自BITmooc
  • 此程序涉及到time里的一些函数和print的更深一步的用法
  • 题目说明:
    采用字符串方式打印可以动态变化的文本进度条‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬,进度条需要能在一行中逐渐变化‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬
    要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

(1) 采用 sleep() 模拟一个持续的进度,获得文本进度条的变化时间;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为’’,每次使用print()函数输出时不能换行;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

(3) 要能回退:打印后光标到之前的位置 \r。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  • 代码
import time
scale=eval(input('please type the scale:'))  #eval将str转为对应的数值类型
print('Start'.center(50//2,'-'))    
 #center(x,'-')表示居中,宽度为x,其余用'-'填充
start=time.perf_counter()
  #调用一次perf_counter(),从计算机系统里随机选一个时间点A
  #计算其距离当前时间点B1有多少秒。
  #当第二次调用该函数时,默认从第一次调用的时间点A算起,
  #距离当前时间点B2有多少秒。
  #两个函数取差,即实现从时间点B1到B2的计时功能。
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='')
     #\r用来在每次输出完成后,将光标移至行首
     #这样保证进度条始终在同一行输出,即在一行不断刷新的效果
     #{:^3.0f},输出格式为居中,占3位,小数点后0位,浮点型数,对应输出的数为c
     #第二个{},对应输出的数为a
     #第三个{},对应输出的数为b
     #{:.2f},输出有两位小数的浮点数,对应输出的数为dur
     #end='',用来保证不换行,不加这句默认换行
     #这个输出形式是需要记住的
    time.sleep(0.1)
     #在输出下一个百分之几的进度前,停止0.1秒
print('\n'+'end'.center(50//2,'-'))```

猜你喜欢

转载自blog.csdn.net/StefanCharlie/article/details/83148276