Я пытаюсь завершить Learn Python the Hard Way упражнение 48, и когда я тестирую носеты, к моему ужасу, я получаю KeyError на test_numbers() и test_errors(). Включенный в список вот мой код, который я использую (код в основном основаны от решения DairyLee в):Учиться Python Hard Way Ex 48
lexicon = {}
for directions in ['north', 'south', 'east', 'west', 'down',
'up', 'left', 'right', 'back']:
lexicon.update({directions: 'direction'})
for verbs in ['go', 'stop', 'kill', 'eat']:
lexicon.update({verbs: 'verb'})
for stops in ['the', 'in', 'of', 'from', 'at', 'it']:
lexicon.update({stops: 'stop'})
for nouns in ['door', 'bear', 'princess', 'cabinet']:
lexicon.update({nouns: 'noun'})
stuff = raw_input('> ')
words = stuff.lower().split()
def scan(sentance):
words = sentance.lower().split()
pairs = []
for word in words:
if lexicon[word] == 'direction':
pairs.append(('direction', word))
elif lexicon[word] == 'verb':
pairs.append(('verb', word))
elif lexicon[word] == 'noun':
pairs.append(('noun', word))
elif lexicon[word] == 'stop':
pairs.append(('stop', word))
elif lexicon[word] == 'noun':
pairs.append(('noun', word))
elif convert_number(word) != None:
pairs.append(('number', convert_number(word)))
else:
pairs.append(('error', word))
return pairs
def convert_number(s):
try:
return int(s)
except ValueError:
return None
А вот страница. http://learnpythonthehardway.org/book/ex48.html, который содержит соответствующую часть теста:
def test_numbers():
assert_equal(lexicon.scan("1234"), [('number', 1234)])
result = lexicon.scan("3 91234")
assert_equal(result, [('number', 3),
('number', 91234)])
def test_errors():
assert_equal(lexicon.scan("ASDFADFASDF"), [('error', 'ASDFADFASDF')])
result = lexicon.scan("bear IAS princess")
assert_equal(result, [('noun', 'bear'),
('error', 'IAS'),
('noun', 'princess')])
В моем понимании это кажется, что тест не будет продолжаться до тех пор, пока ключ не в словаре лексикона, который странно, как я положил еще в конце цикла for. Помощь очень ценится!
весь смысл делать учебник, чтобы попытаться понять этот тип материала для себя ... и я даже не уверен, что это вопрос – konkked
я не вижу 'test_numbers() 'или' test_errors() 'в любом месте вашего кода. Однако я вижу 'try: введите код здесь'. –
@konkked Я не понимаю, почему этот код не работает. Должен ли я публиковать мои результаты из powershell? – Reginsmal