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