python3中f-string 格式化固定寬度的數(shù)字

書接上回

看到工程師李蕾能用一行命令捐迫,更新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('===============')

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市玖喘,隨后出現(xiàn)的幾起案子甩牺,更是在濱河造成了極大的恐慌,老刑警劉巖累奈,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贬派,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡澎媒,警方通過(guò)查閱死者的電腦和手機(jī)搞乏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)戒努,“玉大人请敦,你說(shuō)我怎么就攤上這事〈⒚担” “怎么了侍筛?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撒穷。 經(jīng)常有香客問(wèn)我匣椰,道長(zhǎng),這世上最難降的妖魔是什么端礼? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任禽笑,我火速辦了婚禮弛车,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒲每。我一直安慰自己纷跛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布邀杏。 她就那樣靜靜地躺著贫奠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望蜡。 梳的紋絲不亂的頭發(fā)上唤崭,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音脖律,去河邊找鬼谢肾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛小泉,可吹牛的內(nèi)容都是我干的芦疏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼微姊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼酸茴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起兢交,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤薪捍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后配喳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酪穿,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年晴裹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了被济。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡息拜,死狀恐怖溉潭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情少欺,我是刑警寧澤喳瓣,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站赞别,受9級(jí)特大地震影響畏陕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仿滔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一惠毁、第九天 我趴在偏房一處隱蔽的房頂上張望犹芹。 院中可真熱鬧,春花似錦鞠绰、人聲如沸腰埂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)屿笼。三九已至,卻和暖如春翁巍,著一層夾襖步出監(jiān)牢的瞬間驴一,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工灶壶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肝断,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓驰凛,卻偏偏與公主長(zhǎng)得像胸懈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洒嗤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容