您的位置:首页 > 编程语言 > Python开发

通过用Python输出进度条效果,学习perf_counter()和sleep()函数的用法。

2018-03-30 23:56 387 查看

首先声明一下,下面的代码是我在看中国大学mooc里的教学视频学来的。

觉得很有意思,分享一下。

先看一下,执行完毕的结果吧,进度条跑到了100%,停止之后的效果就是图中所示。

下面分析一下代码:

port time                     #引入time库,后面用到了该库的两个函数perf_counter()和sleep()。

scale = 50                    # 定义变量scale,后面主要用来做循环计数、控制输出字符长度、计算当前进度条的百分比等。

print("执行开始".center(scale//2,"-"))      # .center()控制输出的样式,宽度为25//2,即22,汉字居中,两侧填充‘-’。

start = time.perf_counter()   #调用一次perf_counter(),从计算机系统里随机选一个时间点A,计算其距离当前时间点B1有多少秒。当第二次调用该函数时,默认从第一次调用的时间点A算起,距离当前时间点B2有多少秒。两个函数取差,即实现从时间点B1到B2的计时功能。

for i in range(scale+1):   

    a = '*' * i             #  i个长度的‘*’符号

    b = '.' * (scale-i)  # (scale-i) 个长度的‘.’符号。符号‘*’和‘.’总长度为50。

    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"+"执行结果".center(scale//2,'-'))

如果不太明白上述的解析,可以把程序跑一遍,看看结果再过来看看代码就明白啦。

如有错误,欢迎指正~

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: