書接上回
看到工程師李蕾能用一行命令捐迫,更新flutter工程下所有圖標(biāo)酵紫,
韓梅梅深刻的體會(huì)到亡鼠,這(zhe)門(ge)語(yǔ)(nan)言(ren)如此優(yōu)秀旭从,一定不能錯(cuò)過(guò)稳强。
于是找到李蕾:
韓梅梅:“李蕾场仲,上次見到你用python更新圖標(biāo),感覺好棒啊”
李蕾:“Python確實(shí)是很好用的”
韓梅梅:“我能學(xué)會(huì)嗎”
李蕾:“有我在退疫,怎么可能學(xué)不會(huì)呢渠缕?我們先從最簡(jiǎn)單的Hello world開始吧”
......
如切如磋,如琢如磨
經(jīng)過(guò)一通折騰褒繁,韓梅梅望著屏幕有些不滿
第1次 Hello world
第2次 Hello world
...
第8次 Hello world
第9次 Hello world
第10次 Hello world
第11次 Hello world
第12次 Hello world
韓梅梅:“怎么不齊呢亦鳞,好心塞”
李蕾:“別擔(dān)心,剛才我們用的f-string棒坏,它提供了固定寬度的格式化方法燕差,只要在需要固定寬度的變量后面加上冒號(hào)和代表寬度數(shù)字就可以了“用幔”
修改前
def without_fix(base_index):
i = 0
while i < ROW_COUNT:
print(f'第{base_index+i}次 Hello world')
i += 1
修改后
def with_fix2(base_index):
i = 0
while i < ROW_COUNT:
print(f'第{base_index+i:2}次 Hello world with_fix2({base_index})')
i += 1
運(yùn)行結(jié)果:
...
第 8次 Hello world with_fix2(8)
第 9次 Hello world with_fix2(8)
第10次 Hello world with_fix2(8)
第11次 Hello world with_fix2(8)
第12次 Hello world with_fix2(8)
第13次 Hello world with_fix2(8)
...
韓梅梅:“這個(gè) ‘第 8次’里面8前面空了個(gè)位置徒探,8又不能居中,好心塞”
百尺竿頭 更進(jìn)一步
韓大設(shè)計(jì)師的心喂窟,真的是测暗,很容易塞啊。
不過(guò)磨澡,這難不倒李蕾碗啄,經(jīng)過(guò)一番努力終于滿足了韓梅梅。
第08次 Hello world with_fix02(8)
第09次 Hello world with_fix02(8)
第10次 Hello world with_fix02(8)
第11次 Hello world with_fix02(8)
第12次 Hello world with_fix02(8)
第13次 Hello world with_fix02(8)
韓梅梅:“舒服稳摄,蕾哥好棒稚字,你是怎么做到的”
李蕾:“你看看我改的地方就明白了,第{base_index+i:02}次里面的0代表用0填充空位≈让”
print(f'第{base_index+i:02}次 Hello world with_fix02({base_index})')
乘勝追擊 窮追猛打
其實(shí)我們還可以做的更好尉共。讓python自己判斷最大寬度是多大。
def with_auto_fix(base_index):
MAX_NUM = base_index+ROW_COUNT
MAX_WIDTH = len(f"{MAX_NUM}")
i = 0
while i < ROW_COUNT:
print(f'第{base_index+i:0{MAX_WIDTH}}次 Hello world with_auto_fix({base_index})')
i += 1
沒錯(cuò)弃锐,f-string 里的寬度可以用變量替代
多虧平時(shí)學(xué)的扎實(shí)袄友,憑借對(duì)之前看過(guò)的f-string官方文檔的記憶,
李蕾又為韓梅梅展示了f-string 固定寬度的進(jìn)階用法
def fix_float():
percent = .01987654321
print(f"{percent:010.3%}\t-浮點(diǎn)數(shù)-保留3位小數(shù)位百分比,固定寬度10")
print(f"{percent:010.3f}\t-浮點(diǎn)數(shù)-固定寬度10霹菊,保留3位小數(shù)")
print(f"{percent:010.5f}\t-浮點(diǎn)數(shù)-固定寬度10剧蚣,保留5位小數(shù)")
print(f"{1.1:010.5f}\t-浮點(diǎn)數(shù)-固定寬度10,保留5位小數(shù)")
看到各種輸出都能變得干凈整齊旋廷,韓梅梅終于心情舒暢了鸠按。
00001.988% -浮點(diǎn)數(shù)-保留3位小數(shù)位百分比,固定寬度10
000000.020 -浮點(diǎn)數(shù)-固定寬度10饶碘,保留3位小數(shù)
0000.01988 -浮點(diǎn)數(shù)-固定寬度10目尖,保留5位小數(shù)
0001.10000 -浮點(diǎn)數(shù)-固定寬度10,保留5位小數(shù)
韓梅梅:“蕾哥扎运,我想平時(shí)在家也能練習(xí)python瑟曲,可是我家里的電腦沒有安裝python”
李蕾:“要不我周末去幫你裝一下饮戳?”
...
且不提李蕾和韓梅梅下面做了什么,我們回顧一下完整代碼:
#!/usr/bin/env python3
ROW_COUNT = 6
def without_fix(base_index):
# 寬度不固定
i = 0
while i < ROW_COUNT:
print(f'第{base_index+i}次 Hello world')
i += 1
def with_fix2(base_index):
# 固定寬度2
i = 0
while i < ROW_COUNT:
print(f'第{base_index+i:2}次 Hello world with_fix2({base_index})')
i += 1
def with_fix02(base_index):
# 固定寬度2洞拨,前面不足的話補(bǔ)0
i = 0
while i < ROW_COUNT:
print(f'第{base_index+i:02}次 Hello world with_fix02({base_index})')
i += 1
def with_auto_fix(base_index):
# 自動(dòng)判斷寬度
max_num = base_index+ROW_COUNT
max_width = len(f"{max_num}")
i = 0
while i < ROW_COUNT:
print(
f'第{base_index+i:0{max_width}}次 Hello world with_auto_fix({base_index})'
)
i += 1
def fix_fmts():
# 匯總
number = 123
print(f"{number:10}\t-整數(shù)扯罐,固定寬度10")
print(f"{number:010}\t-整數(shù),固定寬度10烦衣,前面不足補(bǔ)0")
percent = .01987654321
print(f"{percent:10.3%}\t-浮點(diǎn)數(shù)-保留3位小數(shù)位百分比歹河,固定寬度10")
print(f"{percent:010.3%}\t-浮點(diǎn)數(shù)-保留3位小數(shù)位百分比,固定寬度10花吟,前面不足補(bǔ)0")
print(f"{percent:10.3f}\t-浮點(diǎn)數(shù)-固定寬度10秸歧,保留3位小數(shù)")
print(f"{percent:010.3f}\t-浮點(diǎn)數(shù)-固定寬度10,保留3位小數(shù)示辈,前面不足補(bǔ)0")
print(f"{percent:10.5f}\t-浮點(diǎn)數(shù)-固定寬度10寥茫,保留5位小數(shù)")
print(f"{percent:010.5f}\t-浮點(diǎn)數(shù)-固定寬度10遣蚀,保留5位小數(shù)矾麻,前面不足補(bǔ)0")
print(f"{1.1:10.5f}\t-浮點(diǎn)數(shù)-固定寬度10,保留5位小數(shù)")
width = 10
print(f"{1.1:0{width}.5f}\t-浮點(diǎn)數(shù)-通過(guò)變量指定寬度10芭梯,保留5位小數(shù)险耀,前面不足補(bǔ)0")
if __name__ == "__main__":
print('====================')
print('-- without_fix(8) --')
without_fix(8)
print('-- without_fix(98) --')
without_fix(98)
print('-- with_fix2(8) --')
with_fix2(8)
print('-- with_fix2(98) --')
with_fix2(98)
print('-- with_fix02(8) --')
with_fix02(8)
print('-- with_fix02(98) --')
with_fix02(98)
print('-- with_auto_fix(8) --')
with_auto_fix(8)
print('-- with_auto_fix(98) --')
with_auto_fix(98)
print('-- fix_fmts() --')
fix_fmts()
print('===============')