Я не знаю, сколько было введено в упражнении 48, но у меня есть несколько комментариев к вашему решению выше.
Во-первых, с отдельной переменной для каждого списка слов, это немного сложносохранить этот код.Во-вторых, i
обычно используется в качестве переменной только при подсчете натуральных чисел из 0
.
. Рассмотрим:
_LEXICON = dict(
direction = ['north', 'south', 'east', 'west', 'down', 'up', 'down', 'right'],
verb = ['go', 'stop', 'kill', 'eat'],
stop = ['the', 'in', 'at', 'of', 'from', 'at', 'it'],
noun = ['door', 'bear', 'princess', 'cabinet'],
number = ['0','1','2','3','4','5','6','7','8','9'],
)
def scan(words):
result = []
for word in words.split():
found_category = 'error'
for category, category_lexicon in _LEXICON.items():
if word in category_lexicon:
found_category = category
break
result.append((found_category, word))
return result
Но мы можем добиться большего;поиск элементов в списке идет медленно.Если вы хотите что-то найти, вам нужен словарь:
_LEXICON = dict(...)
_LEXICON_INDEX = dict()
for category, words in _LEXICON:
for word in words:
_LEXICON_INDEX[word] = category
def scan(words):
result = []
for word in words.split():
result.append((_LEXICON_INDEX.get(word, 'error'), word))
return result
Конечно, это не все тесты в упражнении.Я оставлю это вам, чтобы исправить мой код.;)