Итак, вот соответствующий код:Python 3.3: Не удается получить функции возвращать ничего, кроме None
def action():
print("These are the actions you have available:")
print("1 - Change rooms")
print("2 - Observe the room (OUT OF ORDER)")
print("3 - Check the room(OUT OF ORDER)")
print("4 - Quit the game")
choice = input("What do you do?\n> ")
if choice in (1, "move"):
return(1)
elif choice in (4, "quit"):
return(4)
play = True
while play == True:
###some functions that aren't relevant to the problem
choice = action()
print(choice)
if choice == 1:
change_room()
## more code...
Функция всегда возвращает None. Я помещаю там распечатку (выбор), чтобы увидеть, какое значение имеет значение «выбор», и оно всегда ничего не связывает, а блок «if choice == 1» никогда не запускается. Поэтому я думаю, что функция не возвращает значение вообще, поэтому ошибка, вероятно, связана с return() в действии(), но я проверил здесь и в другом месте, и я не вижу, что с ним не так.
Ааа .. человек, я должен тестируемым с «двигаться», я просто одержимы пытаемся только с 1! Если бы я попытался «переехать», я бы сказал, что я мог бы это понять. Большое спасибо Martijn. Что вы можете сказать о преимуществах использования словаря вместо тестов if/elif? Это выглядит менее запутанным/более элегантным с dict. – user2690126
Отображение более компактно, проще в расширении и может быть передано в случае необходимости. Поиск быстрее; просто * один * тест необходим. –
Gotcha, еще раз спасибо. – user2690126