Я завершил упражнение после долгих замешательств и сделал этот код, который соответствует его тестам.
WORD_TYPES = {
'verb' : ['go', 'kill', 'eat'],
'direction' : ['north', 'south', 'east', 'west'],
'noun' : ['bear', 'princess'],
'stop' : ['the','in','of']
}
def scan(sentance):
listy = []
counter = 0
for word in sentance.split():
try:
count = counter
for key, value in WORD_TYPES.iteritems():
for ind in value:
if ind == word:
counter += 1
listy.append((key,ind))
if count == counter:
raise KeyError
except KeyError:
try:
value = int(word)
listy.append(('number',value))
except ValueError:
listy.append(('error',word))
return listy
Автор хотел, чтобы мы использовали попытки и исключения, но я не чувствую, что использовал их эффективно. Как лучше их использовать здесь? Кроме того, когда попытки и исключения действительно идеальны? Любые другие советы по улучшению кода также приветствуются.