015,字符串:格式化
015,字符串:格式化
format() 有两种参数: 位置参数,关键词参数
字符串格式化符号含义
>>> "{0} love {1}.{2}".format("i","fishC","com")
'i love fishC.com'
{}字段,通过位置参数"i","fishC","com"传递给format方法,对字符串进行格式化整理。
关键字:相当于建立了a,b,c三个变量
关键字:相当于建立了a,b,c三个变量
>>> "{a} love {b}.{c}".format(a="i",b="fishC",c="com")
'i love fishC.com'
>>>
综合: 注意:如果综合位置参数和关键字参数一起使用,那么位置参数必须在关键字参数之前,否则会报错。
>>> "{0} love {b}.{c}".format("i",b="fishC",c="com")
'i love fishC.com'
>>>
花括号转义:
>>> print('\ta')
a
>>> print('\\')
\
>>> '{{0}}'.format('budayin')
'{0}'
>>> '{0:.1f}{1}'.format(27.658,'GB')
'27.7GB'
>>>
位置参数,冒号表示格式化符号的开始。.1是指保留一位小数点。
字符串格式化符号含义
符 号 | 说 明 |
%c | 格式化字符及其ASCII码【>>> '%c' %97 'a'】 |
%s | 格式化字符串 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化定点数,可指定小数点后的精度 |
%e | 用科学计数法格式化定点数 |
%E | 作用同%e,用科学计数法格式化定点数 |
%g | 根据值的大小决定使用%f活%e |
%G | 作用同%g,根据值的大小决定使用%f或者%E |
%c 格式化字符及其ASCII码
>>> '%c' %97
'a' #ASCII码
>>> '%c %c %c' % (97,98,99)
'a b c'
>>>
%s格式化字符串
>>> '%s' % 'i love fishC.com'
>>> '%s' % 'i love fishC.com'
'i love fishC.com'
%d 格式化整数
>>> '%g' % 27.658
%d 格式化整数
>>> '%d + %d = %d' % (4,5,4+5)
'4 + 5 = 9'
%o格式化无符号八进制数
>>> '%o' % 10
>>> '%o' % 10
'12'
%x格式化无符号十六进制数%X 格式化无符号十六进制数(大写)
>>> '%x' % 10
%x格式化无符号十六进制数%X 格式化无符号十六进制数(大写)
>>> '%x' % 10
'a'
>>> '%X' % 10
>>> '%X' % 10
'A'
%f格式化定点数,可指定小数点后的精度(默认精确到6位)
>>> '%f' % 27.658
%f格式化定点数,可指定小数点后的精度(默认精确到6位)
>>> '%f' % 27.658
'27.658000'
%e用科学计数法格式化定点数
>>> '%e' % 27.658
%e用科学计数法格式化定点数
>>> '%e' % 27.658
'2.765800e+01'
%E作用同%e,用科学计数法格式化定点数
>>> '%E' % 27.658
%E作用同%e,用科学计数法格式化定点数
>>> '%E' % 27.658
'2.765800E+01'
%g根据值的大小决定使用%f或%e
%g根据值的大小决定使用%f或%e
'27.658'
格式化操作符辅助指令
符 号 | 说 明 |
m.n | m是显示的最小总宽度,n是小数点后的位数 |
- | 用于左对齐 |
+ | 在正数前面显示加号(+) |
# | 在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X' |
0 | 显示的数字前面填充 '0' 取代空格 |
m.n m是显示的最小总宽度,n是小数点后的位数
>>> '%5.1f' % 27.658
' 27.7' #注意,引号里有一个空格,5的意思是最小总宽度是5,27.7只有4,因此前面加个空格补充。
'%.2e' % 27.658
'%.2e' % 27.658
'2.77e+01'
>>> '%10d' % 5
>>> '%10d' % 5
' 5'
-号用于左对齐
+号在正数前面显示加号(+)
>>> '%+10d' % 5
-号用于左对齐
>>> '%-10d' % 5
'5 '+号在正数前面显示加号(+)
>>> '%+10d' % 5
' +5'
>>> '%+10d' % -5
' -5'
#在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'
>>> '%#o' % 10
#在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'
>>> '%#o' % 10
'0o12'
>>> '%#x' % 108
>>> '%#x' % 108
'0x6c'
0显示的数字前面填充 '0' 取代空格
>>> '%-010d' % 50显示的数字前面填充 '0' 取代空格
>>> '%010d' % 5
'0000000005' '5 '
字符串转义字符含义
符 号 | 说 明 |
\' | 单引号 |
\" | 双引号 |
\a | 发出系统响铃声 |
\b | 退格符 |
\n | 换行符 |
\t | 横向制表符(TAB) |
\v | 纵向制表符 |
\r | 回车符 |
\f | 换页符 |
\o | 八进制数代表的字符 |
\x | 十六进制数代表的字符 |
\0 | 表示一个空字符 |
\\ | 反斜杠 |
测试题:
0. 根据说明填写相应的字符串格式化符号
符 号 | 说 明 |
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化定点数,可指定小数点后的精度 |
%e | 用科学计数法格式化定点数 |
%g | 根据值的大小决定使用%f或者%e |
%G | 根据值的大小决定使用%F或者%E |
- >>> "{{1}}".format("不打印", "打印")
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")
- 'I love FishC.com'
4. 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
- ''.format('Pi = ', 3.1415)
动动手:
0. 编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用bin()这个BIF):
答:
num = input('请输入一个整数(输入Q结束程序):')
while True:
if num.isdigit():
print('十进制 -> 十六进制 :'+ num + ' -> ' + ('%#x' % int(num)))
print('十进制 -> 八进制 :'+ num + ' -> ' + ('%#o' % int(num)))
print('十进制 -> 二进制 :'+ num + ' -> ' + (bin(int(num))))
num = input('请输入一个整数(输入Q结束程序):')
elif num == 'Q':
break
else:
num = input('输入错误,请输入一个整数(输入Q结束程序):')
结果:
>>>
请输入一个整数(输入Q结束程序):ert
输入错误,请输入一个整数(输入Q结束程序):108
十进制 -> 十六进制 :108 -> 0x6c
十进制 -> 八进制 :108 -> 0o154
十进制 -> 二进制 :108 -> 0b1101100
请输入一个整数(输入Q结束程序):1053
十进制 -> 十六进制 :1053 -> 0x41d
十进制 -> 八进制 :1053 -> 0o2035
十进制 -> 二进制 :1053 -> 0b10000011101
请输入一个整数(输入Q结束程序):ew
输入错误,请输入一个整数(输入Q结束程序):25
十进制 -> 十六进制 :25 -> 0x19
十进制 -> 八进制 :25 -> 0o31
十进制 -> 二进制 :25 -> 0b11001
请输入一个整数(输入Q结束程序):Q
>>>
论坛参考答案:
q = True
while q:
num = input('请输入一个整数(输入Q结束程序):')
if num != 'Q':
num = int(num)
print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
print('十进制 -> 二进制 : %d -> ' % num, bin(num))
else:
q = False
经测试,有bug,当输入非数字时候报错。