Python 7天快速入門完整視頻教程:https://www.bilibili.com/video/BV1o84y1Z7J1
Python字符串格式化
我們前面學(xué)到字符串拼接,如果簡(jiǎn)單的2,3個(gè)字符串拼接那還算好,如果大于3個(gè)變量的拼接,就比較麻煩。還有一點(diǎn),就是字符串無法和和其他類型直接拼接,需要進(jìn)行類型轉(zhuǎn)換,也麻煩。這時(shí)候,Python提供了“%”對(duì)各種類型的數(shù)據(jù)進(jìn)行格式化輸出。
簡(jiǎn)單案例:
name = "小鋒"
print("我的姓名是 %s" % name)
輸出結(jié)果:
我的姓名是 小鋒
這里 %s 是占位符,第二個(gè) % 是分隔符,name就是變量了。這個(gè)很好理解。
我們?cè)倏匆粋€(gè)實(shí)例:
name = "小鋒"
age = 18
print("我的姓名是 %s,我今年%s歲了" % (name, age))
輸出結(jié)果:
我的姓名是 小鋒,我今年18歲了
這里多了一個(gè)int類型的age變量。我們輸出的時(shí)候,用兩個(gè)%s,中間依然用%間隔,第三塊,括號(hào)里兩個(gè)參數(shù)。注意參數(shù)的順序不能亂。
除了%s,還有很多占位符,如下表。我們現(xiàn)在掌握最基礎(chǔ)常用的%s,%d,%f,分別把參數(shù)或者表達(dá)式轉(zhuǎn)換成字符串,整型,浮點(diǎn)型。
看下面實(shí)例:
name = "小鋒"
age = 18
height = 181.2
print("我的姓名是 %s,我今年%s歲了" % (name, age))
print("我的姓名是 %s,我今年%d歲了" % (name, age))
print("我的姓名是 %s,我今年%d歲了,身高%f" % (name, age, height))
運(yùn)行輸出:
我的姓名是 小鋒,我今年18歲了
我的姓名是 小鋒,我今年18歲了
我的姓名是 小鋒,我今年18歲了,身高181.200000
作業(yè):定義五個(gè)變量,分別是姓名,性別,語文成績(jī),數(shù)學(xué)成績(jī),英語成績(jī),并且賦值,最終打印出類似 我是某某,男,語文成績(jī):99.2,數(shù)學(xué)成績(jī):100,英語88.5。要求格式化輸出。
剛才我們打印身高,這個(gè)打印結(jié)果,后面多了五個(gè)0。這里就涉及到一個(gè)格式化精度控制。
我們可以使用輔助符號(hào)"m,n"來控制數(shù)據(jù)的寬度和精度;
-
m,控制寬度(包括小數(shù)點(diǎn)),注意,如果設(shè)置的寬度小于數(shù)字本身,則不生效。
-
n,控制小數(shù)點(diǎn)精度,注意,如果設(shè)置的寬度大于小數(shù)位數(shù),則進(jìn)行四舍五入。
我們先把前面的身高,加下小數(shù)精度 %.1f 這樣輸出結(jié)果就沒有0了。
我們?cè)倏匆幌聦?shí)例:
money1 = 99.99
money2 = 111.66
money3 = 10000
print("張三錢包余額:%10.2f元" % money1)
print("李四錢包余額:%10.1f元" % money2)
print("王五錢包余額:%10.2f元" % money3)
輸出結(jié)果:
張三錢包余額: 99.99元
李四錢包余額: 111.7元
王五錢包余額: 10000.00元
作業(yè):變量money4=1000.36 通過精度控制,保留一位小數(shù)字,數(shù)字寬度設(shè)置成8位。打印輸出結(jié)果。
其實(shí)我們發(fā)現(xiàn)上面的字符串格式化方式,雖然功能強(qiáng)大,但是寫起來也不是太方便,這邊提供一種更加快捷優(yōu)雅的格式化方式。
語法是:f"內(nèi)容{變量}內(nèi)容";
這種方式缺點(diǎn)是無法進(jìn)行精度控制,以及也不關(guān)心類型,原值輸出。
看下下面的測(cè)試案例:
name = "小鋒"
age = 18
height = 181.2
print(f"我的姓名是 {name},我今年{age}歲了,身高{height}")
輸入結(jié)果:
我的姓名是 小鋒,我今年18歲了,身高181.2
作業(yè):定義五個(gè)變量,分別是姓名,性別,語文成績(jī),數(shù)學(xué)成績(jī),英語成績(jī),并且賦值,最終打印出類似 我是某某,男,語文成績(jī):99.2,數(shù)學(xué)成績(jī):100,英語88.5。要求用f快捷格式化方式輸出。