Тест: считать уникальные слова «Udacity» - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть задача найти количество уникальных слов в тексте ниже.

В тесте три части

  1. Разделить стих на список слов.Подсказка: вы можете использовать строковый метод, который вы изучили в предыдущем уроке.
  2. Преобразовать список в структуру данных, которая будет хранить только уникальные элементы из списка.
  3. Распечатать длинуконтейнер.

Я попытался разбить стих в список.Делая следующее:

verse = [
["if you can keep your head when all about you are losing theirs and blaming it on you"],
["if you can trust yourself when all men doubt you"],
["but make allowance for their doubting too"],
["if you can wait and not be tired by waiting"],
["or being lied about  don’t deal in lies"],
["or being hated"],
["don’t give way to hating"],
["and yet don’t look too good"],
["nor talk too wise"]]
print(verse, '\n')

Это вторая часть вопроса:

# split verse into list of words
verse_list = str.split(str="", num=string.count(str))
print(verse_list, '\n')

# convert list to a data structure that stores unique elements
verse_set = ''.join(array) 
print(verse_set, '\n')

# print the number of unique words
num_unique = verse.len 
print(num_unique, '\n')

Когда я запускаю тест, я получаю это сообщение об ошибке:

Traceback (most recent call last):
  File "vm_main3.py", line 47, in <module>
    import main
  File "/tmp/vmuser_gbztlklphw/main.py", line 2, in <module>
    import studentMain
  File "/tmp/vmuser_gbztlklphw/studentMain.py", line 1, in <module>
    import count_unique_words
  File "/tmp/vmuser_gbztlklphw/count_unique_words.py", line 14, in <module>
    verse_list = str.split(str="", num=string.count(str))
NameError: name 'string' is not defined
[['if you can keep your head when all about you are losing theirs and blaming it on you'], ['if you can trust yourself when all men doubt you'], ['but make allowance for their doubting too'], ['if you can wait and not be tired by waiting'], ['or being lied about  don’t deal in lies'], ['or being hated'], ['don’t give way to hating'], ['and yet don’t look too good'], ['nor talk too wise']] 

Если кто-то может объяснить мне, что я делаю неправильно, и как я могу правильно отвечать на вопросы, это было бы здорово.

1 Ответ

2 голосов
/ 22 сентября 2019

Вы не показали, что было verse изначально.Я предполагаю, что это длинная строка, что-то вроде этого:

verse = "if you can keep your head when " \
        "all about you are losing theirs " \
        "and blaming it on you " \
        "if you can trust yourself when all " \
        "men doubt you " \
        "but make allowance for their doubting too " \
        "if you can wait and not be tired by waiting " \
        "or being lied about  don’t deal in lies " \
        "or being hated don’t give way to hating " \
        "and yet don’t look too good nor talk too wise"

В инструкции сказано:

Разделить стих на список слов

Они продолжают говорить, что вы можете использовать строковый метод, чтобы сделать это для вас.Ты этого не делал.Вы жестко закодировали список списков строк, а затем связали его с переменной verse.Вы не используете строковый метод.Вы также фактически не жестко закодировали то, о чем просили инструкции: они хотят список слов.Это означает один список, где каждый элемент является словом.

Просто сделайте это:

words = verse.split()

Вот ваш список слов.

Далее в инструкциях сказано:

Преобразование списка в структуру данных, в которой будут храниться только уникальные элементы из списка.

Под этим подразумевается набор.

unique_words = set(words)

И наконец:

Выведите длину контейнера.

print(f"The number of unique words is: {len(unique_words)}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...