所以,这是相关的代码:
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。我把print(选择)放在那里看看“choice”有什么值,它总是没有,而且“if choice == 1”块永远不会运行。所以我觉得函数根本没有返回一个值,所以错误可能在return()的action()中,但是我已经在这里和其他地方检查了,我看不出它有什么问题。
答案 0 :(得分:4)
input()
总是返回一个字符串,但是你正在测试整数。让它们成为字符串:
if choice in ('1', "move"):
return 1
您输入的choice
与您的任何测试都不匹配,因此该函数在没有达到显式return
语句的情况下结束,Python恢复为None
的默认返回值。 / p>
更好的是,用字典替换整个if/elif/elif
树:
choices = {
'1': 1,
'move': 1,
# ...
'4': 4,
'quit': 4,
}
if choice in choices:
return choices[choice]
else:
print('No such choice!')