|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
格式化:
1、字符串格式化,主要是为了字符串的统一性,避免不同字符导致的异常,例如十进制中的10和二进制、八进制中的10是完全不同的概念
2、部分内置函数:
--format(),表示接受位置参数和关键字参数的替换,
>>> '{0} love {1} {2}'.format('i','fish','too')
'i love fish too'
>>> '{a} love {b} {c}'.format(a='i',b='fish',c='too')
'i love fish too'
>>> '{{0}} love {b} {c}'.format('i',b='fish',c='too')
'{0} love fish too'
注意,前边是整个字符串,子字符通过大括号来引用表示,位置参数是按照位置顺序依次替换,而下边的关键字参数,主要abc的赋值没问题,顺序是可以变换的。
位置参数和关键字参数可以结合使用,但是需要注意的是,位置参数要在关键字参数的前边。如果想打印出大括号,则可在括号外边再加一层大括号,同时可以注意第三个“{0}”是没有替换的,表明当加了大括号以后,这个子字符将会保留,不做替换。
>>> '{0} : {1:.2f}'.format('圆周率',3.1415926)
'圆周率 : 3.14'
在替换域中(前边需替换的引号区域), “1”表示位置,冒号表示格式化符号开始,“.2”表示四舍五入保留2位小数,f意思是浮点数。
3、格式化操作符 %
当%左右是数字的时候,表示求余数的操作,当右侧出现字符,则表示为格式化操作符
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%o 格式化无符号八进制数
%x或%X 格式化无符号十六进制数
%f 格式化浮点数字,可指定小数点后的精度
%e或%E 用科学计数法格式化浮点数
%g或%G 根据值的大小使用%f或 %e/%E
需特别注意一点,格式化操作符要加上引号,可以理解为整个格式化操作符为一个字符串,后边先再接一个“%”,然后再接需要格式化的值
举例说明:
>>> '%c'%97
'a'
指后边的字符97,转成ASCII码的数字,即为a
>>> '%c%c%c%c'%(70,105,115,104)
'Fish'
需要格式化几个子字符,就需要前边加几个“%c”来对应
>>> '%d转成八进制是:%o'%(123,123)
'123转成八进制是:173'
>>> '%.2f用科学计数法是:%e'%(15000000,15000000)
'15000000.00用科学计数法是:1.500000e+07'
>>> '%.2f用科学计数法是:%.2e'%(15000000,15000000)
'15000000.00用科学计数法是:1.50e+07'
我们可以看到,在%后边加上“.2f”,可以精确到2位小数,与上边讲的format替换中的用法一致。
4、格式化操作符的辅助命令
“m.n”,表示显示最小的总宽度m,小数点后的位数n
>>> '%5.1f'%27.658
' 27.7'
由于显示最小是5位,所以27前边会有一个空格,
“-”,结果左对齐,“+”在整数前边显示加号(+)
“#”,在八进制数前边显示’0o’,在十六进制数前边显示’0x’或’0X’,
“0”,显示的数字前边填充“0”代替空格
>>> '%02d'%5
'05'
>>> '%05d'%5
'00005'
>>> '%5d'%5
' 5'
>>> '%-5d'%5
'5 '
>>> '%+d'%5
'+5'
我们可以看到%和d之间,如果有一个数字,表示显示出的结果中前边就有数字-1个空格,数字前再加个0的话,前边的空格都会被0所替代(数字0)。
>>> '%#x'%100
'0x64'
>>> '%#o'%100
'0o144'
5、转移字符及含义
\’(单引号) \b (退格符) \n (换行符)
\t (横向制表符TAB) \v (纵向制表符) \r (回车符)
\f (换页符) \o (八进制数代表的字符)
\x (十六进制数代表的字符) \\ (反斜杠)
\0 (为数字零,表示一个空字符)
八进制与十进制转换、十六进制与十进制转换(拓展)
对进制一直心存疑惑,经过反复查阅网上资料最终用最通俗的语言总结如下:
上文提到的%后边转换的数字,数字一般默认为十进制的数字,而如果转成八进制或者十六进制,我们应该如何操作呢?
以八进制为例,
整数的算法:就拿上边数字100(十进制)转成八进制来算,我们通过用100除以8,得到12余数为4,继续除以8,得到1余数为4,然后我们从下往上看,即为 1 4 4,所以结果为144,转成十六进制同理,除数8换成16即可。
小数的算法:用小数乘以8或16,取整数,一直乘到没有小数,从上往下看,即可。
例如,30.15转成八进制,
先用0.15*8=1.2,取1
0.2*8=1.6,取1
0.6*8=4.8,去4
0.8*8=6.4,取6
。。。。。
最终小数位置取的结果为,0.1146…,然后30再通过上边的整数算法,计算出八进制的结果即可。
另外进制都是从0开始,他们的序列方式为,
二进制,0,1,10,11,100,101,110,111,1000... (逢二进一)
八进制,0,1...6,7,10,11...16,17,20,21...27,30,31... (逢八进一)
十六进制,0,1...9,a,b,c,d,e,f,10,11,12...1e,1f,20,21... (逢十六进一)
十六进制中10~15的表示,是用a~f来表示
|
|