课时15 字符串:格式化

目录

 

一、format()

二、格式化操作符%

三、Python的转义字符及含义

四、课后题


一、format()

格式化字符串,就是按照统一的格式去输出一个字符串。如果格式不统一,有可能造成误会。比如:十六进制的10和十进制的10完全是不同的概念(十六进制的10等于十进制的16,二进制的10等于十进制的2)。那么字符串的格式化,帮助我们纠正并规范这类问题。

  • format()方法接受位置参数关键字参数,二者均传递到一个叫做replacement字段,这个replacement字段用花括号{}表示
  • 位置参数

  • 关键字参数

>>> '{a} love {b} {c}'.format (a='I',b='python',c='!')
'I love python !'

  • 位置参数+关键字参数,位置参数必须在关键字参数前使用

>>> '{0} love {b} {c}'.format ('I',b='python',c='!')
'I love python !'
>>> '{a} love {b} {0}'.format (a='I',b='python','!')
SyntaxError: positional argument follows keyword argument

  • 要将大括号打印出来,只需要一层大括号包起来即可(要打印转义字符\,只需要转义字符转义自身\)
  • 下面的例子{0}的特殊功能被外层的花括号剥夺,因为没有字符串输出

>>> print('\\')
\
>>> '{{0}}'.format ('不打印')
'{0}'

  • 下面的例子可以看到,位置参数{1}跟平常有些不同,后边多了一个冒号。在替换域中,冒号表示格式化符号开始,“.2”的意思是四舍五入到保留两位小数点,而f的意思是浮点数,所以按照格式化的要求打印除了3.14。

>>> "{0}:{1:.2f}".format("圆周率",3.14159)
'圆周率:3.14'

  • 又如

>>> '{0:.1f}{1}'.format (27.658,'GB')
'27.7GB'

二、格式化操作符%

字符串所独享的一个操作符%

例如:

>>> '%c' % 97
'a'
>>> '%c %c %c' % (97,98,99)
'a b c'
>>> '%s' % 'i love python'
'i love python'
>>> '%d + %d = %d' % (1,2,1+2)
'1 + 2 = 3'
>>> '%o' % 10
'12'
>>> '%x' % 10
'a'
>>> '%X' % 10
'A'
>>> '%x' % 160
'a0'
>>> '%f' % 27,658
('27.000000', 658)
>>> '%f' % 27.658
'27.658000'
>>> '%e' % 27.658
'2.765800e+01'
>>> '%E' % 27.658
'2.765800E+01'
>>> '%g' % 27.658
'27.658'
>>> '%5.1f' % 27.658
' 27.7'
>>> '%.2e' % 27.658
'2.77e+01'

Python还提供了格式化操作符的辅助指令

例如:

>>> '%10d' % 5
'         5'
>>> '%-10d' % 5
'5         '
>>> '%+d' % 5
'+5'
>>> '%+d' % -5
'-5'
>>> '%#o' % 10
'0o12'
>>> '%#X' % 10
'0XA'
>>> '%#d' % 10
'10'
>>> '%010d' % 5
'0000000005'
>>> '%-010d' % 5
'5         '

三、Python的转义字符及含义

四、课后题

0. 根据说明填写相应的字符串格式化符号

符   号       说     明
     %c       格式化字符及其ASCII码
     %s       格式化字符串
     %d       格式化整数
     %o       格式化无符号八进制数
     %x       格式化无符号十六进制数
     %X       格式化无符号十六进制数(大写)
     %f       格式化定点数,可指定小数点后的精度
     %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")
'I love FishC.com'

位置参数

4. 如果想要显示Pi = 3.14,format前边的字符串应该怎么填写呢?

''.format('Pi = ', 3.1415)
>>> '{0}{1:.2f}'.format('Pi = ', 3.1415)
'Pi = 3.14'

 动动手:

0. 编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用bin()这个BIF):

q = True
while q:
    num = input('请输入一个整数(输入Q结束程序):')
    if num != 'Q':
        num = int(num)
        print('十进制到十六进制:%d 到 Ox%x' % (num,num))
        print('十进制到八进制:%d 到 Oa%x' % (num,num))
        print('十进制到二进制:%d 到 ' % num,bin(num))
    else:
        q = False 

运行结果:

请输入一个整数(输入Q结束程序):12
十进制到十六进制:12 到 Oxc
十进制到八进制:12 到 Oac
十进制到二进制:12 到  0b1100
请输入一个整数(输入Q结束程序):Q

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值