0.前言
python 第一篇写的可能有点长,尽量还是不要写太长,阅读体验观感不大好,到时候自己找起来可能也不大方便,这篇主要介绍关于 format 显示的一些操作,其实应该是 c++、c 都学过的,但是好像我大一的时候没有认真学,或者我们大一学的就跟 shit 一样,一点不记得了,就记得 IDL 课上讲过,特此记录。
1.关于数字的格式化
1.1 关于常用的转换码
关于格式化浮点数,其实主要是 3 个关键点,第一你要多少的域宽,精度要多少,转换码要什么,可以先看一张图后面再看 jupyter Lab 运行的结果。
plus:下面的两张图是我用 TikZ 画出来的矢量图,源代码的话可以看 TikZ 实例那篇 blog.
- 域宽度,就是你整个格式化要多少个方格占,即可以有空方格,当你右对齐(默认)时,显示的宽度不到域宽度时,会自动的填充前面的空。
- 精度,顾名思义,不过这里是小数点后面保留几位,所以要注意域宽度、精度的联合控制,不能太宽,而精度不够,也不能精度太高而域宽度不够。
- 转换码主要就是你要显示什么类型的有 f(float)、e(exp)、%(percent) 就是浮点型和指数型还有百分号。
看一些具体的例子吧
#格式化,浮点型右对齐
print(format(51.7281,'10.2f'))
#科学记数法,右对齐
print(format(51.7281,'10.2e'))
#域宽度为9,右对齐
print(format(51.7281,'9.2f'))
#显示百分数,右对齐
print(format(52.7281,"10.2%"))
#显示百分数,左对齐
print(format(52.7281,'<10.2%'))
当你不设置<
左对齐时,当精度不够填充域宽度的时候,会自动用空白填充前面的空,直到达到域宽度为止。
符号 | 意义 |
---|---|
f | 浮点型 |
e | 科学记数法 |
% | 百分数 |
在转换码那里选择相应的就 ok, 试了试好像没 double型。
其作用的方式如下图:
其中,.
号也算一个域宽,所以一共 10 个方格要填充,由于保留小数点后 2 位,所以显示的数字一共 10 个域宽,又由于右对齐,所以。
1.2 关于进制的格式化
实际上关于进制和上面普通的转换码没什么区别,但是为了加以区别还是单写吧!
转换码 | 含义 |
---|---|
d | 十进制 |
x | 十六进制 |
o | 八进制 |
b | 二进制 |
#打印10进制的数字,左对齐
print(format(517281,'<10d'))
#打印16进制的数字,左对齐
print(format(517281,'<10x'))
#打印8进制的数字,默认右对齐
print(format(517281,'10o'))
#打印2进制的数字,默认右对齐
print(format(517281,'20b'))
其实只要会上面的那一套,剩下的现查现学即可了。
2.关于字符串的格式化
实际上,这部分也和上面也差不多,也是转换码的问题,其次是显示的是文本,即 string 吗~0~.
这个转换码还更简单就是 s
,看下面的例子:
#格式化字符串
print(format('我真的好累啊','<10s'))
#格式化字符串,右对齐默认填充
print(format('我真的好累啊','>10s'))
就是控制域宽,还有左对齐还是右对齐,再转换码那加入 s
即可。
3.总结
其实格式化还是挺简单的,只要控制好域宽度、精度、转换码、对齐方式就可以了,这篇文章应该解释的差不多了。~-~