第十五讲:字符串,格式化
一、知识点:
0.str.format()有两种参数位置参数和关键字参数:
A、对应序号替换:
>>> 'hello,{0},{1},{2}'.format('A','B','C')
'hello,A,B,C'
>>> 'hello,{0},{2},{1}'.format('A','B','C')
'hello,A,C,B'
>>> 'hello,{0},{1},{2},{3[0]},{3[1]}'.format('A','B','C',['D','!'])
'hello,A,B,C,D,!'
B、变量替换:
>>> 'hello,{x},{y},{z}'.format(x='A',y='B',z='C')
'hello,A,B,C'
C、默认按顺序替换:
>>> 'hello,{},{},{}'.format('A','B','C')
'hello,A,B,C'
注意:序号和变量混用的话,序号一定要在变量前面,否则会报错。
1.指定格式:
A、指定精度,结合f使用:
>>> '{:.2f}'.format(3.1415926)
'3.14'
>>> '{:.4f}'.format(3.1415926)
'3.1416'
B、指定进制,b、d、o、x分别表示二进制、十进制、八进制、十六进制:
>>> '{:d}'.format(11)
'11'
>>> '{:b}'.format(11)
'1011'
>>> '{:x}'.format(11)
'b'
>>> '{:o}'.format(11)
'13'
C、指定对齐方式:
^、<、>分别是居中、左对齐、右对齐,后面带宽度,默认用0 填充,可指定填充方式
>>> '{:^10}'.format('abc')
' abc '
>>> '{:<10}'.format('abc')
'abc '
>>> '{:>10}'.format('abc')
' abc'
>>> '{:8>10}'.format('abc')
'8888888abc'
2.python字符串格式化符号:
符 号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %F和%E的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令:
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
0.根据说明填写相应的字符串格式化符号
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%e 格式化定点数,可指定小数点后的精度
%E 用科学计数法格式化定点数
%g 根据值的大小决定使用%f或者%e
%G 根据值的大小决定使用%F或者%E
1.请问以下这行代码会打印什么内容?
>>> '{{1}}'.format('不打印','打印')
{1}
2.以下代码中,a,b,c是什么参数?
>>> '{a} love {b}.{c}'.format(a='I',b='FishC',c='com')
关键字参数
'I love FishC.com'
3.以下代码中,{0},{1},{2}是什么参数?
>>> '{0} love {1}.{2}'.format('I','FishC','com')
位置参数
4.如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
''.format('Pi = ', 3.1415)
'{0}{1:.2f}'.format('Pi=',3.1415)
-------------------------------------------------------------------------------------------------------------------------
三、动动手:
0.编写一个进制转换程序
while 1:
num = int(input('请输入一个整数:'))
print('十进制->十六进制:%d->%x'%(num,num))
print('十进制->八进制:%d->%o'%(num,num))
print('十进制->二进制:%d->'%num,bin(num))
-------------------------------------------------------------------------------------------------------------------------