《Think Python 2e》作业实现(八): 字符串
文章目录
这是什么?
这里是《Think Python 2e》作业实现 !在这里将记录《Think Python 2e》作业的练习记录、终端信息和结果分析。
- 这是《Think Python 2e》哪个版本的作业?
《Think Python:如何像计算机科学家一样思考》第二版。这里主要参考了一个中文网页版《Think Python 2e》中译本。- 可以当成《Think Python 2e》参考答案吗?
这里主要记录了我自己完成作业时所产生的成果及习题总结,基本未参考教材所提供的答案,未免有失规范,参考答案建议还是以 绿茶出版社官方代码 为准。- 不同的解释器版本结果不尽相同,这里用的哪个版本Python解释器?
这里用了Python 3.8.6版解释器,部分用安卓Pydroid 4.01_arm64中的3.8.3版Python解释器,在线解释器用教程推荐的PythonAnywhere中的3.8版Python解释器。
习题8-1:字符串 strip 和 replace 方法
【习题 】 点击如下链接,阅读字符串方法的文档 http://docs.python.org/3/library/stdtypes.html#string-methods ,为了确保理解他们是怎么工作的,可以尝试使用其中的一些方法,strip 和 replace 尤其有用
- 练习记录:
>>> 'www.example.com'.strip('cmowz.')
'example'
>>> ' spacious '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'
>>> 'banana'.replace('a', 'e', 2)
'benena'
习题8-2:字符串 count 方法
【习题 】 字符串方法 count 类似于之前循环和计数一节中的 counter ,阅读这个方法的文档,写一个计算 banana
中 a 的个数的方法调用
- 练习记录:
>>> 'banana'.count('a')
3
>>> 'banana'.count('na')
2
习题8-3:生成倒序字符串检查回文字
【习题 】 一个字符串切片可以接受指定步长的第三个索引,也就是连续字符间空格的个数,步长为2,意味着每隔一个字符,步长为3,意味着每隔两个字符,以此类推,步长为-1就是从单词的尾部开始进行, 所以切片 [::-1] 生成一个倒序的字符串,利用这个惯用法(idiom),将习题6-3中 is_palindrome 函数改写为一行代码版
- 练习记录:
def is_palindrome(word):
if word[::-1] == word:
return True
return False
print(is_palindrome('wow'))
print(is_palindrome('wowo'))
PS C:\Users\Administrator> python D:\WorkSpace\thinkpython2e\8_3.py
True
False
习题8-4:这些函数都做了什么
【习题 】 下面这些函数,都是用于检查一个字符串是否包含一些小写字母的,但是其中至少有一些是错误的函数,检查每个函数,描述这个函数实际上做了什么(假设形参是字符串)
- 练习记录:
def any_lowercase1(s):
"""返回的结果是字符串第一个字符小写与否
"""
for c in s:
if c.islower():
return True
else:
return False
def any_lowercase2(s):
"""返回的结果是'c'这个字符小写与否
"""
for c in s:
if 'c'.islower():
return 'True'
else:
return 'False'
def any_lowercase3(s):
"""返回的结果是字符串最后一个字符小写与否
"""
for c in s:
flag = c.islower()
return flag
def any_lowercase4(s):
"""返回的结果是字符串有小写字符与否
"""
flag = False
for c in s:
flag = flag or c.islower()
return flag
def any_lowercase5(s):
"""返回的结果是字符串全部字符小写与否
"""
for c in s:
if not c.islower():
return False
return True
习题8-5:使得字符串整体偏移
【习题 】 编写一个叫 rotate_word 的函数,接受一个字符串和一个整数作为形参,并返回原字符串按照给定整数量偏移后得到的一个新字符串
- 练习记录:
def rotate_letter(letter, n):
if letter.isupper():
start = ord('A')
elif letter.islower():
start = ord('a')
else:
return letter
c = ord(letter) - start
i = (c + n) % 26 + start
return chr(i)
def rotate_word(word, n):
res = ''
for letter in word:
res += rotate_letter(letter, n)
return res
print(rotate_word('cheer', 7))
print(rotate_word('melon', -10))
print(rotate_word('sleep', 9))
PS C:\Users\Administrator> python D:\WorkSpace\thinkpython2e\rotate.py
jolly
cubed
bunny
-
结果分析:
- 内置函数 ord 可以将字符转化成数值代码,chr 可以将数值代码转化成字符,字母表的字母以字母表顺序编码
>>> ord('a') 97 >>> chr(99) 'c'
- 字符串的 isupper(islower) 方法,如果字符串全部是大写字母(小写字母)返回 True,否则返回 False
>>> 'word'.islower() True >>> 'worD'.isupper() False