Python關於print的操作(倒計時、轉圈顯示、進度條)

前言

在python中,print是重要的輸出語句,讓我們更方便的知道程序的運行狀況,但是這樣還不夠,我們也可以用print來給周圍的小夥伴秀一下

步入正題

  • \r表示將光標的位置回退到本行的開頭位置
  • \b表示將光標的位置回退一位

1、橫條加載

num = 20
for i in range(num):
    print("#")

打印結果:

#
#
#
#
。。。。(此處省略剩下16個 #)

結果發現這樣很醜,達不到我們的預期,所以,在print裡面,我們有一個flush,是及時刷新的意思,默認為False,隻有所有內容都有來然後一次性打印出來,為True時是及時更新print的信息

import time
num = 20
for i in range(num):
    print("#", end="", flush=True)
    time.sleep(0.1)

這次我們加上time中延遲的sleep來綜合試一下

打印結果:

2、倒計時顯示

import time
for i in range(5, 0, -1):
    print("\r", "倒計時{}秒!".format(i), end="", flush=True)
    time.sleep(1)

打印結果:

print中,\r就可以讓打印之後有重新回到本行開頭的位置繼續打印,相當於重新刷瞭一遍,但是我們不難發現,倒計時前面有個小空缺,那是因為"\r"占瞭一個小位置,所以我們把代碼重新改造一下。

import time
for i in range(5, 0, -1):
    print("\r倒計時{}秒!".format(i), end="", flush=True)
    time.sleep(1)
print("\r倒計時結束!")

打印結果:

3、轉圈等待顯示

話不多說直接上代碼

import time
sum = 10         # 設置倒計時時間
timeflush = 0.25  # 設置屏幕刷新的間隔時間
for i in range(0, int(sum/timeflush)):
    list = ["\\", "|", "/", "—"]
    index = i % 4
    print("\r程序正在運行 {}".format(list[index]), end="")
    time.sleep(timeflush)

運行結果:

4、進度條顯示

import time
days = 365
for i in range(days):
    print("\r進度條百分比:{}%".format(round((i + 1) * 100 /days)), end="", flush=True)
    time.sleep(0.02)

打印結果:

進度條改進版

import time
num = 50         #設置倒計時時間
timeflush = 0.5   #設置屏幕刷新的間隔時間
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加載完成!")

打印結果:

進度條升級版

我們通過加入一些進度條模塊,可以實現進度條炫酷的效果

tqdm模塊

我們在cmd中下載tqdm模塊

pip install tqdm

我們在pycharm中加入tqdm模塊

勾選Install to user's site packages directory

點擊Install Package

然後代碼如下:

from tqdm import tqdm
for i in tqdm(range(10000)):
    pass

運行結果:

這裡根據每個電腦的不同而范圍不同,電腦性能好的同學可以適當的值調大,這樣會顯示最佳的體驗效果

progressbar模塊

現在cmd中下載progressbar模塊,命令是

pip install progressbar

即可安裝成功

然後在pycharm中安裝progressbar模塊

勾選Install to user's site packages directory

點擊Install Package

代碼如下:

from progressbar import *
import time
pro = ProgressBar()  # 將progressbar中的ProgressBar實例化
for i in pro(range(1000)):
    time.sleep(0.01)

運行結果:

我的電腦不知道怎麼回事,正常的畫面加載不出來,但是不影響程序,程序是對的,我在 time.sleep(0.01)下面加瞭個print()就是這個樣子,要不然加載條不出來。同學可以自己查查資料喲

總結

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: