書接上回html
看到工程師李雷能用一行命令,更新flutter工程下全部圖標,python
韓梅梅深入的體會到,這(zhe)門(ge)語(nan)言(ren)如此優秀,必定不能錯過。post
因而找到李雷:spa
韓梅梅:「李雷,上次見到你用python更新圖標,感受好棒啊」
李雷:「Python確實是很好用的」
韓梅梅:「我能學會嗎」
李雷:「有我在,怎麼可能學不會呢?咱們先從最簡單的Hello world開始吧」
......
複製代碼
通過一通折騰,韓梅梅望着屏幕有些不滿設計
第1次 Hello world
第2次 Hello world
...
第8次 Hello world
第9次 Hello world
第10次 Hello world
第11次 Hello world
第12次 Hello world
韓梅梅:「怎麼不齊呢,好心塞」
李雷:「別擔憂,剛纔咱們用的f-string,它提供了固定寬度的格式化方法,只要在須要固定寬度的變量後面加上冒號和表明寬度數字就能夠了。」
複製代碼
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
複製代碼
...
第 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)
...
韓梅梅:「這個 ‘第 8次’裏面8前面空了個位置,8又不能居中,好心塞」
複製代碼
韓大設計師的心,真的是,很容易塞啊。code
不過,這難不倒李雷,通過一番努力終於知足了韓梅梅。htm
第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})')
複製代碼
其實咱們還能夠作的更好。讓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
複製代碼
沒錯,f-string 裏的寬度能夠用變量替代 多虧平時學的紮實,憑藉對以前看過的f-string官方文檔的記憶,get
李雷又爲韓梅梅展現了f-string 固定寬度的進階用法string
def fix_float():
percent = .01987654321
print(f"{percent:010.3%}\t-浮點數-保留3位小數位百分比,固定寬度10")
print(f"{percent:010.3f}\t-浮點數-固定寬度10,保留3位小數")
print(f"{percent:010.5f}\t-浮點數-固定寬度10,保留5位小數")
print(f"{1.1:010.5f}\t-浮點數-固定寬度10,保留5位小數")
複製代碼
看到各類輸出都能變得乾淨整齊,韓梅梅終於心情舒暢了。
00001.988% -浮點數-保留3位小數位百分比,固定寬度10
000000.020 -浮點數-固定寬度10,保留3位小數
0000.01988 -浮點數-固定寬度10,保留5位小數
0001.10000 -浮點數-固定寬度10,保留5位小數
韓梅梅:「雷哥,我想平時在家也能練習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,前面不足的話補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):
# 自動判斷寬度
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-整數,固定寬度10")
print(f"{number:010}\t-整數,固定寬度10,前面不足補0")
percent = .01987654321
print(f"{percent:10.3%}\t-浮點數-保留3位小數位百分比,固定寬度10")
print(f"{percent:010.3%}\t-浮點數-保留3位小數位百分比,固定寬度10,前面不足補0")
print(f"{percent:10.3f}\t-浮點數-固定寬度10,保留3位小數")
print(f"{percent:010.3f}\t-浮點數-固定寬度10,保留3位小數,前面不足補0")
print(f"{percent:10.5f}\t-浮點數-固定寬度10,保留5位小數")
print(f"{percent:010.5f}\t-浮點數-固定寬度10,保留5位小數,前面不足補0")
print(f"{1.1:10.5f}\t-浮點數-固定寬度10,保留5位小數")
width = 10
print(f"{1.1:0{width}.5f}\t-浮點數-經過變量指定寬度10,保留5位小數,前面不足補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('===============')
複製代碼