f-string 完全手册:60 题从入门到实战

前言

f-string 自 Python 3.6 引入后,迅速成为字符串格式化的首选方式------直观、简洁、可读性远超 %.format()。但很多人的用法长期停留在 f"你好,{name}" 这一层,对对齐填充、精度控制、进制转换、日期格式化这些格式说明符缺乏系统认识,每次遇到都要现查现试。

这份手册用 60 道题把 f-string 的常用能力拆成 6 个模块,由浅入深:

  1. 基础插值 ------ 变量、表达式、= 调试语法
  2. 对齐填充 ------ < ^ >、宽度、自定义填充
  3. 精度数值 ------ .Nf%、千分位、科学计数
  4. 进制转换 ------ b o x X# 前缀、补零
  5. 截断日期 ------ 字符串截断、strftime 规则
  6. 综合实战 ------ 表格、进度条、脱敏、单位换算

怎么用这份手册 :每题先自己动手写,再对照参考答案与解析。题目的「期望输出」就是你要复现的结果,解析里标了关键陷阱易错点 的地方尤其值得多看一眼。文末附格式说明符速查表七大易错点汇总,可当工具卡收藏。

环境要求:Python 3.8+(= 调试语法需 3.8+,同种引号嵌套需 3.12+)。


一、基础插值

热身。把变量、表达式、函数调用直接塞进 {} 里,再认识调试利器 = 号。


01 已知 name = "小明"age = 18,输出「我叫小明,今年18岁。」

输出:

复制代码
我叫小明,今年18岁。

答案:

python 复制代码
f"我叫{name},今年{age}岁。"

💡 解析 :花括号里的变量会被替换成它的值。这是 f-string 最基本的用法,比 %.format() 都直观。


02 已知 a = 3b = 4,输出「3 + 4 = 7」。

输出:

ini 复制代码
3 + 4 = 7

答案:

python 复制代码
f"{a} + {b} = {a + b}"

💡 解析 :花括号里可以放任意表达式,a + b 会先求值为 7 再插入。不必事先把结果存进变量。


03 已知 x = 42,用 f-string 输出「x= 42」(变量名和值都显示)。

输出:

ini 复制代码
x= 42

答案:

python 复制代码
f"{x=}"

💡 解析 :Python 3.8+ 的调试语法。在变量后加 =,会自动输出「变量名=值」,排错时省去手写名字。默认带空格,完整写法是 f"{x=}"x= 42


04 已知 pi = 3.14159265,用 = 调试语法输出「pi=3.14」(保留两位小数)。

输出:

ini 复制代码
pi=3.14

答案:

python 复制代码
f"{pi=:.2f}"

💡 解析= 与格式说明符可叠加:{pi=:.2f} 会先输出 pi=,再把值按 .2f 格式化为 3.14


05 已知 name="张三"score=95.5total=100,输出「张三的成绩是95.5/100。」

输出:

复制代码
张三的成绩是95.5/100。

答案:

python 复制代码
f"{name}的成绩是{score}/{total}。"

💡 解析 :多个变量可同时插入,中文标点与变量可任意穿插。注意 95.5 这里是原值,没有格式化;下一模块再讲控制小数位。


06 已知 s = "ab"n = 3,输出「ababab」。

输出:

csharp 复制代码
[ababab]

答案:

python 复制代码
f"[{s * n}]"

💡 解析 :花括号里是完整表达式 s * n,字符串乘法得到 ababab,再被方括号包住。能放表达式就别先存中间变量。


07 已知 nums = [10, 20, 30],输出「第一个是10,最后一个是30」。

输出:

复制代码
第一个是10,最后一个是30

答案:

python 复制代码
f"第一个是{nums[0]},最后一个是{nums[-1]}"

💡 解析 :花括号里支持索引与切片。nums[-1] 取最后一个元素,比 nums[len(nums)-1] 简洁得多。


08 已知 d = {"name": "李四", "city": "北京"},输出「李四住在北京」。

输出:

复制代码
李四住在北京

答案:

python 复制代码
# 外层用双引号,字典 key 在内部用单引号,避免引号冲突
f"{d['name']}住在{d['city']}"

💡 解析:f-string 内部再出现引号时,内外要用不同引号(外双内单)。Python 3.12 起才允许同种引号嵌套,旧版本必须区分。


09 已知 score = 85,用三元表达式输出「及格」(≥60 为及格)。

输出:

复制代码
及格

答案:

python 复制代码
f"{'及格' if score >= 60 else '不及格'}"

💡 解析 :三元表达式也能放进花括号,实现「按条件输出不同文案」。注意内部的 '及格' 用单引号,与外层双引号错开。


10 已知 words = "hello world",调用方法输出「HELLO WORLD」。

输出:

复制代码
HELLO WORLD

答案:

python 复制代码
f"{words.upper()}"

💡 解析 :花括号里可直接调用方法或函数,words.upper() 返回大写形式后插入。等价于 words.upper() 单独写,但拼进模板更灵活。


二、对齐与填充

格式说明符登场:< ^ > 控方向,宽度控占位,填充字符在前面。数字补零和字符串补零写法不同,这是第一个易错点。


11 已知 s = "abc",左对齐占 10 字符宽,用方括号框住看空格。

输出:

csharp 复制代码
[abc       ]

答案:

python 复制代码
f"[{s:<10}]"

💡 解析< 左对齐,后接宽度 10。字符串只占 3 位,右侧补 7 个空格。默认填充字符就是空格,可省略。


12 已知 s = "abc",右对齐占 10 字符宽。

输出:

css 复制代码
[       abc]

答案:

python 复制代码
f"[{s:>10}]"

💡 解析> 右对齐。数字其实默认就是右对齐(可省略 >),字符串默认左对齐,所以字符串右对齐要显式写 >


13 已知 s = "abc",居中占 10 字符宽。

输出:

css 复制代码
[   abc    ]

答案:

python 复制代码
f"[{s:^10}]"

💡 解析^ 居中。10 位放 3 个字符,左右各补空格;奇数空格时左侧少一个(左 3 右 4),这是 Python 的约定。


14 已知 s = "abc",用 - 作填充,居中占 10 宽。

输出:

css 复制代码
[---abc----]

答案:

python 复制代码
f"[{s:-^10}]"

💡 解析 :填充字符写在 align 符号前面:-^ 表示「用 - 填充、居中」。这是「自定义填充 + 对齐」的标准组合,顺序不能反。


15 已知 n = 42,数字左侧补零占 5 位,输出「00042」。

输出:

复制代码
00042

答案:

python 复制代码
f"{n:05}"

💡 解析 :对数字,宽度前的 0 是「零填充」简写(等价于 0>)。生成工号、序号、编号时常用。


16 已知 s = "abc"(字符串),左侧补零占 5 位,输出「00abc」。

输出:

复制代码
00abc

答案:

python 复制代码
# 字符串不能用 05,必须显式写 填充+对齐
f"{s:0>5}"

💡 解析关键陷阱05 的零填充简写只对数字生效。字符串补零必须写 0>(用 0 填充、右对齐)。写成 {s:05} 会报错。


17 已知 items = [("apple", 5.5), ("banana", 3.2), ("melon", 12.8)],打印三行对齐的价目表。

输出:

复制代码
apple    5.50
banana   3.20
melon   12.80

答案:

python 复制代码
for name, price in items:
    print(f"{name:<8}{price:>6.2f}")

💡 解析 :名称左对齐 8 位、价格右对齐 6 位保留 2 位小数,数字按列右对齐才整齐。中文陷阱 :若商品名是中文,<8 按「字符数」算,但中文显示占双宽,会对不齐------需用 wcwidth 或手动补显示宽度。


18 已知 n = 42,正数也显示正号,输出「+42」。

输出:

diff 复制代码
+42

答案:

python 复制代码
f"{n:+d}"

💡 解析+ 让正负号都显示(正数也带 +)。d 是十进制整数类型符,可省略。- 是默认(只显示负号),空格 " " 让正数位补空格、负数补 -。


19 已知 n = -42,右对齐占 6 位,输出「 -42」。

输出:

复制代码
   -42

答案:

python 复制代码
f"{n:>6}"

💡 解析:负号也占一位宽度。6 位放「-42」共 3 字符,左侧补 3 个空格。对齐时符号已计入宽度,无需额外处理。


20 已知 nums = [3, -7, 12],逐行右对齐占 3 位,让个位对齐。

输出:

复制代码
  3
 -7
 12

答案:

python 复制代码
for x in nums:
    print(f"{x:>3}")

💡 解析 :统一宽度 3 + 右对齐 >,正负数个位自然对齐。也可以用 {x: d}(空格占位),但 >3 对齐更可控。


三、精度与数值

小数位 .Nf、百分比 %、千分位 ,、科学计数 e。这些是数据展示的高频需求。


21 已知 pi = 3.141592653589793,保留 2 位小数。

输出:

复制代码
3.14

答案:

python 复制代码
f"{pi:.2f}"

💡 解析.2f = 精度 2 + 定点数类型 f。会四舍五入到 2 位。这是最常用的浮点格式化,日常 90% 的场景。


22 已知 pi = 3.141592653589793,保留 5 位小数。

输出:

复制代码
3.14159

答案:

python 复制代码
f"{pi:.5f}"

💡 解析.5f 同理,精度改为 5。位数越多越接近原值,但注意浮点本身精度有限,别迷信过多小数位。


23 已知 ratio = 0.875,输出百分比「87.50%」。

输出:

erlang 复制代码
87.50%

答案:

python 复制代码
f"{ratio:.2%}"

💡 解析% 类型会自动乘 100 并加 %。.2 控制百分比的小数位。比手写 ratio*100 再拼 % 干净得多。


24 已知 ratio = 0.875,输出整数百分比「88%」。

输出:

shell 复制代码
88%

答案:

python 复制代码
f"{ratio:.0%}"

💡 解析.0% 不保留小数。陷阱 :Python 格式化用「银行家舍入」(四舍六入五成双),如 0.825 会得到 82% 而非 83%,对账时要留意。


25 已知 n = 1234567,加千分位分隔符。

输出:

复制代码
1,234,567

答案:

python 复制代码
f"{n:,}"

💡 解析 :逗号 , 是千分位分组符,每三位加一个逗号。展示金额、人口、大数时必备,可读性提升明显。


26 已知 money = 1234567.891,千分位 + 2 位小数。

输出:

复制代码
1,234,567.89

答案:

python 复制代码
f"{money:,.2f}"

💡 解析,.2f 可组合:,.2f = 千分位 + 2 位小数。顺序是 [,][.precision][type],逗号在前。


27 已知 a = 123456,科学计数法保留 2 位小数。

输出:

复制代码
1.23e+05

答案:

python 复制代码
f"{a:.2e}"

💡 解析e 类型输出科学计数法(小写 e),.2 控制尾数小数位。这是科学计数法格式化的常用写法。


28 已知 a = 123456,科学计数法保留 3 位小数。

输出:

复制代码
1.235e+05

答案:

python 复制代码
f"{a:.3e}"

💡 解析 :与上一题对比:尾数从 1.231.235(第三位是 5,前一位 4 进成 5)。大写 E 用 :.3E1.235E+05


29 已知工号 num = 7,补零成 6 位编号「000007」。

输出:

复制代码
000007

答案:

python 复制代码
f"{num:06d}"

💡 解析06d = 补零到宽 6 + 十进制整数。d 对整数可省略(06 也行),但写上更明确。生成单据号、流水号常用。


30 已知 x = 3.14,补零占 8 位并保留 2 位小数,输出「0003.14」。

输出:

yaml 复制代码
0003.14

答案:

python 复制代码
f"{x:08.2f}"

💡 解析08.2f = 补零到总宽 8 + 2 位小数。「3.14」占 4 位,前补 4 个 0 凑满 8 位。宽度是包含小数点和符号的总宽度。


四、进制转换

b o x X 对应二、八、十六进制,# 加前缀,宽度与补零同样适用。底层、编码、地址场景高频。


31 已知 n = 10,输出二进制「1010」。

输出:

yaml 复制代码
1010

答案:

python 复制代码
f"{n:b}"

💡 解析b = binary。等价于 bin(n) 但不带 0b 前缀。位运算、掩码展示时常用。


32 已知 n = 64,输出八进制「100」。

输出:

复制代码
100

答案:

python 复制代码
f"{n:o}"

💡 解析o = octal。64 的八进制是 100(64 = 1×64 + 0×8 + 0×1)。文件权限位常用八进制。


33 已知 n = 255,输出小写十六进制「ff」。

输出:

复制代码
ff

答案:

python 复制代码
f"{n:x}"

💡 解析x = 小写 hex。255 = FF。颜色值、字节、编码场景最常见的小写十六进制。


34 已知 n = 255,输出大写十六进制「FF」。

输出:

复制代码
FF

答案:

python 复制代码
f"{n:X}"

💡 解析 :大写 X 输出大写字母。颜色码 #FFFFFF、MAC 地址、硬件 ID 习惯用大写,按场合选 xX


35 已知 n = 10,输出带前缀二进制「0b1010」。

输出:

复制代码
0b1010

答案:

python 复制代码
f"{n:#b}"

💡 解析# 选项加上进制前缀(0b / 0o / 0x)。加了前缀的字符串能被 int(s, 0)eval 反向解析回来。


36 已知 n = 255,输出带前缀小写十六进制「0xff」。

输出:

复制代码
0xff

答案:

python 复制代码
f"{n:#x}"

💡 解析#x = 带前缀 + 小写 hex。要大写带前缀用 #X0XFF(前缀也大写)。


37 已知 n = 5,二进制补零占 8 位「00000101」。

输出:

复制代码
00000101

答案:

python 复制代码
f"{n:08b}"

💡 解析08b = 补零到宽 8 + 二进制。展示字节、寄存器位时凑满 8/16 位,看清高位 0 是基本操作。


38 已知 n = 255,大写十六进制补零占 4 位「00FF」。

输出:

复制代码
00FF

答案:

python 复制代码
f"{n:04X}"

💡 解析04X = 补零到宽 4 + 大写 hex。颜色码补位很实用:000255FF,凑两位才像颜色值。


39 已知 n = 10,二进制并显示正号「+1010」。

输出:

diff 复制代码
+1010

答案:

python 复制代码
f"{n:+b}"

💡 解析+ 与进制类型可组合。+ 在类型符前,显示正负号。调试有符号数值的位表示时有用。


40 已知 n = 255,带前缀小写十六进制补零占 6 位「0x00ff」。

输出:

复制代码
0x00ff

答案:

python 复制代码
f"{n:#06x}"

💡 解析关键点 :加 # 后,前缀 0x 也计入宽度。宽 6 = 0x + 4 位补零 = 0x00ff。模拟内存地址、指针风格时常用。


五、截断与日期

.N 对字符串是「截断」而非小数位;日期则用 {dt:%格式} 直接调用 strftime 规则。本节统一用 dt = datetime(2024, 1, 1, 14, 30, 45)


41 已知 s = "Hello World",截断为前 5 个字符。

输出:

复制代码
Hello

答案:

python 复制代码
f"{s:.5}"

💡 解析易错点.N 对字符串是「最大字符数截断」,不是小数位!"Hello World" 取前 5 字符 → Hello。这与浮点的 .2f 语义不同,别混。


42 已知 s = "Python",截断为 4 字符后居中占 8 宽,输出「 Pyth 」。

输出:

css 复制代码
[  Pyth  ]

答案:

python 复制代码
f"[{s:^8.4}]"

💡 解析 :对齐与精度可组合,格式规范顺序是 [fill][align][width][.precision][type]。先截断为 Pyth,再居中宽 8。写法 ^8.4


43 用 dt = datetime(2024, 1, 1, 14, 30, 45),输出「2024-01-01」。

输出:

yaml 复制代码
2024-01-01

答案:

python 复制代码
f"{dt:%Y-%m-%d}"

💡 解析 :f-string 中 {dt:后跟 strftime 格式} 等价于 dt.strftime("%Y-%m-%d"),但更简洁。%Y 四位年、%m 补零月、%d 补零日。


44 用同一个 dt,输出时间「14:30:45」。

输出:

makefile 复制代码
14:30:45

答案:

python 复制代码
f"{dt:%H:%M:%S}"

💡 解析%H 24 小时制补零、%M 分、%S 秒。日志时间戳的标准格式。


45 用同一个 dt,输出中文日期「2024年01月01日」。

输出:

yaml 复制代码
2024年01月01日

答案:

python 复制代码
f"{dt:%Y年%m月%d日}"

💡 解析 :strftime 格式串里可夹中文字符。%Y年%m月%d日 直接产出中文日期。注意冒号后整个串都是格式,汉字会原样输出。


46 用同一个 dt,输出带微秒的时间「14:30:45.000000」。

输出:

makefile 复制代码
14:30:45.000000

答案:

python 复制代码
f"{dt:%H:%M:%S.%f}"

💡 解析%f 是 6 位微秒。这里的 dt 微秒为 0,所以补零成 000000。高精度时间戳、性能计时常用。


47 用同一个 dt,输出英文星期全称「Monday」。

输出:

复制代码
Monday

答案:

python 复制代码
f"{dt:%A}"

💡 解析%A = 星期全称(2024-01-01 是周一)。%a 是缩写 Mon%w 是数字星期(0=周日)。


48 用同一个 dt,12 小时制输出「02:30:45 PM」。

输出:

makefile 复制代码
02:30:45 PM

答案:

python 复制代码
f"{dt:%I:%M:%S %p}"

💡 解析%I 12 小时制补零、%p 是 AM/PM。14 点 → 02 PM。面向用户的本地化时间常用这套。


49 用同一个 dt,输出「2024/01/01 14:30」。

输出:

yaml 复制代码
2024/01/01 14:30

答案:

python 复制代码
f"{dt:%Y/%m/%d %H:%M}"

💡 解析 :日期与时间可自由拼接,分隔符 / 空格 : 都按字面输出。%M 既是分(在时间),也是月(%m)------大小写别搞错。


50 用同一个 dt,输出「01-Jan-2024」(日月年 + 月份英文缩写)。

输出:

复制代码
01-Jan-2024

答案:

python 复制代码
f"{dt:%d-%b-%Y}"

💡 解析%b = 月份英文缩写(Jan)。报表、票据日期常这么写。%B 是全称(January)。组合不同 specifier 可造出任意本地化格式。


六、综合实战

把前面学的拼起来:对齐表格、进度条、掩码、单位换算、分级判断。贴近真实业务场景。


51 已知 goods = [("苹果", 3, 5.5), ("香蕉", 2, 3.2), ("西瓜", 1, 12.8)],打印对齐的价目表(名称左对齐,数量与单价右对齐)。

输出:

复制代码
苹果  数量 单价
苹果    3  5.50
香蕉    2  3.20
西瓜    1 12.80

答案:

python 复制代码
for name, qty, price in goods:
    print(f"{name:<4}{qty:>4}{price:>6.2f}")

💡 解析中文陷阱<4 按「字符数」算,中文「苹果」是 2 字符补 2 空格,但显示上中文占双宽,所以肉眼会错位。要让中文严格对齐,需按「显示宽度」补------用 wcwidth 库或手写 len 折算。数字部分因等宽对齐是齐的。


52 已知 percent = 0.73,打印进度条「███████░░░ 73%」(总 10 格)。

输出:

css 复制代码
[███████░░░] 73%

答案:

python 复制代码
filled = int(percent * 10)
f"[{'█' * filled}{'░' * (10 - filled)}] {percent:.0%}"

💡 解析 :花括号里可放任意表达式,包括字符串乘法。实心块 乘已填充格数,空块 乘剩余。百分比用 .0%。下载/处理进度条的经典写法。


53 已知字节数 size = 1536,换算并输出「1.50 KB」(1024 进制,保留 2 位)。

输出:

复制代码
1.50 KB

答案:

python 复制代码
def fmt_size(n):
    for unit in ["B", "KB", "MB", "GB"]:
        if n < 1024:
            return f"{n:.2f} {unit}"
        n /= 1024
    return f"{n:.2f} TB"

fmt_size(1536)

💡 解析 :循环找合适单位,每次除 1024。f-string 在 return 里把数值与单位拼好。文件大小、流量展示的通用函数。


**54 已知银行卡号 card = "6225880212345678",只显示前 4 和后 4 位,中间用 ******** 掩,输出「6225 ******5678」。

输出:

markdown 复制代码
6225 ********5678

答案:

python 复制代码
f"{card[:4]} ********{card[-4:]}"

💡 解析 :花括号里用切片 card[:4] 取前 4、card[-4:] 取后 4,中间用字面星号。脱敏展示账号、手机号的标准手法。


55 已知 dept="CS"grade=2023num=7,合成学号「CS-2023-0007」(序号补零 4 位)。

输出:

复制代码
CS-2023-0007

答案:

python 复制代码
f"{dept}-{grade}-{num:04d}"

💡 解析 :模板与格式说明符混用:前两段直接插值,最后一段 {num:04d} 补零到 4 位。生成学号、订单号、凭证号的典型模式。


56 已知 score = 85,用嵌套三元输出等级:≥85 优秀、≥75 良好、≥60 及格、否则不及格。

输出:

复制代码
优秀

答案:

python 复制代码
f"{'优秀' if score >= 85 else '良好' if score >= 75 else '及格' if score >= 60 else '不及格'}"

💡 解析:三元可嵌套,实现多分支。但超过三层就难读了,生产代码里更推荐用函数 + if/elif。这里演示「f-string 内可放复杂逻辑」。


57 已知摄氏度 c = 25,输出华氏度「25°C = 77.0°F」(公式 F = C×9/5+32,保留 1 位)。

输出:

ini 复制代码
25°C = 77.0°F

答案:

python 复制代码
f"{c}°C = {c * 9 / 5 + 32:.1f}°F"

💡 解析 :表达式 c * 9 / 5 + 32 直接放在花括号并套 .1f。运算与格式化一次完成,无需中间变量。° 用 Unicode 符号。


58 已知 total = 1234567.891,输出带千分位的汇总行「总计:1,234,567.89」。

输出:

makefile 复制代码
总计:1,234,567.89

答案:

python 复制代码
f"总计:{total:,.2f}"

💡 解析,.2f = 千分位 + 2 位小数,金额展示的黄金组合。中文「总计:」前缀直接拼在模板里。报表底部的合计行常用。


59 已知 name="小明"age=18score=95.5,合成 CSV 一行「小明,18,95.5」。

输出:

复制代码
小明,18,95.5

答案:

python 复制代码
f"{name},{age},{score:.1f}"

💡 解析 :用逗号拼接各字段,score.1f 统一为 1 位小数。导出 CSV、日志结构化字段的简洁写法,比 ",".join() 更可控。


60 已知 title = "系统菜单",用 - 填充居中占 20 字符宽,做一条分隔标题行。

输出:

diff 复制代码
--------系统菜单--------

答案:

python 复制代码
f"{title:-^20}"

💡 解析-^20 = 用 - 填充、居中、宽 20。「系统菜单」4 字符,左右各补 8 个 -,字符数共 20。做菜单标题、分隔线、章节条都很合适。


总结与速查

六大模块一句话回顾

模块 核心能力 关键符
基础插值 变量/表达式/方法直接进 {} {x}{x=}
对齐填充 方向、宽度、填充字符 < ^ >fill0
精度数值 小数/百分比/千分位/科学计数 .Nf%,e
进制转换 二/八/十六进制、前缀 b o x X#
截断日期 字符串截断、strftime .N%Y%m%d
综合实战 业务场景组合 ---

格式说明符速查表

格式说明符的完整语法是:

ini 复制代码
{变量:[填充][对齐][符号][#][0][宽度][.精度][类型]}
写法 含义 假定值 结果
{x} 插入变量值 x=42 42
{x=} 调试:变量名=值 x=42 x= 42
{s:<10} 左对齐宽 10 s="abc" abc
{s:>10} 右对齐宽 10 s="abc" abc
{s:^10} 居中宽 10 s="abc" abc
{s:-^10} - 填充居中宽 10 s="abc" ---abc----
{n:05} 数字补零宽 5 n=42 00042
{n:+d} 强制显示正负号 n=42 +42
{pi:.2f} 2 位小数定点数 pi=3.14159 3.14
{r:.2%} 百分比 2 位小数 r=0.875 87.50%
{n:,} 千分位分隔 n=1234567 1,234,567
{a:.2e} 科学计数 2 位 a=123456 1.23e+05
{n:b} 二进制 n=10 1010
{n:o} 八进制 n=64 100
{n:x} / {n:X} 小写/大写十六进制 n=255 ff / FF
{n:#x} 带前缀十六进制 n=255 0xff
{s:.5} 字符串截断 5 字符 s="Hello World" Hello
{dt:%Y-%m-%d} 日期格式化 dt=datetime 2024-01-01

七大易错点

  1. 字符串补零不能写 05 ------ {s:05} 会报错,要写 {s:0>5}(题 16)。05 零填充简写只对数字生效。
  2. .N 对字符串是截断、对浮点是小数位 ------ {s:.5} 取前 5 字符,{pi:.2f} 保留 2 位小数,语义不同(题 41)。
  3. 中文按字符数对齐会错位 ------ <8 按「字符数」算,中文显示占双宽,肉眼对不齐,需按显示宽度补(题 17、51)。
  4. 百分比用银行家舍入 ------ 0.825:.0%82% 而非 83%,对账场景留意(题 24)。
  5. # 前缀计入宽度 ------ {n:#06x} 宽 6 包含 0x 两个字符(题 40)。
  6. 内外引号要区分 ------ f-string 内部再出现引号时,内外用不同引号(外双内单);3.12+ 才允许同种引号嵌套(题 8)。
  7. %M 是分、%m 是月 ------ strftime 里大小写含义不同,别搞错(题 49)。

进阶方向

手册聚焦 f-string,字符串格式化还有三条路线可对比学习:

  • str.format() 方法 ------ 位置/关键字参数、{0} 占位,适合模板复用;
  • % 老式格式化 ------ "%s %d" % (a, b),legacy 代码常见,新代码不推荐;
  • string.Template ------ $name 占位,最安全,适合用户可编辑模板。

掌握 f-string 的格式说明符后,三者对照学习会更通透。


这份手册若对你有帮助,点赞收藏就是最好的鼓励。错题反复回看对应模块的解析,会有新体会。 专注于原创短更,便于碎片化涉猎知识。希望我走过的路,留下的痕迹,能对你有所启发和帮助。转发请注明原处,平台投稿请私信。

相关推荐
2601_962299881 小时前
Python编写Linux命令指南
linux·python·开发·命令·指南
此冬歌咏1 小时前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
zhanghaha13141 小时前
Python进阶教程:23_Scrapy 爬虫框架 零基础超详细教程
python·信息可视化
爱读源码的大都督2 小时前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
“AI国潮设计-小江”2 小时前
【Python实战】SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
k4m7v2pz2 小时前
从 Python 搬到 Rust:pyglet MIDI DAW 变成 egui 鬼畜采样器的迁移复盘
开发语言·python·rust
tryCbest2 小时前
FastAPI中passlib包的作用
python·fastapi·passlib
心中有你02142 小时前
Python Tkinter 情侣恋爱日记桌面小程序(本地文件存储,无数据库)
开发语言·python
PFFstronger2 小时前
从 0 到 1 搭建接口自动化测试框架:分层架构 + 数据驱动 + 接口依赖编排
python·架构·自动化