8. 格式化输出进阶

f-string 高级技巧

浮点数四舍五入

python
num = 3.1415926
print(f"{num:.2f}")   # 保留两位小数 → 3.14
print(f"{num:.4f}")   # 保留四位小数 → 3.1416

int_num = 123.987
print(f"{int_num:.0f}")  # 整数舍入(0位小数)→ 124

▶ 运行结果:

输出
3.14
3.1416
124

百分比格式化

python
rate = 0.758
print(f"{rate:.2%}")  # 75.80%
print(f"{rate:.1%}")  # 75.8%

rate2 = 0.3
print(f"{rate2:.0%}") # 30%

▶ 运行结果:

输出
75.80%
75.8%
30%

前导零设置

python
num1 = 5
num2 = 123
print(f"{num1:03d}")   # 3位长度,不足补零 → 005
print(f"{num2:05d}")   # 5位长度 → 00123

decimal_num = 7.89
print(f"{decimal_num:06.2f}")  # 总长度6,保留2位小数 → 007.89

▶ 运行结果:

输出
005
00123
007.89

大数字格式化(千分位分隔符)

python
big_num = 1234567.89
print(f"{big_num:,}")     # 1,234,567.89
print(f"{big_num:,.2f}")  # 1,234,567.89(结合小数保留)

int_big = 987654321
print(f"{int_big:,}")     # 987,654,321

▶ 运行结果:

输出
1,234,567.89
1,234,567.89
987,654,321

文本对齐 + 自定义填充字符

python
text = "Python"
print(f"{text:<10}")   # 左对齐,总长度10 → "Python    "
print(f"{text:>10}")   # 右对齐,总长度10 → "    Python"
print(f"{text:^10}")   # 居中对齐       → "  Python  "

# 填充自定义字符(仅支持一个字符)
print(f"{text:-<10}")  # 左对齐,填充 - → "Python----"
print(f"{text:=>10}")  # 右对齐,填充 = → "====Python"
print(f"{text:*^10}")  # 居中,填充 *  → "**Python**"

▶ 运行结果:

输出
Python    
    Python
  Python  
Python----
====Python
**Python**

日期时间格式化

python
import datetime
now = datetime.datetime.now()

print(f"{now:%Y-%m-%d}")          # 年-月-日 → 2025-11-13
print(f"{now:%Y/%m/%d %H:%M:%S}") # 年/月/日 时:分:秒 → 2025/11/13 17:40:09
print(f"{now:%H:%M:%S}")          # 时:分:秒 → 17:40:09
print(f"{now:%A, %B %d, %Y}")     # 星期, 月份 日期, 年 → Monday, November 13, 2025

today = datetime.date.today()
print(f"{today:%d/%m/%Y}")        # 日期/月/年 → 13/11/2025

▶ 运行结果:

输出
2026-07-19
2026/07/19 11:09:43
11:09:43
Sunday, July 19, 2026
19/07/2026

调试技巧(f-string 便捷调试)

python
x = 10
y = 20
print(f"{x = }")       # 直接显示变量名和值 → x = 10
print(f"{y = }")       # y = 20
print(f"{x + y = }")   # x + y = 30

num = 3.1415
print(f"{num = :.2f}") # 结合格式 → num = 3.14

▶ 运行结果:

输出
x = 10
y = 20
x + y = 30
num = 3.14

动态设置宽度和精度

python
width = 8
precision = 2
value = 123.456
print(f"{value:{width}.{precision}f}")  # 总宽度8,保留2位 → "  123.46"

▶ 运行结果:

输出
  123.46

列表去掉 [ ] 输出

python
my_list = [1, 2, 3, 4]

# 方法1:用 join() 拼接
print(' '.join(map(str, my_list)))   # 1 2 3 4
print(','.join(map(str, my_list)))   # 1,2,3,4

# 方法2:用 * 解包列表
print(*my_list)                      # 1 2 3 4
print(*my_list, sep=',')             # 1,2,3,4

# 方法3:str() + 字符处理
print(str([my_list]).strip("]").strip("["))
print(str([my_list]).strip("]").strip("[").replace(",", " "))

▶ 运行结果:

输出
1 2 3 4
1,2,3,4
1 2 3 4
1,2,3,4
1, 2, 3, 4
1  2  3  4

输出二进制数

Python 提供多种方式输出二进制格式的整数:

python
num = 10

# 使用 format() 方法
print('{0:b}'.format(num))  # 1010

# 使用 f-string
print(f'{num:b}')           # 1010

# 使用 bin() 函数(含 0b 前缀)
binary_str = bin(num)[2:]   # 去掉前缀 '0b'
print(binary_str)           # 1010

▶ 运行结果:

输出
1010
1010
1010