015,字符串:格式化

015,字符串:格式化

format() 有两种参数: 位置参数,关键词参数 
>>> "{0} love {1}.{2}".format("i","fishC","com")
'i love fishC.com'
 {}字段,通过位置参数"i","fishC","com"传递给format方法,对字符串进行格式化整理。 
关键字:相当于建立了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'
'i love fishC.com'
%d 格式化整数
>>> '%d + %d = %d' % (4,5,4+5)
'4 + 5 = 9'
 %o格式化无符号八进制数
 >>> '%o' % 10
'12'
%x格式化无符号十六进制数%X 格式化无符号十六进制数(大写)
 
>>> '%x' % 10
'a'
 >>> '%X' % 10
'A'
 %f格式化定点数,可指定小数点后的精度(默认精确到6位)
 
 >>> '%f' % 27.658
'27.658000'
 %e用科学计数法格式化定点数
 
>>> '%e' % 27.658
'2.765800e+01'
 %E作用同%e,用科学计数法格式化定点数
 
>>> '%E' % 27.658
'2.765800E+01'
 %g根据值的大小决定使用%f或%e
 >>> '%g' % 27.658
'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
'2.77e+01'
 >>> '%10d' % 5
'         5'
 
-号用于左对齐
>>> '%-10d' % 5
'5         '
+号在正数前面显示加号(+) 
 
>>> '%+10d' % 5
'        +5'
>>> '%+10d' % -5
'        -5'
 
#
在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'
 
 >>> '%#o' % 10
'0o12'
 >>> '%#x' % 108
'0x6c'
 
0
显示的数字前面填充 '0' 取代空格
>>> '%010d' % 5
'0000000005' 
 >>> '%-010d' % 5
'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. 请问以下这行代码会打印什么内容?
  1. >>> "{{1}}".format("不打印", "打印")
 答:'{1}'

2. 以下代码中,a, b, c是什么参数?
  1. >>> "{a} love {b}.{c}".format(a="I", b="FishC", c="com")
  2. 'I love FishC.com'
答:关键词参数

3. 以下代码中,{0}, {1}, {2}是什么参数?
  1. >>> "{0} love {1}.{2}".format("I", "FishC", "com")
  2. 'I love FishC.com'
 答:位置参数
4. 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?
  1. ''.format('Pi = ', 3.1415)
答:'{0}{1:.2f}'

动动手:

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')
 结果: 
>>> 
Qert
Q108
 ->  108 -> 0x6c
 ->  108 -> 0o154
 ->  108 -> 0b1101100
Q1053
 ->  1053 -> 0x41d
 ->  1053 -> 0o2035
 ->  1053 -> 0b10000011101
Qew
Q25
 ->  25 -> 0x19
 ->  25 -> 0o31
 ->  25 -> 0b11001
QQ
>>> 
 论坛参考答案: 
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,当输入非数字时候报错。
posted @ 2014-02-28 17:32  小丑戌  阅读(947)  评论(0编辑  收藏  举报