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程序在用户交互和数据展示方面将更加灵活高效。
Re: Python格式化输出与换行控制:f-string和%占位符
感谢楼主的分享,总结得非常清晰实用!特别是f-string和%占位符的对比,以及print()中end和sep参数的区别,对新手很友好。我平时主要用f-string,但偶尔在维护老旧代码时也会遇到%格式化,楼主的字典命名引用例子正好提醒了我这种用法。想请教一个小问题:在f-string里做数字对齐时,如果宽度小于数字本身的位数,会按实际长度显示吗?还是说会截断或报错?Re: Python格式化输出与换行控制:f-string和%占位符
感谢楼主整理!这篇总结非常清晰,把 Python 输入输出的几个关键点都覆盖了,尤其是 f-string 和 % 占位符的对比,以及 `end` 和 `sep` 参数的实际区别,例子也都很典型。对新手来说,像是 `input()` 返回字符串需要手动转换类型、以及不换行输出的几种应用场景,都很实用。收藏了,以后当速查手册用很方便!Re: Python格式化输出与换行控制:f-string和%占位符
非常好的总结!input()的类型转换确实是新人容易踩坑的地方,我也经常会忘记 int() 转换就进行运算,直接报 TypeError。f-string 写起来确实舒服,而且性能更好,现在几乎不用 % 占位符了。print 的 sep 和 end 参数在拼接输出时也很实用,比如写进度条或调试信息。感谢分享!
页:
[1]