Python知识分享网 - 专业的Python学习网站 学Python,上Python222
Python字符串格式化
匿名网友发布于:2023-09-11 14:47:26
(侵权举报)
(假如点击没反应,多刷新两次就OK!)

Python 7天快速入门完整视频教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

Python字符串格式化

 

 

我们前面学到字符串拼接,如果简单的2,3个字符串拼接那还算好,如果大于3个变量的拼接,就比较麻烦。还有一点,就是字符串无法和和其他类型直接拼接,需要进行类型转换,也麻烦。这时候,Python提供了“%”对各种类型的数据进行格式化输出。

简单案例:

 

name = "小锋"
print("我的姓名是 %s" % name)

 

输出结果:

 

我的姓名是 小锋

 

这里 %s 是占位符,第二个 % 是分隔符,name就是变量了。这个很好理解。

 

我们再看一个实例:

 

name = "小锋"
age = 18
print("我的姓名是 %s,我今年%s岁了" % (name, age))

 

输出结果:

 

我的姓名是 小锋,我今年18岁了

 

这里多了一个int类型的age变量。我们输出的时候,用两个%s,中间依然用%间隔,第三块,括号里两个参数。注意参数的顺序不能乱。

 

除了%s,还有很多占位符,如下表。我们现在掌握最基础常用的%s,%d,%f,分别把参数或者表达式转换成字符串,整型,浮点型。

 

Python字符串格式化  图1

 

看下面实例:

 

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

 

作业:定义五个变量,分别是姓名,性别,语文成绩,数学成绩,英语成绩,并且赋值,最终打印出类似 我是某某,男,语文成绩:99.2,数学成绩:100,英语88.5。要求格式化输出。

 

刚才我们打印身高,这个打印结果,后面多了五个0。这里就涉及到一个格式化精度控制。

我们可以使用辅助符号"m,n"来控制数据的宽度和精度;

  • m,控制宽度(包括小数点),注意,如果设置的宽度小于数字本身,则不生效。

  • n,控制小数点精度,注意,如果设置的宽度大于小数位数,则进行四舍五入。

 

我们先把前面的身高,加下小数精度 %.1f 这样输出结果就没有0了。

我们再看一下实例:

 

money1 = 99.99
money2 = 111.66
money3 = 10000
print("张三钱包余额:%10.2f元" % money1)
print("李四钱包余额:%10.1f元" % money2)
print("王五钱包余额:%10.2f元" % money3)

 

输出结果:

 

张三钱包余额:     99.99元
李四钱包余额:     111.7元
王五钱包余额:  10000.00元

 

作业:变量money4=1000.36 通过精度控制,保留一位小数字,数字宽度设置成8位。打印输出结果。

 

其实我们发现上面的字符串格式化方式,虽然功能强大,但是写起来也不是太方便,这边提供一种更加快捷优雅的格式化方式。

语法是:f"内容{变量}内容";

这种方式缺点是无法进行精度控制,以及也不关心类型,原值输出。

看下下面的测试案例:

 

name = "小锋"
age = 18
height = 181.2
print(f"我的姓名是 {name},我今年{age}岁了,身高{height}")

 

输入结果:

 

我的姓名是 小锋,我今年18岁了,身高181.2

 

作业:定义五个变量,分别是姓名,性别,语文成绩,数学成绩,英语成绩,并且赋值,最终打印出类似 我是某某,男,语文成绩:99.2,数学成绩:100,英语88.5。要求用f快捷格式化方式输出。