Python關(guān)于print的操作(倒計(jì)時(shí)、轉(zhuǎn)圈顯示、進(jìn)度條)
前言
在python中,print是重要的輸出語句,讓我們更方便的知道程序的運(yùn)行狀況,但是這樣還不夠,我們也可以用print來給周圍的小伙伴秀一下
步入正題
\r
表示將光標(biāo)的位置回退到本行的開頭位置\b
表示將光標(biāo)的位置回退一位
1、橫條加載
num = 20 for i in range(num): print("#")
打印結(jié)果:
#
#
#
#
。。。。(此處省略剩下16個(gè) #)
結(jié)果發(fā)現(xiàn)這樣很丑,達(dá)不到我們的預(yù)期,所以,在print
里面,我們有一個(gè)flush
,是及時(shí)刷新的意思,默認(rèn)為False
,只有所有內(nèi)容都有來然后一次性打印出來,為True
時(shí)是及時(shí)更新print
的信息
import time num = 20 for i in range(num): print("#", end="", flush=True) time.sleep(0.1)
這次我們加上time
中延遲的sleep
來綜合試一下
打印結(jié)果:
2、倒計(jì)時(shí)顯示
import time for i in range(5, 0, -1): print("\r", "倒計(jì)時(shí){}秒!".format(i), end="", flush=True) time.sleep(1)
打印結(jié)果:
在print
中,\r
就可以讓打印之后有重新回到本行開頭的位置繼續(xù)打印,相當(dāng)于重新刷了一遍,但是我們不難發(fā)現(xiàn),倒計(jì)時(shí)前面有個(gè)小空缺,那是因?yàn)?code>"\r"占了一個(gè)小位置,所以我們把代碼重新改造一下。
import time for i in range(5, 0, -1): print("\r倒計(jì)時(shí){}秒!".format(i), end="", flush=True) time.sleep(1) print("\r倒計(jì)時(shí)結(jié)束!")
打印結(jié)果:
3、轉(zhuǎn)圈等待顯示
話不多說直接上代碼
import time sum = 10 # 設(shè)置倒計(jì)時(shí)時(shí)間 timeflush = 0.25 # 設(shè)置屏幕刷新的間隔時(shí)間 for i in range(0, int(sum/timeflush)): list = ["\\", "|", "/", "—"] index = i % 4 print("\r程序正在運(yùn)行 {}".format(list[index]), end="") time.sleep(timeflush)
運(yùn)行結(jié)果:
4、進(jìn)度條顯示
import time days = 365 for i in range(days): print("\r進(jìn)度條百分比:{}%".format(round((i + 1) * 100 /days)), end="", flush=True) time.sleep(0.02)
打印結(jié)果:
進(jìn)度條改進(jìn)版
import time num = 50 #設(shè)置倒計(jì)時(shí)時(shí)間 timeflush = 0.5 #設(shè)置屏幕刷新的間隔時(shí)間 for i in range(0, int(num/timeflush)+1): print("\r正在加載:" + "|" + "*" * i + " "*(int(num/timeflush)+1-i)+"|" + str(i)+"%", end="") time.sleep(timeflush) print("\r加載完成!")
打印結(jié)果:
進(jìn)度條升級版
我們通過加入一些進(jìn)度條模塊,可以實(shí)現(xiàn)進(jìn)度條炫酷的效果
tqdm模塊
我們在cmd
中下載tqdm
模塊
pip install tqdm
我們在pycharm
中加入tqdm
模塊
勾選Install to user's site packages directory
點(diǎn)擊Install Package
然后代碼如下:
from tqdm import tqdm for i in tqdm(range(10000)): pass
運(yùn)行結(jié)果:
這里根據(jù)每個(gè)電腦的不同而范圍不同,電腦性能好的同學(xué)可以適當(dāng)?shù)闹嫡{(diào)大,這樣會(huì)顯示最佳的體驗(yàn)效果
progressbar模塊
現(xiàn)在cmd
中下載progressbar
模塊,命令是
pip install progressbar
即可安裝成功
然后在pycharm
中安裝progressbar
模塊
勾選Install to user's site packages directory
點(diǎn)擊Install Package
代碼如下:
from progressbar import * import time pro = ProgressBar() # 將progressbar中的ProgressBar實(shí)例化 for i in pro(range(1000)): time.sleep(0.01)
運(yùn)行結(jié)果:
我的電腦不知道怎么回事,正常的畫面加載不出來,但是不影響程序,程序是對的,我在 time.sleep(0.01)
下面加了個(gè)print()
就是這個(gè)樣子,要不然加載條不出來。同學(xué)可以自己查查資料喲
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python多線程請求帶參數(shù)的多個(gè)接口問題
這篇文章主要介紹了python多線程請求帶參數(shù)的多個(gè)接口問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Python實(shí)現(xiàn)根據(jù)Excel生成Model和數(shù)據(jù)導(dǎo)入腳本
最近遇到一個(gè)需求,有幾十個(gè)Excel,每個(gè)的字段都不一樣,然后都差不多是第一行是表頭,后面幾千上萬的數(shù)據(jù),需要把這些Excel中的數(shù)據(jù)全都加入某個(gè)已經(jīng)上線的Django項(xiàng)目。所以我造了個(gè)自動(dòng)生成?Model和導(dǎo)入腳本的輪子,希望對大家有所幫助2022-11-11解決Atom安裝Hydrogen無法運(yùn)行python3的問題
今天小編就為大家分享一篇解決Atom安裝Hydrogen無法運(yùn)行python3的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08基于Python詞云分析政府工作報(bào)告關(guān)鍵詞
這篇文章主要介紹了基于Python詞云分析政府工作報(bào)告關(guān)鍵詞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06python 實(shí)現(xiàn)一個(gè)反向單位矩陣示例
今天小編就為大家分享一篇python 實(shí)現(xiàn)一個(gè)反向單位矩陣示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python進(jìn)行數(shù)據(jù)合并concat/merge
這篇文章主要介紹了python進(jìn)行數(shù)據(jù)合并concat/merge,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-09-09python實(shí)現(xiàn)文本去重且不打亂原本順序
這篇文章主要介紹了python實(shí)現(xiàn)文本去重且不打亂原本順序,需要的朋友可以參考下2016-01-01