- 1.課題導(dǎo)入
- 2.知識回顧
- 3.
.format
的基本用法- 3.1{}為空
- 3.2 {}中有編號
- 3.3 {}中有變量名
- 4.浮點數(shù)的格式化
- 5.
.format
官方語法 -
.format
格式化語法總結(jié)
-
- 總結(jié)
- 8.課堂練習(xí)
1.課題導(dǎo)入
【描述】
用input函數(shù)輸入你每個月的工資、每天消費的平均值及本月的天數(shù),編寫代碼輸出你當月的余額(假設(shè)有剩余)。
【參考】
輸入
9000
80
31
輸出
本月我還剩余6520.0元。
【備注】月工資為9000元,平均每天消費80元,本月有31天。
【體驗代碼】
字符串拼接法:
# input函數(shù)輸入你的月工資,用變量gz存儲
gz = input('你每月的工資是多少元?')
# input函數(shù)輸入你每天的平均消費,用變量xf存儲
xf = input('你平均每天消費多少錢?')
# input函數(shù)輸入本月的天數(shù),用戶變量x存儲
x = input('本月有多少天?')
# 余額=工資-平均消費*天數(shù)
yu = float(gz) - float(xf)*int(x)
print('本月我還剩余'+str(yu)+'元。')
【終端輸出】
本月我還剩余6520.0元。
【代碼解析】
input
函數(shù)獲取的內(nèi)容是字符串類型。如果獲取的內(nèi)容是需要用于計算的數(shù)字,要先將字符串轉(zhuǎn)換成整數(shù)或浮點數(shù)。float(gz)
和float(xf)
用float函數(shù)將終端輸入的內(nèi)容轉(zhuǎn)換成浮點數(shù)參與計算。int(x)
用int函數(shù)將輸入的內(nèi)容轉(zhuǎn)換成整數(shù)參與計算。yu = float(gz) - float(xf)*int(x)
得到的數(shù)據(jù)類型是浮點數(shù)。str(yu)
用str函數(shù)將yu
的數(shù)據(jù)類型轉(zhuǎn)換成字符串和前面的字符進行拼接。
2.知識回顧
上面的代碼需要同時輸出文本信息和變量,我們用了字符串拼接的方法。
我們發(fā)現(xiàn)輸出有數(shù)值變量的一句話要先判斷變量的數(shù)據(jù)類型,然后用函數(shù)統(tǒng)一數(shù)據(jù)類型,操作比較麻煩。
除了字符串拼接方法,同時輸出文本信息和變量,我們還可以用更便捷的方法:字符串格式化。
之前我們學(xué)了一種格式化方法:%占位符格式化。
我們先回顧 %
占位符格式化語法。
【目標任務(wù)】
【描述】
輸入自己的姓名、籍貫和畢業(yè)學(xué)校,按指定的格式輸出到屏幕上。
【輸入】
第一行輸入姓名。
第二行輸入籍貫。
第三行輸入畢業(yè)學(xué)校。
【輸出】
大家好,我叫XXX,來自XXX,畢業(yè)于XXX!
【示例】
輸入:
安迪
云南
復(fù)旦大學(xué)
輸出:
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
【體驗代碼1】
name = input()
city = input()
school = input()
print("大家好,我叫%s,來自%s,畢業(yè)于%s! " % (name,city,school))
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
- 3個
%s
是我要替換的內(nèi)容。 %
是占位符格化語法,是固定用法。name,city,school
是我要替換%s
的變量,我也稱它們?yōu)橐袷交淖兞俊?/li>
3..format
的基本用法
本節(jié)我們學(xué)第2種字符串格式化方法。
format[?f??m?t]:格式。
.format
的通常有3種用法:
{}
為空。{}
中有編號。{}
中有變量名。
3.1{}為空
為了講解方便,這里我直接給變量賦值,不再從終端獲取數(shù)據(jù)。
name = "安迪"
city = "云南"
school = "復(fù)旦大學(xué)"
print("大家好,我叫{},來自{},畢業(yè)于{}!".format(name, city, school))
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
【編寫思路】
一.編寫格式化模板。
- 我們要輸出的內(nèi)容是:
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
- 把要格式化的內(nèi)容用英文大括號
{}
替換:
安迪
替換為大括號{}
。
云南
替換為大括號{}
。
復(fù)旦大學(xué)
替換為大括號{}
。
格式化模板為:"大家好,我叫{},來自{},畢業(yè)于{}!"
二. 語法關(guān)鍵字。
- 輸入一個英文小圓點
.
format
關(guān)鍵字
三. 要格式化的變量。
(name, city, school)
英文圓括號中寫入要格式化的變量名。
【語法解析】
{}
為空時默認按格式化變量的順序自動格式化到大括號中。
【調(diào)整格式化變量的順序】
將(name, city, school)
順序調(diào)整為(school, name, city)
。
運行下面的代碼,觀察輸出結(jié)果。
name = "安迪"
city = "云南"
school = "復(fù)旦大學(xué)"
print("大家好,我叫{},來自{},畢業(yè)于{}!".format( school, name, city))
【終端輸出】
大家好,我叫復(fù)旦大學(xué),來自安迪,畢業(yè)于云南!
觀察輸出結(jié)果,我們發(fā)現(xiàn)在{}
為空時,它是按照后面要格式化變量的順序進行填充的。
因為school
在第1個,它替換了第1個{}
,輸出內(nèi)容變成了我叫復(fù)旦大學(xué)。
{}
為空時需要重點關(guān)注要格式化變量的順序。
【{ }中輸入了一個空格】
name = "安迪"
city = "云南"
school = "復(fù)旦大學(xué)"
print("大家好,我叫{ },來自{ },畢業(yè)于{ }!".format( school, name, city))
【終端輸出】
KeyError: ' '
在編寫格式化模板時,我在{}
中敲了一個空格。
我叫{}
變成我叫{ }
。
觀察輸出結(jié)果,程序報錯。
初學(xué)者千萬注意,這里的{}
中是不能寫入空格的。
3.2 {}中有編號
print("大家好,我叫{0},來自{1},畢業(yè)于{2}!".format("安迪", "云南","復(fù)旦大學(xué)"))
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
【編寫思路】
一.編寫格式化模板。
- 我們要輸出的內(nèi)容是:
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
- 把要格式化的內(nèi)容用英文大括號加編號
{編號}
替換:
安迪
替換為{0}
。
云南
替換為{1}
。
復(fù)旦大學(xué)
替換為{2}
。
格式化模板為:"大家好,我叫{0},來自{1},畢業(yè)于{2}!"
二. 語法關(guān)鍵字。
- 輸入一個英文小圓點
.
format
關(guān)鍵字
三. 要格式化的內(nèi)容。
("安迪", "云南", "復(fù)旦大學(xué)")
英文圓括號中寫入要格式化的內(nèi)容。
【語法解析】
{編號}
:大括號中有編號時,按照格式化變量的編號順序進行格式化。
【溫馨提示】
這里的編號順序也是從0開始。
- {0}表示要格式化的第1個變量,即"安迪"。
- {1}表示要格式化的第2個變量,即 "云南"。
- {2}表示要格式化的第3個變量,即 "復(fù)旦大學(xué)"。
【多次格式化同一個變量】
print(
"大家好,我叫{0},來自{1},我的同桌也來自{1},我們班有5個同學(xué)來自{1}!"
.format("安迪", "云南")
)
【終端輸出】
大家好,我叫安迪,來自云南,我的同桌也來自云南,我們班有5個同學(xué)來自云南!
【代碼解析】
上述代碼格式化模板中我用了3個{1}
,即"云南"
我使用了3次。
只要內(nèi)容相同,我們是可以多次使用的。
【格式化變量的順序影響輸出結(jié)果】
name = "安迪"
city = "云南"
school = "復(fù)旦大學(xué)"
print("大家好,我叫{0},來自{1},畢業(yè)于{2}!".format(school, name, city ))
【終端輸出】
大家好,我叫復(fù)旦大學(xué),來自安迪,畢業(yè)于云南!
【代碼解析】
根據(jù)格式化變量(school, name, city )
的順序:
{0}
要格式化的變量是school
,因此輸出了我叫復(fù)旦大學(xué)
。
{1}
要格式化的變量是name
,因此輸出了來自安迪
。
3.3 {}中有變量名
print(
"大家好,我叫{name},來自{city},畢業(yè)于{school}!"
.format(name = "安迪", school = "復(fù)旦大學(xué)", city = "云南")
)
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
【編寫思路】
一.編寫格式化模板。
- 我們要輸出的內(nèi)容是:
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
- 把要格式化的內(nèi)容用英文大括號加變量名
{變量名}
替換:
安迪
替換為{name}
。
云南
替換為{city}
。
復(fù)旦大學(xué)
替換為{school}
。
格式化模板為:"大家好,我叫{name},來自{city},畢業(yè)于{school}!"
二. 語法關(guān)鍵字。
- 輸入一個英文小圓點
.
format
關(guān)鍵字
三. 要格式化的變量。
(name = "安迪", school = "復(fù)旦大學(xué)", city = "云南")
英文圓括號中寫入已經(jīng)賦值了的格式化變量。
【代碼解析】
{name}
要替換的內(nèi)容也可以直接用英文大括號加變量名表示。(name = "安迪", school = "復(fù)旦大學(xué)", city = "云南")
給要格式化的變量直接賦值。- 這種情況下不用考慮格式化變量的順序。
- 程序會對照變量名進行格式化。
4.浮點數(shù)的格式化
【目標任務(wù)】
格式化輸出3位數(shù)的小數(shù)。
【示例】
將3.1415926格式化后輸出3.142。
【體驗代碼】
# :是固定語法
# .3 表示保留小數(shù)點后3位
# f 表示浮點數(shù)
print("{:.3f}".format(3.1415926))
【終端輸出】
3.142
【編寫思路】
- 輸入英文冒號
:
。 - 輸入一個英文小圓點
.
。
這里點表示告訴程序后面要采取的是精度操作,即保留小數(shù)點位數(shù)的操作。
- 輸入一個整數(shù),表示小數(shù)點保留的位數(shù)。
.1
表示保留1位小數(shù)。
.2
表示保留2位小數(shù)。
.3
表示保留3位小數(shù)。
f
表示數(shù)據(jù)類型為浮點數(shù)。- 再輸入一個英文小圓點
.
。
這里.format是格式化語法固定搭配。
- 輸入
format
關(guān)鍵字。 - 要格式的浮點數(shù)本身或浮點數(shù)變量名。
【:.1f
保留1位小數(shù)】
print("{:.1f}".format(3.1415926))
【終端輸出】
3.1
【:.2f
保留2位小數(shù)】
print("{:.2f}".format(3.1415926))
【終端輸出】
3.14
【:.4f
保留4位小數(shù)】
print("{:.4f}".format(3))
【終端輸出】
3.0000
5..format
官方語法
【以下內(nèi)容不需要掌握】
【官方語法參考】
{參數(shù)序號:格式控制標記}.format(*args,**kwargs)
- 參數(shù)序號是位置參數(shù)或關(guān)鍵字參數(shù)傳遞過來的參數(shù)變量。
- 英文冒號
:
是固定語法。 - 格式控制標記用來控制參數(shù)顯示時的格式。這里有9個可選的標記。
有對齊方式:<
表示左對齊;>
表示右對齊;^
居中對齊;=
數(shù)字填充。
有精度:精度即用英文小圓點.
表示,后面緊跟一個整數(shù)。操作對象為小數(shù)表示小數(shù)保留的位數(shù);操作對象為字符串表示截取字符的個數(shù)。
有輸出類型:默認為s;s
表示字符;d
表示整數(shù);f
表示浮點數(shù)。
還有6種這里不做介紹。
.format
是格式化語法。- *args表示位置參數(shù)。
- **kwargs表示關(guān)鍵字參數(shù)。
上面是str.format
格式化語法的官方介紹。
很多教材里也都是這么敘述的。
如果我像這樣寫,初學(xué)者很難看懂。
因此我用了大白話對官方描述進行了翻譯。
初學(xué)者不用理解位置參數(shù)、關(guān)鍵字參數(shù)等含義,你把它理解成要格式化的對象即可。
其實,Python中很多函數(shù)都有很多個可選參數(shù),例如print函數(shù)也有4個參數(shù),我都沒做詳細介紹。
初學(xué)者不是研究者,我們先掌握基礎(chǔ)語法和常用方法即可。
6. .format
格式化語法總結(jié)
{}
name = "安迪"
city = "云南"
school = "復(fù)旦大學(xué)"
print(
"大家好,我叫{},來自{},畢業(yè)于{}!"
.format( name, city, school)
)
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
{編號}
print(
"大家好,我叫{0},來自{1},畢業(yè)于{2}!"
.format("安迪", "云南","復(fù)旦大學(xué)")
)
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
{變量名}
print(
"大家好,我叫{name},來自{city},畢業(yè)于{school}!"
.format(name = "安迪", school = "復(fù)旦大學(xué)", city = "云南")
)
【終端輸出】
大家好,我叫安迪,來自云南,畢業(yè)于復(fù)旦大學(xué)!
:.4f
保留4位小數(shù)
print("{:.4f}".format(3))
【終端輸出】
3.0000
【備注】.format
格式化語法用例題理解更為直觀。
.format
語法主要由3個部分組成:
- 格式化模板,即要輸出的內(nèi)容,需要格式化的地方用{}代替。
.format
,格式化語法。- 要格式化的變量。
7. 總結(jié)
51-1 .format字符串格式化總結(jié)1
8.課堂練習(xí)
- 用
.format
格式化語法輸出:我是白敬亭,今年29歲。
【體驗代碼】
# 原樣輸出:我是白敬亭,今年29歲。
print('我是白敬亭,今年29歲。')
print('我是{},今年{}歲。'.format('白敬亭',29))
print('我是{name},今年{age}歲。'.format(name='白敬亭',age=29))
【終端輸出】
我是白敬亭,今年29歲。
我是白敬亭,今年29歲。
我是白敬亭,今年29歲。
- 用
.format
格式化語法輸出:今天是12月17日,油價8.5元每升。
【體驗代碼】
# 方法一
print('今天是{},油價{}元每升。'.format('12月17日',8.5))
# 方法二
print('今天是{data},油價{price}元每升。'.format(data='12月17日',price=8.5))
【終端輸出】
今天是12月17日,油價8.5元每升。
今天是12月17日,油價8.5元每升。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4344瀏覽量
62809 -
代碼
+關(guān)注
關(guān)注
30文章
4809瀏覽量
68819 -
編寫
+關(guān)注
關(guān)注
0文章
29瀏覽量
8480
發(fā)布評論請先 登錄
相關(guān)推薦
評論