编写一个接受三个参数、一个文件名和两个子字符串的函数,并返回包含这两个子字符串的文件中所有唯一单词的列表(按它们在文件中第一次出现的顺序)。在
例如,前一句中包含子串“th”和“at”的所有唯一单词都是['that']。您的函数应通过以下doctest:
def words_contain2(filename, substring1, substring2):
"""
>>> words_contain2('words_tst.txt', 're', 'cu')
['recursively', 'recursive.']
>>> words_contain2('words_tst.txt', 'th', 'at')
['that']
>>> words_contain2('/usr/share/dict/words', 'ng', 'warm')
['afterswarming', 'hearthwarming', 'housewarming', 'inswarming', 'swarming', 'unswarming', 'unwarming', 'warming', 'warmonger', 'warmongering']
"""
if __name__ == '__main__':
import doctest
doctest.testmod(verbose = True)
实际上我已经试过这样做了:
^{pr2}$但它返回结果为recursively, recursively, recursive, recursively
在我看来,有两个错误:
我丢失了原始文件word_tst.txt
。在
你正朝着正确的方向前进。首先,您使用的是字符串而不是列表。可以按如下方式创建列表:
其次,你当前没有检查你找到的单词是否已经在列表中。您可以使用当前使用的同一关键字:
^{pr2}$is
也可以在文件列表上使用for循环,而不是使用count:
将结果保存到
list datatype
中,然后检查结果列表中是否已存在单词。如果不存在,则将单词追加到结果列表中,否则忽略。在演示:
以字符串格式打印结果:
print " ".join(result)
我们可以使用for loop从文件中迭代单词:
例如
^{pr2}$关闭文件对象的良好练习
例如
或用with语句打开文件。在
注意:给出正确的变量名。在
例如,可变名称类似于}。所以对其他人来说更具可读性。在
wordslist
,而不是{过滤包含子字符串的字符串的列表而不保持唯一性,但是使用过滤器函数可以很容易地排序
但我们需要创建一个唯一的列表并保持顺序
^{pr2}$相关问题 更多 >
编程相关推荐