《Python语⾔程序设计》王恺机械⼯业出版社第六章课后习题
答案
第六章字符串
6.5 课后习题
(1)Python 中,创建字符串时,可以使⽤单引号、双引号和三引号
(2)Python 中,使⽤字符串的 split ⽅法可以按照指定的分隔符对字符串进⾏切割,返回由切割结果组成的列表
(3)可以利⽤运算符“+”连接两个字符串,也可以 join 使⽤⽅法将序列中的元素以指定的字符连接成⼀个新的字符串
(4)Python 中对正则表达式中的普通字符需要做精确匹配,⽽特殊字符指定的匹配模式则对应了⽤于模糊匹配的规则
(5)Python 中正则表达式的特殊序列是由 \ 和⼀个字符构成
(6)使⽤ Python提供的Re模块,可以实现基于正则表达式的模糊匹配
(7)compile函数⽤于将⼀个字符串形式的正则表达式编译成⼀个正则表达式对象,供match、search 以及其他函数使⽤
(8)re模块中的match函数⽤于对字符串开头的若⼲字符进⾏正则表达式的匹配。匹配成功,返回⼀个Match对象;匹配失败,返回None
(9)re模块中的 finditer函数与re.findall函数功能都是⽤于在字符串中到所有与正则表达式匹配的⼦串,区别在于re.findall 函数返回列表形式的结果,⽽ re.finditer返回迭代器形式的结果。
(10)re模块中的split函数⽤于将字符串按与正则表达式匹配的⼦串分割
(11)已知s1="I"am a student.",s2='I \'am a student',则 print(s1,s2)的输出结果为(D)
A. I 'am a student. I 'am a student
B.I "am a student.I 'am a student
C. I "am a student. I \'am a student
D.程序报错
(12)下列说法错误的是(D)
A.find⽅法是在指定检索范围中按照从左⾄右的顺序检索,到⼦串第⼀次出现的位置
B.rfind⽅法在指定检索范围中按照从右⾄左的顺序检索,到⼦串第⼀次出现的位置
C. index 与find作⽤相同,rindex与rfind作⽤相同,只是find和rfind 在检索不到字符串时返回-1,⽽index和 rindex会引发ValueError 异常
D.index与 find作⽤相同,rindex 与 rfind作⽤相同,只是find和rfind到⼀个就返回,⽽index和rindex会检索到所有的⼦串
(13)下列关于replace⽅法place(old, new[,max])的说法错误的是(C)
A.使⽤字符串中的replace⽅法可以将字符串中的指定⼦串替换成其他内容
B.str是要做替换操作的字符串,old和new分别是要替换的⼦串和替换成的字符串
C. max是最多替换的⼦串数量,如果不指定max参数,则只替换第⼀个满⾜条件的⼦串
D. replace⽅法返回替换后的字符串
(14)print(len(”中国\"china" "))的输出结果是(B)
A.7
B.8
C.9
D.10
(15)下列匹配模式叙述错误的是(D)
A.“^”⽤于匹配字符串开头的若⼲字符
B.“*”⽤于匹配前⼀个模式0次或多次
C.“?”⽤于匹配前⼀个模式0次或1次
D.A|B表⽰同时匹配模式A和模式B
(16)关于正则表达式特殊序列叙述错误的是(C)
A.A匹配字符串开头的若⼲字符,功能同“^”
B.d 匹配任⼀数字字符,等价于[0-9]
C.\S匹配任⼀空⽩字符
D.\D与\d作⽤相反,匹配任⼀⾮数字字符,等价于[^0-9](17)写出下⾯程序的运⾏结果
print("ad" > "abcd")
print("AD" > "abcd")
print("AD" > "ADC")
print("tianjin" > "beijing")
print("天津" > "北京")
#输出结果演员王凯
True
False
False
True
True
(18)写出下⾯程序的运⾏结果
s1="I am a student."
s2="C++90分Python88分Java85分"
s3="I am a student.\nI like programming.\n"
print(s1.split())
print(s2.split("分"))
print(s2.split("分",2))
print(s3.splitlines())
#输出结果
['I', 'am', 'a', 'student.']
['C++90', 'Python88', 'Java85', '']
['C++90', 'Python88', 'Java85分']
['I am a student.', 'I like programming.']
(19)写出下⾯程序的运⾏结果
str=" a b c "
print("123"+str.strip()+"456")
print("123"+str.lstrip()+"456")
print("123"+str.rstrip()+"456")
#输出结果
123a b c456
123a b c 456
123 a b c456
(20)写出下⾯程序的运⾏结果
n,f = 34,56.78
print("%d,%o,%x"%(n,n,n))
print("%f,%e"%(f,f))
r = 5
s = 3.14*r*r
s1 = "半径为{0}的圆⾯积为{1}"
s2 = "半径为{radius}的圆⾯积为{area}"
print(s1.format(r,s))
print(s2.format(area = s,radius=r))
#输出结果
34,42,22
56.780000,5.678000e+01
半径为5的圆⾯积为78.5
半径为5的圆⾯积为78.5
(21)写出下⾯程序的运⾏结果
import re
pattern = repile(r'Student',re.I)#⽣成正则表达式对象
r1 = pattern.match('Students study programming')
r2 = pattern.match('I am a student! ',3)
r3 = pattern.match('I am a student! ',7)
r4 = re.search(r'Student','I am a student',re.I)
r5 = re.match(r'Student','I am a student',re.I)
print(r1)
print(r2)
print(r3)
print(r4)
print(r5)
#输出结果
<re.Match object; span=(0, 7), match='Student'>
None
<re.Match object; span=(7, 14), match='student'>
<re.Match object; span=(7, 14), match='student'>
None
(22)写出下⾯程序的运⾏结果
import re
str = '''sno:#1810101#,name:#李晓明#,age:#19#,major:#计算机#
sno:#1810102#,name:#马红#,age:#20#,major:#数学#'''
rlt = re.search(r'sno:#([\s\S]*?)#[\s\S]*?major:#([\s\S]*?)#',str,re.I)
if rlt:#判断是否有匹配结果
print('匹配到的整个字符串:',up())
print('sno:%s,startpos:%d,endpos:%d'%(up(1),rlt.start(1),d(1)))
print('major:%s,startpos:%d,endpos:%d'%(up(2),rlt.start(2),d(2)))    print('所有分组匹配结果:',ups())
else:
print('未到匹配信息')
#输出结果
匹配到的整个字符串: sno:#1810101#,name:#李晓明#,age:#19#,major:#计算机# sno:1810101,startpos:5,endpos:12
major:计算机,startpos:41,endpos:44
所有分组匹配结果: ('1810101', '计算机')
码字不易,能否给个不要钱的,关注我,带你发现更多知识!