python print 進度條的例子


def progress(width, percent):
    print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / 100 * "="), percent),
    if percent >= 100:
        print
        sys.stdout.flush()

首先,先說明一下print的一些用法:

和C語言一樣,字符串里的匹配使用‘%’和相關的轉移類型組成的:

轉換類型          含義

d,i                 帶符號的十進制整數
o                   不帶符號的八進制
u                   不帶符號的十進制
x                    不帶符號的十六進制(小寫)
X                   不帶符號的十六進制(大寫)
e                   科學計數法表示的浮點數(小寫)
E                   科學計數法表示的浮點數(大寫)
f,F                 十進制浮點數
g                   如果指數大於-4或者小於精度值則和e相同,其他情況和f相同
G                  如果指數大於-4或者小於精度值則和E相同,其他情況和F相同
C                  單字符(接受整數或者單字符字符串)
r                    字符串(使用repr轉換任意python對象)
s                   字符串(使用str轉換任意python對象)

>>> pi = 3.141592653
>>> print('%10.3f' % pi) #字段寬10,精度3
     3.142
>>> print("pi = %.*f" % (3,pi)) #用*從后面的元組中讀取字段寬度或精度
pi = 3.142
>>> print('%010.3f' % pi) #用0填充空白
000003.142
>>> print('%-10.3f' % pi) #左對齊
3.142     
>>> print('%+f' % pi) #顯示正負號
+3.141593

%-NType:

這樣表示顯示字符串預留的長度. 例如

print('%-10.3f' % pi)

表示顯示pi保留小數點以后3位,字符串的寬度為10.

好,現在我回到開頭的函數,並做一些說明:

現在假設width = 100, percent = 2.

可以看出,這里的字符串是嵌套的,我們首先對第一個表達式進行解析,那么

('%%-%ds' % width)

的內容是: str1 = '%-100s',這個字符串嵌套了后一個字符串的內容,也就是

(width * percent / 100 * "=")

根據python的字符串可以相乘的原理,我們得到這個字符串其實就是str2 = 100*2/100*"=",也就是兩個等號‘==’。

由於str2是嵌入在str1中的,那么我們繼續對此進行解析,這里是str1的意思就是顯示str2, 並使得字符串的寬度為100. 不足的用空格填充。

所以我們得到"==                                                                                                  " , 2%

所以當percent變化時,程序就打印用等號表示的進度條。


免責聲明!

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



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