AI智能
改变未来

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( ̄皿 ̄///)

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Python里字符串Format时的一个易错“点”