Python里字符串Format时的一个易错“点”
这是一篇很小的笔记,原因是我做学习通的时候见到了这个题:
当时看了一会儿发现没有符合自己想法的答案,然后就脑袋一热选了C,结果当然是错了...
看了一眼这个format的字符串对象,发现有个 {:7.2f}
的写法。既然 {:.2f}
是保留两位小数,那么这个 7 一定是保留七位整数吧!
但是定睛一看,不对啊,这答案也没有填充满7位啊!打开搜索引擎查了一下 Python format
,找了几篇文章都没有强调这件事,看了老久发现菜鸟教程提到了个“宽度”,我心里一惊,这就是我想要的结果。
问题出现在哪里呢?
7.2f
指的其实是保留2位小数的同时保证数字宽度为7。之所以说是宽度,因为整个数字 包含小数点 都被算在内。 例如:
数字 | 宽度 |
---|---|
4 | 1 |
3.14 | 4 |
450 | 3 |
14.43 | 5 |
再返回去看上面那道题,其实是选B,101/7
保留2位小数得14.43
,而这个数值的宽度只有5,所以默认要在数字之前补充两个空格: 14.43
。如果用Python的左填充写法更明显:
print("{:0>7.2f}".format(14.43))
# 0014.43
了解了这个之后我突然想起来,C语言里的百分号%格式化符其实也是同样有printf("%7.2f",14.43)
这种写法的,7这个宽度同样是把小数点算入在内。
写这篇笔记也是为了加深咱自己的印象...希望以后不要再犯这种错误( ̄ε(# ̄)☆╰╮o( ̄皿 ̄///)