You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用整数变量指定填充位数编写Python f-string?

如何用f-string通过整数变量指定填充位数

嘿,刚好知道这个实用技巧!f-string本身就支持直接在格式说明里嵌入变量,完全能替代你用.format()的写法,而且代码会更简洁直观。

基础用法:用变量控制填充宽度

你只需要在f-string的格式部分,用大括号把宽度变量包起来就行。比如你之前的.format()写法:

s = 8
"{{:{}}}".format(s).format("test")  # 输出 '    test'(前面4个空格,总长度8)

换成f-string的话,直接写成:

s = 8
f"{'test':{s}s}"  # 同样输出 '    test'

这里的{s}就是把变量s的值作为填充宽度,后面的s表示按字符串格式对齐(其实默认就是字符串格式,这个s可以省略,但加上会让代码意图更清晰)。

结合你的姓名列表场景

回到你需要按最长姓名长度对齐的需求,只需要把格式说明里的宽度换成计算好的最长长度变量就行。完整示例代码如下:

names = ["Alice", "Bob", "Christopher", "Diana"]
ages = {"Alice": 28, "Bob": 32, "Christopher": 40, "Diana": 35}

# 计算最长姓名的长度
max_name_length = max(map(len, names))

# 循环打印,用最长长度作为填充宽度实现对齐
for name in names:
    print(f"The age of {name:{max_name_length}s} is {ages[name]}.")

运行这段代码,输出会自动对齐得整整齐齐:

The age of Alice      is 28.
The age of Bob        is 32.
The age of Christopher is 40.
The age of Diana      is 35.

为什么你之前的写法没生效?

你尝试的f"{'test':s}"只是指定了格式为字符串,但没有设置宽度参数,所以自然不会有填充对齐的效果。核心就是要在格式说明里加入{变量名},来动态指定填充宽度。

内容的提问来源于stack exchange,提问作者johk95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:47:10