pin_drop当前位置:知识文库 ❯ 图文
Python百分号格式化
百分号(%)格式化是Python最早的字符串格式化方式,借鉴自C语言的printf格式。虽然如今有了format()和f-string等更现代的方式,但百分号格式化在旧代码中仍然广泛存在,理解它对阅读和维护遗留代码至关重要。本篇教程将详细介绍%格式化的各种占位符、宽度和精度控制等内容。
基本用法
百分号格式化的基本语法为:"格式字符串" % (值1, 值2, ...)
代码示例
name = "张三"
age = 25
print("姓名:%s,年龄:%d岁" % (name, age))当只有一个值时,可以省略括号:
代码示例
print("你好,%s" % "世界")格式化符号
常用占位符
代码示例
代码示例
print("字符串: %s" % "Hello")
print("整数: %d" % 42)
print("浮点数: %f" % 3.14159)
print("字符: %c" % 65)
print("八进制: %o" % 64)
print("十六进制: %x" % 255)
print("科学计数: %e" % 12345.6789)
print("百分号: 100%%")宽度和精度
宽度控制
使用%Nd指定整数的最小宽度,不足时用空格填充:
代码示例
print("[%5d]" % 42)
print("[%05d]" % 42)
print("[%-5d]" % 42)精度控制
使用%.Nf指定浮点数的小数位数:
代码示例
print("默认: %f" % 3.14159)
print("两位小数: %.2f" % 3.14159)
print("四位小数: %.4f" % 3.14159)
print("无小数: %.0f" % 3.14159)宽度和精度组合
使用%M.Nf同时指定宽度和精度(M为总宽度,N为小数位数):
代码示例
print("[%8.2f]" % 3.14159)
print("[%-8.2f]" % 3.14159)
print("[%08.2f]" % 3.14159)字符串宽度和精度
代码示例
print("[%10s]" % "Hi")
print("[%-10s]" % "Hi")
print("[%.3s]" % "Python")代码示例
综合运用百分号格式化:
代码示例
print("=" * 40)
print("%-15s %8s %8s" % ("商品", "单价", "数量"))
print("-" * 40)
print("%-15s %8.2f %8d" % ("苹果", 5.50, 10))
print("%-15s %8.2f %8d" % ("香蕉", 3.80, 20))
print("%-15s %8.2f %8d" % ("橙子", 6.20, 15))
print("-" * 40)
total = 5.50 * 10 + 3.80 * 20 + 6.20 * 15
print("%-15s %8.2f" % ("合计", total))
pi = 3.14159265358979
print("\n圆周率的不同精度表示:")
print("2位: %.2f" % pi)
print("6位: %.6f" % pi)
print("10位: %.10f" % pi)
print("科学计数: %.4e" % pi)注意事项
提示:百分号格式化是Python最早的格式化方式,在新代码中推荐使用f-string
提示:
%s可以格式化任何类型,它会自动调用str()转换提示:
%d只能格式化整数,传入浮点数会截断小数部分提示:多个占位符时,值必须用元组包裹,且数量要匹配
提示:输出百分号本身需要使用
%%提示:宽度控制中的负号表示左对齐,零表示用0填充
小结
本篇教程详细介绍了Python百分号格式化的用法,包括各种占位符(%s、%d、%f等)、宽度和精度控制,以及对齐和填充方式。虽然百分号格式化在新代码中已不推荐使用,但理解它对于阅读旧代码和维护遗留项目仍然非常重要。
练习题
练习1
使用百分号格式化输出以下信息:姓名(字符串,左对齐,宽度8)、年龄(整数,右对齐,宽度4)、成绩(浮点数,保留1位小数,右对齐,宽度6)。自行设定数据。
练习2
使用百分号格式化将数字 255 分别以十进制、八进制、十六进制(大小写)和科学计数法的形式输出。
常见问题
百分号格式化和format()有什么区别?
百分号格式化是Python最早的格式化方式,语法借鉴自C语言的printf。format()方法更灵活,支持位置参数、关键字参数和复杂的格式规范。在新代码中推荐使用f-string,其次是format()。
%s和%d有什么区别?
%s可以格式化任何类型,它会自动调用str()将值转换为字符串。%d只能格式化整数,如果传入浮点数会截断小数部分,传入字符串则会报错。
如何在格式化字符串中输出百分号本身?
需要使用%%来表示一个普通的百分号字符。例如"完成度:%d%%" % 80会输出"完成度:80%"。
%.2f和%5.2f有什么区别?
%.2f只指定小数位数为2位,不限制总宽度。%5.2f指定总宽度为5(包含小数点),小数位数为2位,如果数值不够5个字符会在左边填充空格。
多个占位符时必须用元组吗?
是的,当有多个占位符时,值必须用元组包裹(用小括号),且数量要与占位符匹配。如果只有一个占位符,可以省略括号。
小贴士
百分号格式化虽然是最古老的Python字符串格式化方式,但在维护旧代码时仍然经常遇到。%s是最通用的占位符,它可以处理任何类型。如果你需要精确控制输出格式(如表格对齐),宽度和精度控制非常有用。记住:在新项目中推荐使用f-string,它更简洁、更高效。
本文涉及AI创作
内容由AI创作,请仔细甄别