本节书摘来自华章计算机《python语言程序设计》一书中的第3章,第3.6节,作者:[美]梁勇(y. daniel liang) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
关键点:你可以使用format函数返回格式化的字符串。
我们常常希望显示某种格式的数字。例如:已知数额和年利率,下面是计算利息的代码。

https://yqfile.alicdn.com/bc6bdeaf10f24d233b1c89ce68c5a4654623a722.png"
因为利息数是货币,因此我们希望只是显示小数点后两位数。为了达到这点要求,我们编写如下代码。
然而,格式依旧不正确。小数点后应该有两位小数,就像16.40而不是16.4。你可以使用format函数来修改它,如下所示。
调用这个函数的语法是:

https://yqfile.alicdn.com/061d06312497b0cca9438f3f5aca11b2a632f1a2.png" >
上面的item是数字或者字符串,而格式说明符(format-specifier)指定条目item的格式。此函数返回一个字符串。
3.6.1 格式化浮点数
如果条目item是一个浮点值,你可以用标识符以“width.precisionf”的形式给出格式的宽度和精确度。这里的宽度width指定得到的字符串的宽度,精确度precision指定小数点后数字的个数,而f被称为转换码,它为浮点数设定格式。例如:
显示
这里的方箱子(□)表示一个空格。注意:小数点占一个空格。
函数format(“10.2f”)将数字格式化成宽度为10,包括小数点以及小数点后两位小数的字符串。这个数字被四舍五入到两个小数位。这样,在小数点前分配7个数字。如果在小数点前的数字小于7个,则在数字前插入空格。如果小数点前的数字个数大于7,则数字的宽度将会自动增加。例如:format(12345678.923,“10.2”)返回的是12345678.92,它的宽度为11。
你也可以省略宽度符。如果这样的话,它就被默认为是0。这样,宽度就会根据格式化这个数所需的宽度自动设置。例如:

https://yqfile.alicdn.com/dda04fb08c9e1239f99dcb75d16998af3db87c73.png
" >
显示:
3.6.2 用科学记数法格式化
如果你将转换码f变成e,数字将被格式化为科学记数法。例如:
符号“+”和“-”被算在宽度里。
3.6.3 格式化成百分数
可以使用转换码“%”将一个数字格式化成百分数。例如:
格式“10.2%”将数乘以100后加上符号“%”。符号%也被算在宽度里面。
3.6.4 调整格式
在默认情况下,一个数的格式是向右对齐的。可以将符号“<”放在格式说明符里指定得到的字符串是以指定的宽度向左对齐的。例如:
3.6.5 格式化整数
“d”、“x”、“o”和“b”转换码分别用来格式化十进制整数、十六进制整数、八进制整数和二进制整数。可以指定转换的宽度。例如:

https://yqfile.alicdn.com/44d7d1726c5242258773f06a2c423e592453e4db.png

https://yqfile.alicdn.com/d8ba76848c34a8fd10bc24aca6c3636ec53f733a.png
格式说明符“10d”指定将一个整数格式化为一个宽度为10的十进制数。格式说明符“10x”指定将一个整数格式化为一个宽度为10的十六进制数。
3.6.6 格式化字符串
可以用转换码s将一个字符串格式化为一个指定宽度的字符串。例如:

https://yqfile.alicdn.com/23f1ba8b4f8a281d22a808ce34ea365e56067d56.png
格式说明符“20s”指定字符串被格式化为宽度在20以内的字符串。在默认情况下,字符串是向左对齐的。为了向右对齐,在格式符里加入“>”符号。如果字符串比指定的宽度长,宽度将自动增加到字符串的宽度。
表3-4总结了这一小节介绍的格式说明符。

https://yqfile.alicdn.com/a7257984fec5575a82680f920d634679148a2e27.png
检查点
3.17 调用format函数,它的返回值是什么?
3.18 如果条目item的实际宽度大于格式符里指明的宽度会怎么样?
3.19 显示下面语句的输出:
3.20 显示下面语句的输出:
3.21 显示下面语句的输出:
3.22 显示下面语句的输出:
3.23 显示下面语句的输出:
3.24 显示下面语句的输出: