Python返回在上一个函数中触发else
我试图用python制作一个简单的基于文本的冒险游戏,但遇到了一个小错误,当我不想调用else命令时,调用了它。下面是我代码中的一个小示例Python返回在上一个函数中触发else,python,if-statement,triggers,Python,If Statement,Triggers,我试图用python制作一个简单的基于文本的冒险游戏,但遇到了一个小错误,当我不想调用else命令时,调用了它。下面是我代码中的一个小示例 ## inventory var ## inv=["torch"] ## inventory function ## def ichk(): print(f" You are carrying{inv}") return ##First room, links to a3##
## inventory var ##
inv=["torch"]
## inventory function ##
def ichk():
print(f" You are carrying{inv}")
return
##First room, links to a3##
def a2():
move=input("placeholder text.. You notice an exit to your 'east': ")
if move==("e"):
print("You exit to the east")
a3()
if move==("i"):
ichk()
if move==("q"):
print("You find nothing of value")
a2()
else:
print("You can't move in that direction")
a2()
当触发函数ichk()时(通过用户输入“i”),将打印库存,但在返回函数a2()的开头之前,也会打印else print语句。我是python新手,因此我理解构造的参数可能不是高效/有效的编码,但我不确定为什么会触发这种情况
感谢所有花时间阅读的人。当您这样链接语句时,您需要使用
elif
语句,否则输入'i',您的第三个if
语句将为false,并运行相关的else
语句:
## inventory var ##
inv=["torch"]
## inventory function ##
def ichk():
print(f" You are carrying{inv}")
return
##First room, links to a3##
def a2():
move=input("placeholder text.. You notice an exit to your 'east': ")
if move==("e"):
print("You exit to the east")
a3()
elif move==("i"):
ichk()
elif move==("q"):
print("You find nothing of value")
a2()
else:
print("You can't move in that direction")
a2()
在Python中,如果有多个条件语句,则需要将它们写成:if、elif、elif、elif、…、else
## inventory var ##
inv=["torch"]
## inventory function ##
def ichk():
print(f" You are carrying{inv}")
return
##First room, links to a3##
def a2():
move=input("placeholder text.. You notice an exit to your 'east': ")
if move==("e"):
print("You exit to the east")
a3()
elif move==("i"):
ichk()
elif move==("q"):
print("You find nothing of value")
a2()
else:
print("You can't move in that direction")
a2()
您需要使用
elif
Edit:谢谢@Loocid@user1558604这应该是elif
。当我将elif添加到move==(“I”)时,ichk()函数不会返回到调用函数。相反,它似乎只是在打印清单后退出这两个函数。他的意思是,第一个函数之后的所有if都应该是elif,而最后一个函数则保持不变。但是,当激活ichk()时,“new”错误仍然存在。清单打印出来,现在根本不会返回到前一个调用者a2()。谢谢,但是通过更改此代码,ichk()中的返回函数不再工作。它不会返回到前一个调用程序a2()。如果有ichk(),则将其更改为ichk(),然后在下面更改为a2()。这将运行ichk(),然后运行a2()。谢谢。这已经解决了问题!。。我仍然有点困惑,为什么我的原始代码触发了else语句,为什么我需要在ichk()下面添加函数。我猜return命令从调用它的确切位置返回。事实上这也许能解释,你明白了。无论何时调用函数,python都会暂停当前函数,执行该函数将要执行的任何操作,然后在完成时恢复原始函数。感谢您解释elif过程。在代码中使用多个if语句(库存除外),我还没有遇到任何问题。但是,更改为elif最终导致return语句退出函数,而不是从头开始。另一位用户指出,我需要在ichk()下面添加a2()函数,从而解决了这个问题。仍然在学习python。再次感谢您的回复。