谷歌课堂:Python -- Mimic.py练习
我开始学习谷歌的Python课程,到目前为止,做的练习都还挺顺利的。不过,这道题我有点儿困难。我在网上查了很多资料,只找到两个结果,想听听大家的建议。
这是练习题:
“从命令行读取指定的文件。对文件中的内容进行简单的按空格分割,获取所有的单词。与其一行一行地读取文件,不如把整个文件读成一个大字符串,然后一次性分割。”
“构建一个‘模仿’字典,这个字典将文件中每个出现的单词映射到一个列表,列表中包含所有紧跟在该单词后面的单词。这个单词列表可以是任意顺序,并且可以包含重复的单词。例如,键‘and’可能对应的列表是[‘then’, ‘best’, ‘then’, ‘after’, ...],列出所有在文本中跟在‘and’后面的单词。我们可以认为在文件中的第一个单词之前是一个空字符串。”
“有了这个模仿字典,就很容易生成类似原文的随机文本。先打印一个单词,然后查找可能跟在后面的单词,从中随机选择一个作为下一个单词。用空字符串作为第一个单词来开始。如果遇到一个不在字典中的单词,就返回到空字符串,继续进行。”
“注意:Python的标准模块‘random’里有一个random.choice(list)的方法,可以从非空列表中随机选择一个元素。”
“为了好玩,可以把你的程序的输出作为输入再喂给它。可以尝试让它在70列左右加上换行,这样输出看起来会更好。”
这里是提供的代码:
import random
import sys
def mimic_dict(filename):
"""Returns mimic dict mapping each word to list of words which follow it."""
def print_mimic(mimic_dict, word):
"""Given mimic dict and start word, prints 200 random words."""
def main():
if len(sys.argv) != 2:
print 'usage: ./mimic.py file-to-read'
sys.exit(1)
dict = mimic_dict(sys.argv[1])
print_mimic(dict, '')
if __name__ == '__main__':
main()
任何帮助都非常感谢!
1 个回答
1
这里是一个打印模拟的函数。你在评论中提到的内容有点不清楚,不知道你是否需要帮助才能达到这个阶段。请注意使用了random.choice
这个内置函数,挺不错的。
import random
def print_mimic(mimic_dict, word):
l = []
for i in range(200):
word = random.choice(mimic_dict.get(word, ''))
l.append(word)
print(' '.join(l))