脚本专家 发表于 2026-7-16 11:00:00

Python格式化输出与换行控制:f-string和%占位符

Python程序与用户交互时,输入和输出是最基础的操作。input()函数获取用户输入,print()函数输出结果,而格式化输出则让数据显示更规范。本文将系统总结Python的输入输出核心用法,包括input()的字符串返回特性、f-string与%占位符两种主流格式化方式,以及print()函数中end和sep参数对换行与分隔符的控制。

## input()获取用户输入

input()会等待键盘输入,并将输入内容作为字符串返回。基本用法:


name = input("请输入你的名字:")
print(f"你好,{name}!")


如果需要数字,必须手动转换类型:


age = int(input("请输入你的年龄:"))
print(f"明年你就{age + 1}岁了")
height = float(input("请输入身高(米):"))


注意:input()在用户输入回车前会阻塞程序;所有输入均视为字符串;数字运算前务必用int()或float()转换,否则会引发TypeError。

## 格式化输出:f-string vs %占位符

### f-string(Python 3.6+)

f-string在字符串前加f或F,花括号内直接写变量或表达式,语法简洁且执行效率高。

基本用法:


name = "张三"
age = 25
print(f"姓名:{name},年龄:{age}")


支持表达式计算:


a, b = 10, 20
print(f"{a} + {b} = {a + b}")


数字格式化:


pi = 3.1415926
print(f"π的值:{pi:.2f}")   # 保留两位小数
print(f"π的值:{pi:.4f}")   # 保留四位小数


对齐与填充:


number = 42
print(f"数字:{number:>10}")   # 右对齐,宽度10
print(f"数字:{number:<10}")   # 左对齐
print(f"数字:{number:^10}")   # 居中对齐
print(f"数字:{number:0>10}")# 用0填充


### %占位符(传统兼容方式)

%格式化在Python所有版本中均可用,使用%操作符,通过格式符指定变量类型。

基本用法:


name = "李四"
age = 30
print("姓名:%s,年龄:%d" % (name, age))


常用格式符:%s字符串、%d十进制整数、%f浮点数、%x十六进制、%o八进制。

浮点数精度与宽度控制:


price = 99.99
print("价格:%.2f元" % price)      # 保留两位小数
print("价格:%10.2f元" % price)      # 宽度10,右对齐


多变量时用元组:


x, y, z = 10, 20, 30
print("x=%d, y=%d, z=%d" % (x, y, z))


支持字典形式的命名引用:


person = {"name": "王五", "age": 35}
print("姓名:%(name)s,年龄:%(age)d" % person)


## print()的换行与分隔符控制

print()函数默认在输出末尾添加换行符,该行为由end参数控制(默认'\n')。

### 默认换行


print("第一行")
print("第二行")
# 输出:
# 第一行
# 第二行


### 不换行输出

将end设为空字符串或空格:


print("Hello", end='')
print("World")
# 输出:HelloWorld

print("Hello", end=' ')
print("World")
# 输出:Hello World

print("Hello", end=', ')
print("World")
# 输出:Hello, World


### 自定义分隔符

可以使用制表符、多个空格或自定义字符串:


print("姓名", end='\t')
print("张三")
# 输出:姓名    张三

print("第一部分", end=' --- ')
print("第二部分")
# 输出:第一部分 --- 第二部分


### sep参数与end参数的区别

sep控制print内多个参数之间的分隔符(默认空格),end控制整个print输出结束后添加的字符。


print("a", "b", "c")                # 输出:a b c
print("a", "b", "c", sep=',')       # 输出:a,b,c

print("第一行", end=' | ')
print("第二行")
# 输出:第一行 | 第二行

print("x", "y", "z", sep='-', end=' -> ')
print("结束")
# 输出:x-y-z -> 结束


## 综合示例:用户信息录入与格式化输出

结合input、类型转换、f-string和%格式化,并演示不换行输出:


print("=== 用户信息录入 ===")
name = input("请输入姓名:")
age = int(input("请输入年龄:"))
height = float(input("请输入身高(米):"))

print(f"\n使用f-string格式化:")
print(f"姓名:{name:>10}")
print(f"年龄:{age:>10}岁")
print(f"身高:{height:>10.2f}米")

print(f"\n使用%占位符格式化:")
print("姓名:%10s" % name)
print("年龄:%10d岁" % age)
print("身高:%10.2f米" % height)

print(f"\n个人信息汇总:", end=' ')
print(f"姓名:{name}", end=', ')
print(f"年龄:{age}", end=', ')
print(f"身高:{height:.2f}")


## 总结

格式化输出选择:
- Python 3.6及以上优先使用f-string,简洁且性能好。
- 需兼容旧版本Python时,用%占位符或str.format()。
- 复杂格式(如对齐、填充、精度控制)两种方式均支持。

换行控制建议:
- 默认换行保持代码可读性。
- 当需要连续输出(如进度条、倒计时)时,使用end=''或end=' '。
- 输出列表等场景可通过sep参数自定义分隔符。

掌握这些技巧后,你的Python程序在用户交互和数据展示方面将更加灵活高效。

热心网友6 发表于 2026-7-16 11:05:00

Re: Python格式化输出与换行控制:f-string和%占位符

感谢楼主的分享,总结得非常清晰实用!特别是f-string和%占位符的对比,以及print()中end和sep参数的区别,对新手很友好。我平时主要用f-string,但偶尔在维护老旧代码时也会遇到%格式化,楼主的字典命名引用例子正好提醒了我这种用法。想请教一个小问题:在f-string里做数字对齐时,如果宽度小于数字本身的位数,会按实际长度显示吗?还是说会截断或报错?

热心网友6 发表于 2026-7-16 11:05:00

Re: Python格式化输出与换行控制:f-string和%占位符

感谢楼主整理!这篇总结非常清晰,把 Python 输入输出的几个关键点都覆盖了,尤其是 f-string 和 % 占位符的对比,以及 `end` 和 `sep` 参数的实际区别,例子也都很典型。对新手来说,像是 `input()` 返回字符串需要手动转换类型、以及不换行输出的几种应用场景,都很实用。收藏了,以后当速查手册用很方便!

热心网友6 发表于 2026-7-16 11:05:00

Re: Python格式化输出与换行控制:f-string和%占位符

非常好的总结!input()的类型转换确实是新人容易踩坑的地方,我也经常会忘记 int() 转换就进行运算,直接报 TypeError。f-string 写起来确实舒服,而且性能更好,现在几乎不用 % 占位符了。print 的 sep 和 end 参数在拼接输出时也很实用,比如写进度条或调试信息。感谢分享!
页: [1]
查看完整版本: Python格式化输出与换行控制:f-string和%占位符