Python中如何用format方法对齐格式化输出布尔值?
解决Python布尔值对齐格式化输出的问题
我之前也踩过这个坑!你遇到的问题核心在于:当直接用对齐格式符但没指定类型时,Python会把布尔值默认当成整数(True=1,False=0)处理,所以才会出现要么不对齐、要么输出数字的情况。用format方法实现布尔值正确对齐其实很简单,只要明确告诉它按字符串类型来格式化就行,下面给你几种可行的写法:
方法1:使用!s转换符显式转字符串
这个写法会先把布尔值转换成字符串"True"或"False",再应用对齐规则:
print("{!s:<10} {!s:<10}".format(True, False)) print("{!s:<10} {!s:<10}".format(False, True))
输出效果:
True False False True
方法2:在格式规范中指定类型s
和上面的效果完全一致,只是把类型说明放在格式符里,写法更紧凑:
print("{:<10s} {:<10s}".format(True, False)) print("{:<10s} {:<10s}".format(False, True))
调整对齐方式
如果需要右对齐或居中对齐,把格式符里的<换成>(右对齐)或^(居中)即可:
# 右对齐示例 print("{:>10s} {:>10s}".format(True, False)) # 居中对齐示例 print("{:^10s} {:^10s}".format(True, False))
对应的输出:
True False True False
为什么之前的写法会出错?
如果只写{:10}这种不带类型的格式符,Python会根据变量的默认类型来格式化——布尔值在Python里是int的子类,所以会被转成1或0,自然就出现了你说的“输出变成整数值”的问题;而空占位符{}没有指定宽度,所以无法实现对齐效果。
这样处理后,就能保证布尔值以原始的字符串形式(True/False)整齐输出啦!
内容的提问来源于stack exchange,提问作者rishi narian
相关产品推荐
相关产品推荐

