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##

我试图用python制作一个简单的基于文本的冒险游戏,但遇到了一个小错误,当我不想调用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()
    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。再次感谢您的回复。