51..format字符串格式化
文章目录
- 51.`.format`字符串格式化
- 1.课题导入
- 2.知识回顾
- 3.`.format`的基本用法
- 3.1{}为空
- 3.2 {}中有编号
- 3.3 {}中有变量名
- 4.浮点数的格式化
- 5.`.format`官方语法
- 6. `.format`格式化语法总结
- 7. 总结
- 8.课堂练习
1.课题导入
【描述】
用input函数输入你每个月的工资、每天消费的平均值及本月的天数,编写代码输出你当月的余额(假设有剩余)。
【参考】
输入
9000
80
31
输出
本月我还剩余6520.0元。
【备注】月工资为9000元,平均每天消费80元,本月有31天。
【体验代码】
字符串拼接法:
# input函数输入你的月工资,用变量gz存储
gz = input('你每月的工资是多少元?')
# input函数输入你每天的平均消费,用变量xf存储
xf = input('你平均每天消费多少钱?')
# input函数输入本月的天数,用户变量x存储
x = input('本月有多少天?')
# 余额=工资-平均消费*天数
yu = float(gz) - float(xf)*int(x)
print('本月我还剩余'+str(yu)+'元。')
【终端输出】
本月我还剩余6520.0元。
【代码解析】
-
input函数获取的内容是字符串类型。如果获取的内容是需要用于计算的数字,要先将字符串转换成整数或浮点数。 -
float(gz)和float(xf)用float函数将终端输入的内容转换成浮点数参与计算。 -
int(x)用int函数将输入的内容转换成整数参与计算。 -
yu = float(gz) - float(xf)*int(x)得到的数据类型是浮点数。 -
str(yu)用str函数将yu的数据类型转换成字符串和前面的字符进行拼接。
2.知识回顾
上面的代码需要同时输出文本信息和变量,我们用了字符串拼接的方法。
我们发现输出有数值变量的一句话要先判断变量的数据类型,然后用函数统一数据类型,操作比较麻烦。
除了字符串拼接方法,同时输出文本信息和变量,我们还可以用更便捷的方法:字符串格式化。
之前我们学了一种格式化方法:%占位符格式化。
我们先回顾 %占位符格式化语法。
【目标任务】
【描述】
输入自己的姓名、籍贯和毕业学校,按指定的格式输出到屏幕上。
【输入】
第一行输入姓名。
第二行输入籍贯。
第三行输入毕业学校。
【输出】
大家好,我叫XXX,来自XXX,毕业于XXX!
【示例】
输入:
安迪
云南
复旦大学
输出:
大家好,我叫安迪,来自云南,毕业于复旦大学!
【体验代码1】
name = input()
city = input()
school = input()
print("大家好,我叫%s,来自%s,毕业于%s! " % (name,city,school))
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
-
3个
%s是我要替换的内容。 -
%是占位符格化语法,是固定用法。 -
name,city,school是我要替换%s的变量,我也称它们为要格式化的变量。
3..format的基本用法
本节我们学第2种字符串格式化方法。
format[ˈfɔːmæt]:格式。
.format的通常有3种用法:
-
{}为空。 -
{}中有编号。 -
{}中有变量名。
3.1{}为空
为了讲解方便,这里我直接给变量赋值,不再从终端获取数据。
name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{},来自{},毕业于{}!".format(name, city, school))
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
【编写思路】
一.编写格式化模板。
-
我们要输出的内容是:
大家好,我叫安迪,来自云南,毕业于复旦大学! -
把要格式化的内容用英文大括号
{}替换:
安迪替换为大括号{}。
云南替换为大括号{}。
复旦大学替换为大括号{}。
格式化模板为:"大家好,我叫{},来自{},毕业于{}!"
二. 语法关键字。
-
输入一个英文小圆点
. -
format关键字
三. 要格式化的变量。
(name, city, school)英文圆括号中写入要格式化的变量名。
【语法解析】
{}为空时默认按格式化变量的顺序自动格式化到大括号中。
【调整格式化变量的顺序】
将(name, city, school)顺序调整为(school, name, city)。
运行下面的代码,观察输出结果。
name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{},来自{},毕业于{}!".format( school, name, city))
【终端输出】
大家好,我叫复旦大学,来自安迪,毕业于云南!
观察输出结果,我们发现在{}为空时,它是按照后面要格式化变量的顺序进行填充的。
因为school在第1个,它替换了第1个{},输出内容变成了我叫复旦大学。
{}为空时需要重点关注要格式化变量的顺序。
【{ }中输入了一个空格】
name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{ },来自{ },毕业于{ }!".format( school, name, city))
【终端输出】
KeyError: ' '
在编写格式化模板时,我在{}中敲了一个空格。
我叫{}变成我叫{ }。
观察输出结果,程序报错。
初学者千万注意,这里的{}中是不能写入空格的。
3.2 {}中有编号
print("大家好,我叫{0},来自{1},毕业于{2}!".format("安迪", "云南","复旦大学"))
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
【编写思路】
一.编写格式化模板。
-
我们要输出的内容是:
大家好,我叫安迪,来自云南,毕业于复旦大学! -
把要格式化的内容用英文大括号加编号
{编号}替换:
安迪替换为{0}。
云南替换为{1}。
复旦大学替换为{2}。
格式化模板为:"大家好,我叫{0},来自{1},毕业于{2}!"
二. 语法关键字。
-
输入一个英文小圆点
. -
format关键字
三. 要格式化的内容。
("安迪", "云南", "复旦大学")英文圆括号中写入要格式化的内容。
【语法解析】
{编号}:大括号中有编号时,按照格式化变量的编号顺序进行格式化。
【温馨提示】
Python中的正索引是从0开始编号的。
这里的编号顺序也是从0开始。
-
{0}表示要格式化的第1个变量,即"安迪"。
-
{1}表示要格式化的第2个变量,即 “云南”。
-
{2}表示要格式化的第3个变量,即 “复旦大学”。
【多次格式化同一个变量】
print(
"大家好,我叫{0},来自{1},我的同桌也来自{1},我们班有5个同学来自{1}!"
.format("安迪", "云南")
)
【终端输出】
大家好,我叫安迪,来自云南,我的同桌也来自云南,我们班有5个同学来自云南!
【代码解析】
上述代码格式化模板中我用了3个{1},即"云南"我使用了3次。
只要内容相同,我们是可以多次使用的。
【格式化变量的顺序影响输出结果】
name = "安迪"
city = "云南"
school = "复旦大学"
print("大家好,我叫{0},来自{1},毕业于{2}!".format(school, name, city ))
【终端输出】
大家好,我叫复旦大学,来自安迪,毕业于云南!
【代码解析】
根据格式化变量(school, name, city )的顺序:
{0}要格式化的变量是school,因此输出了我叫复旦大学。
{1}要格式化的变量是name,因此输出了来自安迪。
3.3 {}中有变量名
print(
"大家好,我叫{name},来自{city},毕业于{school}!"
.format(name = "安迪", school = "复旦大学", city = "云南")
)
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
【编写思路】
一.编写格式化模板。
-
我们要输出的内容是:
大家好,我叫安迪,来自云南,毕业于复旦大学! -
把要格式化的内容用英文大括号加变量名
{变量名}替换:
安迪替换为{name}。
云南替换为{city}。
复旦大学替换为{school}。
格式化模板为:"大家好,我叫{name},来自{city},毕业于{school}!"
二. 语法关键字。
-
输入一个英文小圆点
. -
format关键字
三. 要格式化的变量。
(name = "安迪", school = "复旦大学", city = "云南")英文圆括号中写入已经赋值了的格式化变量。
【代码解析】
-
{name}要替换的内容也可以直接用英文大括号加变量名表示。 -
(name = "安迪", school = "复旦大学", city = "云南")给要格式化的变量直接赋值。 -
这种情况下不用考虑格式化变量的顺序。
-
程序会对照变量名进行格式化。
4.浮点数的格式化
【目标任务】
格式化输出3位数的小数。
【示例】
将3.1415926格式化后输出3.142。
【体验代码】
# :是固定语法
# .3 表示保留小数点后3位
# f 表示浮点数
print("{:.3f}".format(3.1415926))
【终端输出】
3.142
【编写思路】
-
输入英文冒号
:。 -
输入一个英文小圆点
.。
这里点表示告诉程序后面要采取的是精度操作,即保留小数点位数的操作。
- 输入一个整数,表示小数点保留的位数。
.1表示保留1位小数。
.2表示保留2位小数。
.3表示保留3位小数。
-
f表示数据类型为浮点数。 -
再输入一个英文小圆点
.。
这里.format是格式化语法固定搭配。
-
输入
format关键字。 -
要格式的浮点数本身或浮点数变量名。
【:.1f保留1位小数】
print("{:.1f}".format(3.1415926))
【终端输出】
3.1
【:.2f保留2位小数】
print("{:.2f}".format(3.1415926))
【终端输出】
3.14
【:.4f保留4位小数】
print("{:.4f}".format(3))
【终端输出】
3.0000
5..format官方语法
【以下内容不需要掌握】
【官方语法参考】
{参数序号:格式控制标记}.format(*args,**kwargs)
-
参数序号是位置参数或关键字参数传递过来的参数变量。
-
英文冒号
:是固定语法。 -
格式控制标记用来控制参数显示时的格式。这里有9个可选的标记。
有对齐方式:<表示左对齐;>表示右对齐;^居中对齐;=数字填充。
有精度:精度即用英文小圆点.表示,后面紧跟一个整数。操作对象为小数表示小数保留的位数;操作对象为字符串表示截取字符的个数。
有输出类型:默认为s;s表示字符;d表示整数;f表示浮点数。
还有6种这里不做介绍。
-
.format是格式化语法。 -
*args表示位置参数。
-
**kwargs表示关键字参数。
上面是str.format格式化语法的官方介绍。
很多教材里也都是这么叙述的。
如果我像这样写,初学者很难看懂。
因此我用了大白话对官方描述进行了翻译。
初学者不用理解位置参数、关键字参数等含义,你把它理解成要格式化的对象即可。
其实,Python中很多函数都有很多个可选参数,例如print函数也有4个参数,我都没做详细介绍。
初学者不是研究者,我们先掌握基础语法和常用方法即可。
6. .format格式化语法总结
{}
name = "安迪"
city = "云南"
school = "复旦大学"
print(
"大家好,我叫{},来自{},毕业于{}!"
.format( name, city, school)
)
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
{编号}
print(
"大家好,我叫{0},来自{1},毕业于{2}!"
.format("安迪", "云南","复旦大学")
)
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
{变量名}
print(
"大家好,我叫{name},来自{city},毕业于{school}!"
.format(name = "安迪", school = "复旦大学", city = "云南")
)
【终端输出】
大家好,我叫安迪,来自云南,毕业于复旦大学!
:.4f保留4位小数
print("{:.4f}".format(3))
【终端输出】
3.0000
【备注】.format格式化语法用例题理解更为直观。
.format语法主要由3个部分组成:
-
格式化模板,即要输出的内容,需要格式化的地方用{}代替。
-
.format,格式化语法。 -
要格式化的变量。
7. 总结

8.课堂练习
- 用
.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元每升。






![[附源码]Python计算机毕业设计Django校园疫情防范管理系统](https://img-blog.csdnimg.cn/5d9b52770fd846928d3cdf89478dff5d.png)










![[附源码]计算机毕业设计Python的物品交换平台(程序+源码+LW文档)](https://img-blog.csdnimg.cn/0debc74d2bec4a17ad5ee521cdd62c22.png)
