文本進度條


文本進度條分析

1.1 文本進度條

安裝軟件和加載某些數據看到的進度顯示

1.2 需求分析

  • 采用字符串方式打印可以動態變化的文本進度條
  • 進度條需要能在一行中逐漸變化

1.3問題分析

如何獲得文本進度條的變化時間?
  • 采用sleep()模擬一個持續的進度

二文本進度條的簡單開始

2.1 簡單的開始

# 定義一個值
count = 100
# 打印提示信息
print("-------開始執行-------")
# 讓上面定義的值循環並且加一
for i in range(count + 1):
    # print(i)
# a為#號並且隨着變量i變化
    a = "#" * i
# b為.並且隨着定義的值除以2后減變量i   
    b = "." * (count//2 - i)
# c為i除以定義的值再成以100
    c = (i / count) * 100
    # print(c)
#打印abc的值並且以百分號形式進度條顯示(2f是保留兩位)
    print(f"[{a}->{b}]{c:.2f}% ")
# 設置睡眠時間
    time.sleep(0.1)
    # print(b)
# 打印結束信息
print("-------執行結束-------")
 
得到的結果為
 
-------開始執行-------
[->..................................................]0.00%
[#->.................................................]1.00%
[##->................................................]2.00%
[###->...............................................]3.00%
[####->..............................................]4.00%
[#####->.............................................]5.00%
[######->............................................]6.00%
[#######->...........................................]7.00%
[########->..........................................]8.00%
[#########->.........................................]9.00%
[##########->........................................]10.00%
[###########->.......................................]11.00%
[############->......................................]12.00%
[#############->.....................................]13.00%
[##############->....................................]14.00%
[###############->...................................]15.00%
[################->..................................]16.00%
[#################->.................................]17.00%
[##################->................................]18.00%
[###################->...............................]19.00%
[####################->..............................]20.00%
[#####################->.............................]21.00%
[######################->............................]22.00%
[#######################->...........................]23.00%
[########################->..........................]24.00%
[#########################->.........................]25.00%
[##########################->........................]26.00%
[###########################->.......................]27.00%
[############################->......................]28.00%
[#############################->.....................]29.00%
[##############################->....................]30.00%
[###############################->...................]31.00%
[################################->..................]32.00%
[#################################->.................]33.00%
[##################################->................]34.00%
[###################################->...............]35.00%
[####################################->..............]36.00%
[#####################################->.............]37.00%
[######################################->............]38.00%
[#######################################->...........]39.00%
[########################################->..........]40.00%
[#########################################->.........]41.00%
[##########################################->........]42.00%
[###########################################->.......]43.00%
[############################################->......]44.00%
[#############################################->.....]45.00%
[##############################################->....]46.00%
[###############################################->...]47.00%
[################################################->..]48.00%
[#################################################->.]49.00%
[##################################################->]50.00%
[###################################################->]51.00%
[####################################################->]52.00%
[#####################################################->]53.00%
[######################################################->]54.00%
[#######################################################->]55.00%
[########################################################->]56.00%
[#########################################################->]57.00%
[##########################################################->]58.00%
[###########################################################->]59.00%
[############################################################->]60.00%
[#############################################################->]61.00%
[##############################################################->]62.00%
[###############################################################->]63.00%
[################################################################->]64.00%
[#################################################################->]65.00%
[##################################################################->]66.00%
[###################################################################->]67.00%
[####################################################################->]68.00%
[#####################################################################->]69.00%
[######################################################################->]70.00%
[#######################################################################->]71.00%
[########################################################################->]72.00%
[#########################################################################->]73.00%
[##########################################################################->]74.00%
[###########################################################################->]75.00%
[############################################################################->]76.00%
[#############################################################################->]77.00%
[##############################################################################->]78.00%
[###############################################################################->]79.00%
[################################################################################->]80.00%
[#################################################################################->]81.00%
[##################################################################################->]82.00%
[###################################################################################->]83.00%
[####################################################################################->]84.00%
[#####################################################################################->]85.00%
[######################################################################################->]86.00%
[#######################################################################################->]87.00%
[########################################################################################->]88.00%
[#########################################################################################->]89.00%
[##########################################################################################->]90.00%
[###########################################################################################->]91.00%
[############################################################################################->]92.00%
[#############################################################################################->]93.00%
[##############################################################################################->]94.00%
[###############################################################################################->]95.00%
[################################################################################################->]96.00%
[#################################################################################################->]97.00%
[##################################################################################################->]98.00%
[###################################################################################################->]99.00%
[####################################################################################################->]100.00%
-------執行結束-------
 

三 文本進度條單行動態刷新

3.1 單行刷新動態

刷新的關鍵字是\r
  • 刷新的本質是:用后打印的字符覆蓋之前的字符
  • 不能換行:print()需要被控制
  • 要能回退:打印后光標退出之前的位置\r
注意:IDLE如Pycharm屏蔽了\r功能
# 讓一個值循環
for i in range(100):
# 打印不換行的百分比(\r,將光標回到本行的開頭位置)
    print(f"\r{i}%", end="")
# 設置睡眠時間
    time.sleep(0.1)
 
得到的結果為
99%
 
 

四 文本進度條的不同設計函數

 

代碼演示

 
# 調用時間庫
import time
# 定義一個變量並設定值
count = 100
# 打印開始執行標識(開始執行在中間顯示,一邊50個字符)
print("開始執行".center(50,'-'))
# 開始時間為計算機獲取的一個時間點
start = time.perf_counter()
# 讓循環並且每次加一個
for i in range(count+1):
# 定義a為# 每次顯示為i的值
    a = "#" * i
# 定義b為. 每次顯示count的設定值減除i得到的值
    b = "." * (count-i)
# 定義c為循環值i除以設定值100再乘以100
    c = (i/count) * 100
# 運行完上面部分用的時間減去開始獲取的計算機時間
    res = time.perf_counter() - start
# 打印出上面跑的進度(\033是顏色的值,\r等於回車 .2f是兩位數,第三位數字四舍五入)
    print(f"\033[1;31m\r{c:.2f}%[{a}->{b}]{res:.2f}s\033[0m",end="")
# 程序循環一次睡眠0.1秒
    time.sleep(0.1)
# 打印開始執行標識(結束執行在中間顯示,一邊50個字符)
print("結束執行".center(50,'-'))
 
得到的結果為
-----------------------開始執行-----------------------
100.00%[####################################################################################################->]10.07s
-----------------------結束執行-----------------------
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM