1.2字符串练习题

①字符串内置方法练习

在交互式解释器中完成下列题目
1.将字符串“abcd”转成大写
2.计算字符串“cd”在 字符串“abcd”中出现的位置
3.字符串“a,b,c,d”,请用逗号分割字符串,分割后的结果是什么类型的?

4.”[name]喜欢{fruit}”.format(name=”李雷”)执行会出错,请修改代码让其正确执行

\5. string =”Python is good”, 请将字符串里的Python替换成 python,并输出替换后的结果
6.有一个字符串 string =“python修炼第一期.html”,请写程序从这个字符串里获得.htm前面的部分,要用尽可能多的方式来做这个事情
7.如何获取字符串的长度?
8.”this is a book”,请将字符串里的book替换成apple
9.”this is a book”,请用程序判断该字符串是否以this开头

10.”this is a book”,请用程序判断该字符串是否以apple结尾

11.”This IS a book”请将字符串里的大写字符转成小写字符
12.”This IS a book”,请将字符串里的小写字符转成大写字符
13.”this is a book\n”,字符串的末尾有一个回车符,请将其删除

解答:

\1. “abcd”.upper()
\2. “abcd”.find(‘cd’)
\3. “a,b,c,d”.split(‘,’)
\4. “{name}喜欢{fruit}”.format(name=”李雷”, fruit=’苹果’)
\5. string.replace(‘Python’, ‘python’)
\6. string[0:string.find(‘.html’)] 或者string[0:-5]
\7. 使⽤用len函数
\8. “this is a book”.replace(‘book’, ‘apple’)
\9. “this is a book”.startswith(‘this’)
\10. “this is a book”.endswith(‘apple’)
\11. “This IS a book”.lower()
\12. “This IS a book”.upper()
\13. “this is a book\n”.strip()

这里只对其中2个题目讲解

第4小题的程序直接运行会报错,因为字符串里面有两个需要替换的位置,而format方法里只传入了一个参数,显然是不够

第13小题,strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列,n 就是换行符,这里又涉及到转义字符这个概念,本篇不做详细讲解,求知欲强的同学可以自己百度一下

②逻辑推理练习(字符串)

不用代码,口述回答下面代码的执行结果

string = “Python is good”
\1. string[1:20]

\2. string[20]

3.string[3:-4]
4.string[-10:-3]
5.string.lower()
6.string.replace(“o”,”0”)

\7. string.startswith(python’)
\8. string.split()
\9. len(string)
\10. string[30]
11.string.replace(“”,”)

解答:

\1. ‘ython is good’
\2. 报错
\3. ‘hon is ‘
\4. ‘on is g’
\5. ‘python is good’
\6. ‘Pyth0n is g00d’
\7. False
\8. [‘Python’, ‘is’, ‘good’]
\9. 14
\10. 报错
\11. ‘Pythonisgood’

第2题和第10题都报错,是因为超出了索引范围,字符串长度为14,你去20和30的位置取值,当然会报错
关于切片操作,只需要知道从哪里开始到哪里结束就一定能推导出答案,以string[3:-4]为例,3是开始的位置,-4是结束的位置,但这个范围是左闭右开的,从3开始没错,但不会到-4,而是到-5,更前面的一个位置,python支持负数索引,或者说是反向索引,从右向左从-1开始逐渐减小。
第一题中,做切片的时候是从1开始,到20结束,即便是右开,直到19,也仍然超出了索引范围,为什么不报错呢,这就是语言设计者自己的想法了,切片时,不论是开始位置还是结束位置,超出索引范围都不会报错,我猜,大概是由于切片是一个范围操作,这个范围内有值就切出来,没值返回空字符串就好了。