格式化输出:format()
format():把传统的%替换为{}来实现格式化输出
- 使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串,位置参数就是把传统的%改为{},按照位置顺序自动进行替换
'My name is {},age:{}'.format('Anxc',18)
'My name is Anxc,age:18'
2.使用位置参数:在原有基础上,通过位置的改变来让替换的值根据位置改变(自我感觉没什么用,还不如第一个好用)
'My name is {1},age:{0}'.format(18,'Anxc')
'My name is Anxc,age:18'
3.字符填充(左对齐,右对齐,居中对齐)
'右对齐{:#>10}'.format(10)
'右对齐########10'
4.使用关键字参数:利用key=value来实现一一对应的赋值替换
'My name is{name},age:{age}'.format(name='Anxc',age=18)
'My name isAnxc,age:18'
5.数字的精度输出:自我感觉就像C语言的float类型的输出。(格式:{:. x f}如果x为整数是无效的)
>>> '{:.4f}'.format(1/3)
'0.3333'
>>> '{:4f}'.format(100)
'100.000000'#目前没有发现整数是啥用处
6.数字的进制输出
二进制 | b |
八进制 | o |
十进制 | |
十六进制 | x |
'18的二进制:{:b}'.format(18)
'18的二进制:10010'
>>> '18的八进制:{:o}'.format(18)
'18的八进制:22'
>>> '18的十六进制:{:x}'.format(18)
'18的十六进制:12'
7.数字的千分位划分
>>> '{:,}'.format(19012390123)
'19,012,390,123'
8.通过下标来实现格式化
>>> person=['Anxc',18]
'I am {0[0]},age:{0[1]}'.format(person)
'I am Anxc,age:18'
>>> x=[12,13]
>>> 'I am {0[0]},age:{1[1]}'.format(person,x)
'I am Anxc,age:13'
两种形式:
%,{}:两者十分相近==》
不同处:
create_time = "%4d-%-3d-%02d" % (year, month-11, day) #out:2020-1 -07
create_time = "%4d-%03d-%02d" % (year, month-11, day) #out:2020-001-07
# %02d 意思是填充至两位有效数字,不够以0补充,注意不能把0改为其他的以其他数字补充,note:左边补全零还可以用zfill,不过对象得是字符串类型的,%d对象则须要是整形类型的。
- 左对齐:%用-表示,而{}用<表示
- 右对齐:%默认右对齐,而{}用>表示
- 居中对齐:%无表示法,而{}用^表示
格式化输出,浮点数e,f,g保留位数的计算方式不同, e、f :%.3e/f ==》取小数点后三位,g:%.3g==》总共有效位数为3位(不包括小数点)
总体格式为:%m.n e/f/g
对g:而言m:总共显示多少位(包括小数点和e的相关文字),意义和e、f的m相同,n:有效位数(不包括小数点)默认为6位,设置有效位数,对g而言,m如果大于要显示的数的位数则根据对齐号补空格,m如果小于要显示的数的位数,则根据有效位数或者e格式的情况显示完全
对e,f:而言m:总共占多少位,n:设置小数点后显示多少位,默认为6位
,对f而言,m如果大于要显示的数的位数则根据对齐号补空格,m如果小于要显示的数的位数,则根据有效位数或者e格式的情况显示完全
print('%4g' % 1111.1111)
1111.11
print('%10g' % 1111.1111) ==》观察空白符==》10g和.10g规定的方向都不一样10g表示 占10位,不全左边补空格,10g,10后面没加小数点,即没规定有效位数,则用默认有效位数6位
1111.11
print('%1g' % 1111.1111)
1111.11
==>g前面不叫小数点
格式化符号说明备注 %f 保留小数点后面六位有效数字 float%e 保留小数点后面六位有效数字
%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法
print("%g\n", 0.00001234);
print("%g\n", 0.0001234);
print("%.2g\n", 123.45); 有效位数为2,即精度为2,指数2大于等于给定精度2==》用%e
print("%.2g\n", 23.45); 有效位数为2,即精度为2,指数1小于给定精度2==》用%f
上面四句输出结果为:
1.234e-05 对于指数 小于-4或者大于5,按照%e的控制输出,否则按照%f的控制输出
0.0001234 对于指数 大于等于-4或者小于等于5,按照%f的控制输出,否则按照%e的控制输出
1.2e+02 大于等于给定精度的数值,按照%e的控制输出,否则按照%f的控制输出
23
对于指数 小于-4或者大于等于给定精度的数值,按照%e的控制输出,否则按照%f的控制输出.
print('%3g' % 1111.1111) #g:%3g总共有效位数为3,不包括小数点,
1111.11
print('%.3g' % 1111.1111) #取3位有效数字--1110.0000
1.11e+03
print('%.4g' % 1111.1111) #有效位数为4,即精度为4,1111=1.111*10的3次方,指数3小于给定精度4==》用%f
1111
print('%.6g' % 1111.1111)
1111.11
print('%.5g' % 1111.1111)
1111.1
print('%.4g' % 1111.1111)
1111
print('%f' % 1.11) # 默认保留6位小数1.110000
print('%.1f' % 1.11) # 取1位小数1.1
print('%e' % 1.11) # 默认6位小数,用科学计数法1.110000e+00
print('%.3e' % 1.11) # 取3位小数,用科学计数法1.110e+00
print('%g' % 1111.1111) # 默认6位有效数字1111.11
print('%.7g' % 1111.1111) # 取7位有效数字1111.111
print('%.2g' % 1111.1111) # 取2位有效数字,1100.0000自动转换为科学计数法1.1e+03
1.110000
1.1
1.110000e+00
1.110e+00
1111.11
1111.111
1.1e+03
print('%7g' % 1111.1111)
1111.11
print('%7f' % 1111.1111)
1111.111100
print('%.1f' % 1111.1111)
1111.1
print('%1f' % 1111.1111)
1111.111100
print('%10f' % 1111.1111)
1111.111100
print('%5f' % 1111.1111)
1111.111100
print('%3f' % 1111.1111)
1111.111100