python progressbar print_python print 进度条的例子
def progress(width, percent):
print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / 100 * "="), percent),
if percent >= 100:
sys.stdout.flush()
首先,先說明一下print的一些用法:
和C語言一樣,字符串里的匹配使用‘%’和相關(guān)的轉(zhuǎn)移類型組成的:
轉(zhuǎn)換類型 ? ? ? ? ?含義
d,i ? ? ? ? ? ? ? ? 帶符號的十進(jìn)制整數(shù)
o ? ? ? ? ? ? ? ? ? 不帶符號的八進(jìn)制
u ? ? ? ? ? ? ? ? ? 不帶符號的十進(jìn)制
x ? ? ? ? ? ? ? ? ? ?不帶符號的十六進(jìn)制(小寫)
X ? ? ? ? ? ? ? ? ? 不帶符號的十六進(jìn)制(大寫)
e ? ? ? ? ? ? ? ? ? 科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)(小寫)
E ? ? ? ? ? ? ? ? ? 科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)(大寫)
f,F ? ? ? ? ? ? ? ? 十進(jìn)制浮點(diǎn)數(shù)
g ? ? ? ? ? ? ? ? ? 如果指數(shù)大于-4或者小于精度值則和e相同,其他情況和f相同
G ? ? ? ? ? ? ? ? ?如果指數(shù)大于-4或者小于精度值則和E相同,其他情況和F相同
C ? ? ? ? ? ? ? ? ?單字符(接受整數(shù)或者單字符字符串)
r ? ? ? ? ? ? ? ? ? ?字符串(使用repr轉(zhuǎn)換任意python對象)
s ? ? ? ? ? ? ? ? ? 字符串(使用str轉(zhuǎn)換任意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) #顯示正負(fù)號
+3.141593
%-NType:
這樣表示顯示字符串預(yù)留的長度. 例如
print('%-10.3f' % pi)
表示顯示pi保留小數(shù)點(diǎn)以后3位,字符串的寬度為10.
好,現(xiàn)在我回到開頭的函數(shù),并做一些說明:
現(xiàn)在假設(shè)width = 100, percent = 2.
可以看出,這里的字符串是嵌套的,我們首先對第一個表達(dá)式進(jìn)行解析,那么
('%%-%ds' % width)
的內(nèi)容是: str1 =?'%-100s',這個字符串嵌套了后一個字符串的內(nèi)容,也就是
(width * percent / 100 * "=")
根據(jù)python的字符串可以相乘的原理,我們得到這個字符串其實(shí)就是str2 = 100*2/100*"=",也就是兩個等號‘==’。
由于str2是嵌入在str1中的,那么我們繼續(xù)對此進(jìn)行解析,這里是str1的意思就是顯示str2, 并使得字符串的寬度為100. 不足的用空格填充。
所以我們得到"== ? ? ? ? ??? ? ? ? ??? ? ? ? ??? ? ? ? ??? ? ? ? ??? ? ? ? ??? ? ? ? ??? ? ? ? ?? ? ? ? ? ? ? ? ? " , 2%
所以當(dāng)percent變化時,程序就打印用等號表示的進(jìn)度條。
總結(jié)
以上是生活随笔為你收集整理的python progressbar print_python print 进度条的例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浙商银行银联标准卡年费多少?刷几次免年费
- 下一篇: 小额资金怎么理财?教你小钱生钱的方法