CC++ & Algorithm

Python格式化输出 f-string

中等4
语言版本:C++Python
概述:学习如何用f-string把变量和文字组合在一起输出。

把变量和文字完美组合——f-string 格式化输出

有时候,用逗号分隔输出内容虽然简单,但看起来不够整洁。比如想输出“小明今年8岁”,用逗号写出来:print("小明今年", age, "岁") 会多出一个空格。有没有更漂亮的写法呢?有,就是 f-string

f-string 是什么?
f-string 是 Python 3.6 以后提供的一种格式化字符串的方式。它让你可以直接在字符串花括号 {} 里放变量,非常直观。就像给字符串开了一个小窗口,把变量“扔”进去。


一、基本用法:在字符串前加 f

在字符串前加一个 fF,然后在字符串内部用 {变量名} 插入变量:

name = "小明"       # 名字
age = 8             # 年龄
print(f"{name}今年{age}岁")

输出:小明今年8岁
注意,这里没有多余的空格,非常整齐。

生活例子: 妈妈让你在纸条上写“小明今年8岁”,如果用旧方法(逗号)会变成“小明 今年 8 岁”,像多出几个空格。f-string 就像用尺子画好格子,把文字和数字直接嵌在一起。


二、可以放表达式:计算、函数调用都行

花括号里不仅可以放变量,还可以放计算式、函数调用等:

a = 10       # 第一个数
b = 3        # 第二个数
print(f"{a}{b} 等于 {a + b}")

# 还可以放函数
score = 85   # 考试分数
print(f"你的成绩是{score}分,及格了吗?{'及格' if score >= 60 else '不及格'}")

输出:
10 加 3 等于 13
你的成绩是85分,及格了吗?及格

注意:花括号里可以写任何 Python 表达式,比如 {a > b} 会输出 True 或 False。这对检查条件很方便。


三、控制数字格式:保留几位小数、加百分号

比如想保留几位小数,可以在花括号内加冒号:

pi = 3.1415926                         # 圆周率
print(f"圆周率约等于 {pi:.2f}")        # :.2f 表示保留两位小数

price = 25.5                           # 商品价格
discount = 0.8                         # 八折
final_price = price * discount         # 打折后价格
print(f"原价{price}元,打{int(discount*10)}折后需付{final_price:.2f}元")

输出:
圆周率约等于 3.14
原价25.5元,打8折后需付20.40元

常见格式控制:

  • :.2f 保留2位小数
  • :.0f 保留0位小数(取整)
  • :% 显示成百分数(如 {0.8:.0%} 输出 80%)
rate = 0.876                           # 通过率 87.6%
print(f"通过率为 {rate:.1%}")          # 输出:通过率为 87.6%

四、对齐和填充(了解即可)

f-string 还能控制文本的对齐,比如右对齐或居中对齐。对一级考试来说,只需要知道有这功能就行。

name = "小红"
print(f"|{name:>10}|")   # 向右对齐,总宽10格
print(f"|{name:^10}|")   # 居中对齐
print(f"|{name:*<10}|")  # 向左对齐,用*填充空白

输出:

|       小红|
|   小红    |
|小红*******|

五、用生活的例子理解(手抄报比喻)

想象你在做手抄报,你需要把文字和数字贴在一起。用胶水(逗号)会把它们粘得有点歪(中间有空格),而 f-string 像是一张有凹槽的模板,直接把数字嵌进文字里,严丝合缝。

再比如,你给自己列零花钱清单:

item = "笔记本"           # 买的物品
cost = 15.5               # 价格
print(f"今天买了{item},花了{cost:.1f}元")

输出清晰多了。


六、对比一下三种输出方式

name = "小红"      # 名字
score = 95          # 分数
# 方式1:逗号
print(name, "考试得了", score, "分")
# 方式2:加号拼接(不推荐)
print(name + "考试得了" + str(score) + "分")
# 方式3:f-string(推荐)
print(f"{name}考试得了{score}分")

第一种输出:小红 考试得了 95 分(多了空格)
第二种:小红考试得了95分(但要把数字转成字符串,有点麻烦)
第三种:小红考试得了95分(简洁,空格可控)

显然 f-string 最好用。


七、新手容易犯的错误

  1. 忘记写 f

    name = "小明"
    print("{name}今年8岁")   # 输出:{name}今年8岁(没替换)
    

    正确写法:print(f"{name}今年8岁")

  2. 花括号里变量名写错

    age = 8
    print(f"小明今年{aga}岁")   # 报错 NameError
    
  3. 数字格式写错了冒号

    pi = 3.14
    print(f"{pi.2f}")   # 错误,应该是 {pi:.2f}
    
  4. 忘记把数字转为字符串(在加号拼接时容易犯,f-string自动处理)
    f-string 内部会自动把变量转成字符串,不用担心类型错误。


八、完整可运行的示例:统计零花钱

下面是一个完整的程序,用 f-string 输出零花钱的记账结果:

# 零花钱记账程序
item_1 = "铅笔"            # 第一个物品
cost_1 = 2.5               # 价格
item_2 = "橡皮"            # 第二个物品
cost_2 = 1.0               # 价格
total = cost_1 + cost_2    # 总花费
daily_allowance = 20       # 每天零花钱
remain = daily_allowance - total   # 剩余

print("今天记账:")
print(f"买了{item_1}{cost_1:.1f}元)和{item_2}{cost_2:.1f}元)")
print(f"共花费{total:.1f}元,还剩{remain:.1f}元")

运行输出:

今天记账:
买了铅笔(2.5元)和橡皮(1.0元)
共花费3.5元,还剩16.5元

九、小练习

用 f-string 输出你的名字和年龄,要求输出格式为:“我叫XX,今年XX岁”。
示例:

my_name = "小华"      # 你的名字
my_age = 10           # 你的年龄
print(f"我叫{my_name},今年{my_age}岁")

十、相关指引

f-string 是 Python 中最推荐的字符串格式化方式。除了 f-string,还有 format() 方法和 % 格式化(类似 C 语言),但在编程学习中,掌握 f-string 就足够应对大多数情况。接下来可以学习:

  • 字符串常见操作(查找、替换、分割)
  • input 输入(配合 f-string 输出用户输入的信息)
  • 类型转换(学会把 input 输入的字符串转成数字,再做运算和输出)

f-string 让输出变得更优雅、更清晰,是 Python 里非常有用的工具。以后你会经常用到它。

例题精讲

1单选题

以下哪个选项能正确使用f-string将变量name的值插入字符串中?

Aprint(f"你好,{name}")
Bprint(f"你好,name")
Cprint("你好,{name}")
Dprint("f你好,{name}")
2单选题

执行以下代码,输出结果是什么? name = "小明" age = 10 print(f"{name}明年{age+1}岁")

A小明明年10岁
B小明明年11岁
Cname明年11岁
D小明明年age+1岁
3判断题

在f-string中,如果想输出大括号字符(例如{或}),需要使用双大括号{{或}}进行转义。

4填空题
请补全代码,使用f-string输出以下内容(变量已定义):
name = "小明"
age = 10
print(f"我的名字是___,我今年___岁")
5填空题
请补全代码,使用f-string将变量pi保留两位小数(四舍五入)输出:
pi = 3.14159
print(f"圆周率约是___")