韓梅梅學python之一:python3中f-string 格式化固定寬度的數字

書接上回html

看到工程師李雷能用一行命令,更新flutter工程下全部圖標python

韓梅梅深入的體會到,這(zhe)門(ge)語(nan)言(ren)如此優秀,必定不能錯過。bash

因而找到李雷:markdown

韓梅梅:「李雷,上次見到你用python更新圖標,感受好棒啊」
李雷:「Python確實是很好用的」
韓梅梅:「我能學會嗎」
李雷:「有我在,怎麼可能學不會呢?咱們先從最簡單的Hello world開始吧」
......
複製代碼

如切如磋,如琢如磨

通過一通折騰,韓梅梅望着屏幕有些不滿oop

第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又不能居中,好心塞」
複製代碼

百尺竿頭 更進一步

韓大設計師的心,真的是,很容易塞啊。post

不過,這難不倒李雷,通過一番努力終於知足了韓梅梅。學習

第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官方文檔的記憶,spa

李雷又爲韓梅梅展現了f-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('===============')

複製代碼

所有故事:

韓梅梅學python之序章:一行命令,更新flutter工程下全部圖標

李雷通過一個月的奮戰,終於完成了一個flutter應用的開發。
打算上線了才發現,圖標仍是flutter自帶的圖標呢,趕忙向設計師韓梅梅求救。
設計師韓梅梅拿出準備已久的Logo丟給李雷,李雷傻眼了。
李雷:「怎麼只有一個?」
韓梅梅:「難道安卓和iOS要用不一樣的圖標?」
李雷:「不是啊。一樣的圖標不一樣的尺寸。
      安卓圖標五六個 ,iOS圖標十幾個吧。
      我給你列個列表吧,尺寸都告訴你。你幫忙resize一下吧。」
韓梅梅:」寶寶內心苦...「
李雷:「嗯,我想一想辦法吧...」
複製代碼

韓梅梅學python之一:python3中f-string 格式化固定寬度的數字

書接上回
看到工程師李雷能用一行命令,更新flutter工程下全部圖標,
韓梅梅深入的體會到,這(zhe)門(ge)語(nan)言(ren)如此優秀,必定不能錯過。
因而找到李雷:
韓梅梅:「李雷,上次見到你用python更新圖標,感受好棒啊」
李雷:「Python確實是很好用的」
韓梅梅:「我能學會嗎」
李雷:「有我在,怎麼可能學不會呢?咱們先從最簡單的Hello world開始吧」
......
複製代碼

韓梅梅學python之二:黃金分割和五角星

學完python3中f-string 格式化固定寬度的數字,
李雷如約上門安裝安裝python,折騰了很大一通李雷和韓梅梅都感受很累。
因而李雷提議到公園玩耍,他提早作足了功課,
學習了不少拍照到知識,終於用上了,尤爲是構圖比例,一概黃金分割。 ...
複製代碼

韓梅梅學Python之三:斐波那契

通過上次的授課經歷,李雷發覺,韓梅梅對圖形繪製這塊很感興趣。
因而絞盡腦汁,谷歌百度,尋找各類素材。通過反覆實驗終於完成了備課工做。
因而乎掰着手指頭,從週一盼到了週六。
「梅梅,咱們先看一個神奇的公式,以及如何用python實現它」
複製代碼

韓梅梅學Python之四:一行命令,圖片全灰

複製代碼

2020年4月4日,一大早,老闆急衝衝的打電話給韓梅梅。

李老闆:「全國網站都灰了,爲啥咱們本身的網站還這麼鮮豔。」

韓梅梅:「好多圖改不過來。」

李老闆:「原本你應該提早準備的。結果搞成如今這麼被動。 咱們是創業公司,每一個員工都應該是創業者。 做爲一個合格的創業者,要有遠見,有自驅, 不要什麼都不考慮,不要什麼都等安排。

若是你以爲本身不想當創業者,那就去找份大廠的工做。 若是你是個創業者,就拿出創業者的勁頭加個班搞定吧。」

還沒等韓梅梅回答,電話就被掛斷了。

複製代碼
相關文章
相關標籤/搜索