'''
在python的使用过程中,有时需要将输出的字符串做统一规定,因此需要提前编写一个字符串的模板。
模板中有格式符,这些格式符为最后输的字符串预先占据位置,
并规定其应该呈现的格式,包括字符的位置、对齐方式、空位补充方式等。
Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。
Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。
%格式符的语法:%[(name)][flags][width].[precision]typecode。
(name)参数:当使用字典作为真实值的存放容器,name在此对应输出值关联的字典的键名,必须使用小括号将键名括起来,
如果字典中不存在该键,则引发异常,否则输出该键对应的值;
flags可以有+,-,' '或0。
+表示应该包含数字的正负号。-表示左对齐,没有则表示右对齐。
' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充;
width表示该输出值占用的宽度;
precision表示小数点后精度;
typecode表示输出值的类型,
具体含义如下:
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示) #repr() 函数将对象转化为供解释器读取的形式,输出的字符加引号。
%c 单个字符
%b 二进制整数
%d,%i 十进制整数
%o 八进制整数
%x,%X 十六进制整数
%e,%E 指数 (基底写为e,E)
%f,%F 浮点数
%g,%G 指数或浮点数 (根据显示长度)
%u 无符号数(没有细查文档,经测试可以输出负数)
%% 字符"%"
'''
example_1 = "I'm %s, I'm %d years old." % ('wrh', 29)
print(example_1)
'''
输出结果:
I'm wrh, I'm 29 years old.
'''
example_2 = ("I'm %(name)s, I'm %(age)d years old." % {'name':'wrh', 'age':29})
print(example_2)
'''
输出结果:
I'm wrh, I'm 29 years old.
'''
print("%+10x" % 10)
print("%04d" % 5)
print("%6.3f" % 2.3)
print("%.*f" % (4, 1.2))
print("%*.f" % (4, 1.2))
'''
输出结果:
+a
0005
2.300
1.2000
1
'''
a = '30c'
F = 1.8*float(a[0:-1]) + 32
print("%.1fF" % F)
'''
输出结果:
86.0F
'''
student={'name':'小明','class':20190301,'score':597.5}
print('%s同学' % student['name'])
print('%10s班 %-4s同学,总分:%7.2f' % (student['class'],student['name'],student['score']))
format='%10s班 %-4s同学,总分:%7.2f'
value=(student['class'],student['name'],student['score'])
print(format % value)
format='%10s班 %-4s同学,总分:%7.2f'
value=(student['class'],student['name'],student['score'])
output=format % value
print(output)
print('%(class)10s班 %(name)-4s同学,总分:%(score)7.2f' % student)
format='%(class)10s班 %(name)-4s同学,总分:%(score)7.2f'
output= format % student
print(output)
'''
输出结果:
小明同学
20190301班 小明 同学,总分: 597.50
20190301班 小明 同学,总分: 597.50
20190301班 小明 同学,总分: 597.50
20190301班 小明 同学,总分: 597.50
20190301班 小明 同学,总分: 597.50
'''