2012-01-27 4 views
-2

, поэтому я начал использовать класс python для Google и не имел таких трудностей с любыми упражнениями до этого момента. однако я борюсь с этим. Я googled далеко и широко и нашел 2 результата, и хотел был бы услышать любые предложения также.Google Classes: Python - Mimic.py Упражнение

вот упражнение:

«Прочитал в файл, указанный в командной строке Сделайте простой сплит() на пробелы, чтобы получить все слова в файле Вместо того, чтобы читать файл построчно.. линия, это легче читать его в одну гигантскую строку и разделить его один раз.

построить «имитируют» Dict, который отображает каждое слово, которое появляется в файле к списку всех слов, которые непосредственно следуют за этим словом в файл Список слов может быть в любом порядке и включать дубликатов. Так, например, у ключа «и» может быть список ["then", "best", "then", "after", ...] listing все слова, которые пришли после "и" в тексте. Будем говорить, что пустая строка - это то, что предшествует - первое слово в файле.

С помощью mimic dict довольно легко испускать случайный текст , который имитирует оригинал. Распечатайте слово, затем посмотрите, какие слова могут появиться дальше, и выберите один случайным образом, как следующую работу. Используйте пустую строку в качестве первого слова для простых вещей. Если мы когда-нибудь застрянем со словом, которое не находится в dict, вернитесь к пустой строке, чтобы все перемещалось.

Примечание: стандартный модуль «случайный» python включает в себя метод 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

С какой частью вам нужна помощь? Вы что-то пробовали? –

+0

У меня проблемы с функцией print_mimic, я в порядке с текстом, разбивая его на список строк, но оттуда я не знаю, куда идти – mcbaby

ответ

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))    
+0

В ретроспективе я не должен был размещать 'import' внутри функции ... Редактирование. –