Python:文本進度條的實現和簡單註釋解析
需求分析:
採用字符串打印的方式,打印輸出可以動態變化的文本進度條,要求進度條需要能在一行中逐漸變化。
問題分析:
如何獲得文本進度條的變化時間?→採用sleep()模擬一個持續的進度;
單行動態刷新→增加“\r”;(刷新的本質是用後打印的字符覆蓋之前的字符,打印後光標退回到之前的位置)
代碼示例(含註釋簡析):
#文本進度條
import time
scale=50
print("執行開始".center(scale//2,"-"))
#使用字符串處理中的.center方法,講一個“-”字符填充在執行開始
start=time.perf_counter() #增加計時效果
for i in range (scale+1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
dur=time.perf_counter()-start
#用來每一次用來打印文本進度條所用的時間,方法就是每次調用time.perf_counter()函數
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end="")
#爲了使文本進度條有單行刷新效果,增加“\r”,實現光標向行首移動
#增加end函數,把end函數賦值爲空字符串,在每次輸出後不換行
time.sleep(0.1)
print("\n"+"執行結束".center(scale//2,'-'))
#使用字符串處理中的.center方法,講一個“-”字符填充在執行結束
#覆蓋了字符串處理、數字處理以及時間庫的使用等方面的內容。
注:本段代碼在IDLE環境下運行時會報錯。因爲IDLE本身是一個編寫程序的開發環境,不是程序運行的主要環境,因此要在命令行模式下運行纔可以實現文本進度條的打印輸出。下附具體方法。
-
Windows+R,輸入cmd,打開命令提示符;
-
通過命令,找到文件的所在位置;
-
通過命令:python 文件名稱.py 完成文本進度條的單行打印輸出。
簡單說明:
1、計算問題擴展
(1)文本進度條程序使用了perf_counter()計時;
(2)計時方法適合各類需要統計時間的計算問題。
例如:比較不同算法時間、統計部分程序運行時間等
2、進度條應用
(1)在任何運行時間需要較長的程序中增加進度條;
(2)在任何希望提高用戶體驗的應用中增加進度條;
(3)進度條是人機交互的紐帶之一。