• 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) 表示依次把整数 73000 和浮点数 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)

六、总结

  1. 格式化输出通过 % 搭配占位符(如 %d%f%s 等)实现,能精准控制输出格式。
  2. %d 用于输出整数,%f 用于输出浮点数(可控制小数位数),%s 是通用占位符,常用在输出字符串或不确定数据类型时。
  3. 使用时要注意占位符数量和变量数量一致,以及数据类型和占位符匹配,这样才能正确输出想要的结果。

通过本节课学习,大家就能灵活运用格式化输出,让程序的输出更规范、更贴合实际需求啦,后续可以在实际项目中多多练习巩固哟!

2 条评论

  • @ 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)

      五、回顾与拓展练习

      (一)回顾知识点

      1. 格式化输出用 % + 占位符(%d/%f/%s )实现。
      2. 多变量时,% 后用括号按顺序传入。
      3. %.xf 可控制小数位数(x 是位数)。

      (二)拓展练习

      1. 输入一个人的生日(年、月、日,用空格分隔),用格式化输出 “你的生日是:2000年1月1日” 。
      2. 结合之前的 “反向输出三位数” 题目,输出时用格式化添加提示文本(如 “反向结果:001” )。

      通过本节课,你掌握了格式化输出的核心用法,能让程序输出更专业、更易读。下节课我们将学习 循环语句 ,让代码重复执行,处理批量任务!

      • 1