谷歌课堂:Python -- Mimic.py练习

-2 投票
1 回答
2218 浏览
提问于 2025-04-17 11:16

我开始学习谷歌的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))            

撰写回答