- Python
Python 第七课:格式化输出(占位符用法)
- 2025-6-13 13:33:41 @
Python 第七课:格式化输出(占位符用法)
一、课程引入
在前面的课程中,我们已经学会了基本的输入输出、数据类型转换以及简单的条件判断。但在实际编程中,我们常常需要把变量和文本按照特定格式组合输出,比如输出 “学生成绩:95 分” 这种包含变量和固定文本的内容。这时候,格式化输出就派上用场啦,今天我们就来学习用占位符实现格式化输出的方法。
二、格式化输出的作用与基本概念
(一)作用
当我们需要把变量的值按照一定格式插入到字符串中输出时,格式化输出可以让我们精准控制输出的样式,让结果更清晰、美观,也更符合实际需求,比如控制小数位数、对齐方式等。
(二)基本概念——占位符
Python 中常用 %
搭配占位符来实现格式化输出,占位符就像是一个个 “位置标记”,告诉 Python 在哪里插入变量的值。常见的占位符有:
三、详细知识点与代码示例
(一)%d
输出整数
a = 5
# %d 作为整数的占位符,把变量 a 的值插入到字符串对应位置
print("这个数是%d" % a)
print("%d" % a)
print("这个数是%d" % (a))
代码解释:
print("这个数是%d" % a)
:字符串"这个数是%d"
里的%d
是占位符,% a
表示把变量a
的值(整数类型)填充到%d
的位置,输出 “这个数是5”。print("%d" % a)
:直接用%d
占位输出变量a
的值,输出 “5”。print("这个数是%d" % (a))
:和第一种情况类似,括号可加可不加,这里把a
用括号括起来,同样输出 “这个数是5”,这样写在变量多的时候能更清晰区分要传入的变量。
(二)%f
输出浮点数
n3 = 3.14159
# %f 作为浮点数占位符,默认输出 6 位小数
print("%d-----%d-----%f" % (7, 3000, n3))
代码解释:
- 字符串
"%d-----%d-----%f"
里有三个占位符,分别是%d
、%d
、%f
。 % (7, 3000, n3)
表示依次把整数7
、3000
和浮点数n3
(值为3.14159
)填充到对应占位符位置。%f
默认会输出 6 位小数,所以最终输出 “7-----3000-----3.141590” 。
我们还可以控制 %f
输出的小数位数,比如保留 3 位小数:
n1 = 7
n2 = 47
n3 = 3.14159
# %.3f 表示保留 3 位小数,会对第四位小数四舍五入
print("%d-----%d-----%.3f" % (n1, n2, n3))
代码解释:
%.3f
是一种更精确的浮点数占位符用法,.3
表示保留 3 位小数。- 把
n1
(值为7
)、n2
(值为47
)、n3
(值为3.14159
)依次填入占位符,n3
保留 3 位小数后是3.142
,所以输出 “7-----47-----3.142” 。
(三)%s
输出字符串(及其他类型)
nn = 100
str1 = "hello world"
# %s 作为字符串占位符,这里也可以用来输出整数 nn
print("%d----%s" % (nn, str1))
# 其实用 %s 也能输出整数,Python 会自动转换,如下:
print("%s----%s" % (nn, str1))
代码解释:
- 第一行
print("%d----%s" % (nn, str1))
:%d
输出整数nn
(值为100
),%s
输出字符串str1
(值为"hello world"
),输出 “100----hello world” 。 - 第二行
print("%s----%s" % (nn, str1))
:%s
很灵活,虽然nn
是整数,但 Python 会把它转换成字符串再输出,结果也是 “100----hello world” ,所以%s
常用作通用的占位符,在不确定数据类型或者想简单输出时很方便。
四、综合案例练习
(一)案例 1:输出学生信息
需求:定义学生的学号、姓名、成绩(浮点数),用格式化输出完整信息,成绩保留 1 位小数。
# 定义变量
student_id = 1
name = "小明"
score = 95.567
# 用占位符格式化输出,%d 输出学号,%s 输出姓名,%.1f 输出保留 1 位小数的成绩
print("学号:%d,姓名:%s,成绩:%.1f" % (student_id, name, score))
运行结果:学号:1,姓名:小明,成绩:95.6
代码解释:
- 字符串里的
%d
对应整数student_id
,%s
对应字符串name
,%.1f
对应浮点数score
并保留 1 位小数。 - 按照顺序把变量值填充到占位符位置,输出符合需求的学生信息。
(二)案例 2:结合输入计算并格式化输出 BMI 值
需求:通过输入获取身高(厘米)和体重(千克),计算 BMI 值(公式:BMI = 体重 / (身高 / 100) ** 2
),然后格式化输出身高、体重、BMI 值(保留 2 位小数)。
# 输入身高和体重
height = float(input("请输入身高(厘米):"))
weight = float(input("请输入体重(千克):"))
# 计算 BMI 值
bmi = weight / (height / 100) ** 2
# 格式化输出,%.1f 控制身高、体重小数位数,%.2f 控制 BMI 小数位数
print("身高:%.1f 厘米,体重:%.1f 千克,BMI:%.2f" % (height, weight, bmi))
输入输出示例: 输入:
请输入身高(厘米):170
请输入体重(千克):60
输出:身高:170.0 厘米,体重:60.0 千克,BMI:20.76
代码解释:
- 先通过
input
函数获取用户输入的身高和体重,并转换为浮点数类型。 - 根据公式计算出 BMI 值。
- 用
%.1f
控制身高和体重输出 1 位小数,%.2f
控制 BMI 值输出 2 位小数,按照格式输出结果。
五、常见问题与解决办法
(一)问题:占位符与变量数量不匹配
错误代码示例:
n1 = 7
n3 = 3.14159
# 模板里有 2 个占位符,但只传了 1 个变量,会报错
print("%d-----%f" % (n1))
报错原因:%
后面括号里的变量数量要和字符串中的占位符数量一致,这里占位符是 2 个,变量只有 1 个,无法对应填充。
解决办法:确保变量数量和占位符数量相同,修改为 print("%d-----%f" % (n1, n3))
。
(二)问题:数据类型与占位符不匹配
错误代码示例:
name = "小明"
# %d 期望整数,却传入字符串,会报错
print("姓名:%d" % name)
报错原因:%d
专门用于输出整数,传入字符串类型的 name
无法匹配。
解决办法:根据数据类型选择正确的占位符,这里应该用 %s
,修改为 print("姓名:%s" % name)
。
六、总结
- 格式化输出通过
%
搭配占位符(如%d
、%f
、%s
等)实现,能精准控制输出格式。 %d
用于输出整数,%f
用于输出浮点数(可控制小数位数),%s
是通用占位符,常用在输出字符串或不确定数据类型时。- 使用时要注意占位符数量和变量数量一致,以及数据类型和占位符匹配,这样才能正确输出想要的结果。
通过本节课学习,大家就能灵活运用格式化输出,让程序的输出更规范、更贴合实际需求啦,后续可以在实际项目中多多练习巩固哟!
2 条评论
-
admin SU @ 2025-6-13 13:36:37
🐍 Python 第7课:格式化输出与字符串占位符
%
的使用
🧠 本节课目标:
通过本节课,你将掌握:
- print函数中字符串格式化输出的写法
- 理解并使用
%d
,%f
,%s
等占位符 - 学会用
print("%d %f %s" % (变量1, 变量2, 变量3))
这种经典格式化方式 - 了解不同数据类型的格式化方式和精度控制
一、什么是格式化输出?
在 Python 中,我们经常需要把多个变量插入到一段字符串中,比如:
name = "小明" age = 12 print("我的名字是" + name + ",我今年" + str(age) + "岁。")
虽然这样可以实现功能,但代码看起来很繁琐。
Python 提供了更简洁的方式:格式化字符串(Formatting Strings),其中一种就是使用
%
操作符。
二、常见格式化符号(占位符)
占位符 含义 示例值 %d
整数 123 %f
浮点数 3.14159 %.nf
保留n位小数 %.2f
→ 3.14%s
字符串 "hello" %%
百分号本身 输出一个 %
符号
三、基本语法格式
print("格式字符串" % (变量1, 变量2, ...))
✅ 示例 1:整数格式化
a = 5 print("这个数是%d" % a) # 输出:这个数是5
💡
%d
是一个“占位符”,表示这里要插入一个整数,后面的变量会自动替换它。
✅ 示例 2:多变量格式化
n1 = 7 n2 = 47 n3 = 3.14159 print("%d-----%d-----%f" % (n1, n2, n3)) # 输出:7-----47-----3.141590
⚠️ 注意:默认情况下,
%f
会显示6位小数。
✅ 示例 3:保留指定小数位数
print("%.2f" % 3.14159) # 输出:3.14 print("%.3f" % 3.14159) # 输出:3.142
💡 小数点后保留几位就写
.n
,如%.2f
表示保留两位小数。
✅ 示例 4:混合类型格式化
nn = 100 str1 = "hello world" print("%d----%s" % (nn, str1)) # 输出:100----hello world
四、错误示例 & 常见问题
❌ 错误示例1:变量数量不匹配
print("%d %d" % 5) # 报错:not enough arguments for format string
❗ 解决方法:括号内的变量个数必须和格式字符串中的占位符一致!
❌ 错误示例2:类型不匹配
print("%d" % "abc") # 报错:无法将字符串转为整数
❗ 解决方法:确保变量类型和占位符匹配!
五、练习题讲解(结合图片内容)
📌 题目1:A × B 乘积问题
a, b = input().strip().split() a, b = int(a), int(b) print(a * b)
✅ 输入两个整数,求乘积。适用于
int
类型输入处理。
📌 题目2:比大小并从小到大输出
a, b = input().strip().split() a, b = int(a), int(b) if a < b: print(a, b) else: print(b, a)
✅ 使用
if else
判断大小,并按顺序输出。
📌 题目3:反向输出三位数
n = int(input()) print(n % 10, n // 10 % 10, n // 100 % 10, sep="")
✅ 利用取模运算和整除操作分离每一位数字。
📌 题目4:百位与个位对调
n = int(input()) ge = n % 10 shi = n // 10 % 10 bai = n // 100 % 10 print(ge * 100 + shi * 10 + bai)
✅ 分离各位后重新组合成新数字。
📌 题目5:电影票总价计算
x = int(input()) cnt = x * 10 print(x, cnt)
✅ 格式化输出也可以直接传入多个参数,如
print(x, cnt)
自动加空格。
📌 题目6:输出第二个整数
a, b, c = input().strip().split() print(b)
✅ 利用结构化赋值取出中间变量。
📌 题目7:三个数从大到小排序输出(简化版)
原图用了很多
if else
条件判断,其实可以用sorted()
函数简化:a, b, c = map(int, input().split()) nums = sorted([a, b, c], reverse=True) print(nums[0], nums[1], nums[2])
✅ 使用列表排序更高效清晰。
📌 题目8:睡眠时间判断
zf, h = input().strip().split() zf, h = int(zf), int(h) zf *= 3 # 转换为等效晚上分钟 total = zf / 60 + h if total >= 8: print("Yes") else: print("No")
✅ 处理单位转换逻辑,进行比较判断。
六、总结知识点表格
格式符 含义 示例 %d
整数 print("%d" % 123)
%f
浮点数 print("%.2f" % 3.14159)
%s
字符串 print("姓名:%s" % "张三")
sep=""
控制打印间隔符 print(1, 2, sep="---")
→1---2
map()
快速类型转换 a, b = map(int, input().split())
七、动手练一练(课堂练习)
✏️ 练习1:格式化输出一句话
编写程序,输入你的年龄、身高(米)、名字,然后输出类似:
我是张三,今年12岁,身高1.55米。
✅ 参考代码:
name = input("请输入你的名字:") age = int(input("请输入你的年龄:")) height = float(input("请输入你的身高(米):")) print("我是%s,今年%d岁,身高%.2f米。" % (name, age, height))
✏️ 练习2:成绩等级判断
输入一个分数,输出对应等级(A/B/C/D)。
✅ 参考代码:
score = int(input("请输入分数:")) if score >= 90: grade = 'A' elif score >= 80: grade = 'B' elif score >= 60: grade = 'C' else: grade = 'D' print("成绩等级:%s" % grade)
八、总结一句话:
学会使用
%d
,%f
,%s
进行格式化输出,可以让我们的程序输出更美观、更清晰、更专业! -
2025-6-13 13:36:01@
Python 第7课:格式化输出与综合案例实践
一、课程回顾
在前几节课中,我们学习了输入处理(
input
)、数据类型转换(int
/float
)、条件判断(if
)以及字符串操作(strip
/split
) 。本节课将聚焦 格式化输出 ,让程序输出更灵活、更贴合实际需求,还会结合之前知识点做综合练习。二、格式化输出(占位符)
(一)为什么需要格式化输出?
当我们要把变量和固定文本结合输出时(比如 “用户得分:95 分” ,
95
是变量),直接拼接字符串麻烦,格式化输出能简洁、规范实现。Python 用%
搭配占位符完成,常见占位符:占位符 作用 示例数据 输出效果 %d
输出整数(decimal) 7
%f
输出小数(float) 3.14159
3.141590
%s
输出字符串(string) "hello"
hello
(二)基础用法:单个占位符
a = 5 # %d 是整数占位符,%a 表示把变量 a 填入占位符 print("这个数是%d" % a) print("%d" % a) # 直接输出变量 a 的值 print("这个数是%d" % (a)) # 括号可选,多变量时更清晰
输出:
这个数是5 5 这个数是5
(三)进阶用法:多个占位符
n1 = 7 n2 = 47 n3 = 3.14159 # 三个占位符 %d、%d、%f ,按顺序填入变量 print("%d-----%d-----%f" % (n1, 3000, n3)) # %.3f 保留 3 位小数,四舍五入 print("%d-----%d-----%.3f" % (n1, n2, n3))
输出:
7-----3000-----3.141590 7-----47-----3.142
解释:
%f
默认显示 6 位小数,%.3f
控制小数位数为 3 位。- 变量要按顺序、数量和占位符匹配,否则报错。
(四)通用占位符
%s
nn = 100 str1 = "hello world" # %d 输出整数,%s 输出字符串 print("%d----%s" % (nn, str1)) # %s 也能输出整数(自动转字符串) print("%s----%s" % (nn, str1))
输出:
100----hello world 100----hello world
解释:
%s
是 “万能占位符” ,可输出任意类型(Python 自动转字符串),简单场景常用。三、综合案例:结合输入与格式化输出
(一)案例1:输出学生信息
需求:输入学号、姓名、成绩,格式化输出 “学号:1,姓名:小明,成绩:95.6” 。
# 输入数据(模拟,实际可用 input ) student_id = 1 name = "小明" score = 95.567 # 用 %d、%s、%.1f 分别输出整数、字符串、保留1位小数的浮点数 print("学号:%d,姓名:%s,成绩:%.1f" % (student_id, name, score))
输出:
学号:1,姓名:小明,成绩:95.6
(二)案例2:BMI 计算与格式化输出
需求:输入身高(厘米)、体重(千克),计算 BMI(公式:
BMI = 体重 / (身高/100)^2
),并格式化输出结果(保留 2 位小数)。# 输入数据 height = float(input("请输入身高(厘米):")) weight = float(input("请输入体重(千克):")) # 计算 BMI bmi = weight / (height / 100) ** 2 # 格式化输出,身高、体重保留1位小数,BMI 保留2位 print("身高:%.1f 厘米,体重:%.1f 千克,BMI:%.2f" % (height, weight, bmi))
输入输出示例:
请输入身高(厘米):170 请输入体重(千克):60 身高:170.0 厘米,体重:60.0 千克,BMI:20.76
四、常见错误与解决
(一)错误1:占位符与变量数量不匹配
n1 = 7 n3 = 3.14159 # 占位符是 2 个,但只传 1 个变量 → 报错 print("%d-----%f" % (n1))
解决:确保
%
后变量数量和占位符一一对应,改为print("%d-----%f" % (n1, n3))
。(二)错误2:数据类型不匹配
name = "小明" # %d 要求整数,但传入字符串 → 报错 print("姓名:%d" % name)
解决:根据数据类型选占位符,字符串用
%s
,改为print("姓名:%s" % name)
。五、回顾与拓展练习
(一)回顾知识点
- 格式化输出用
%
+ 占位符(%d
/%f
/%s
)实现。 - 多变量时,
%
后用括号按顺序传入。 %.xf
可控制小数位数(x
是位数)。
(二)拓展练习
- 输入一个人的生日(年、月、日,用空格分隔),用格式化输出 “你的生日是:2000年1月1日” 。
- 结合之前的 “反向输出三位数” 题目,输出时用格式化添加提示文本(如 “反向结果:001” )。
通过本节课,你掌握了格式化输出的核心用法,能让程序输出更专业、更易读。下节课我们将学习 循环语句 ,让代码重复执行,处理批量任务!
- 1