Python 为什么要忽略elif语句

Python 为什么要忽略elif语句,python,Python,我正在编写一个程序作为if-elif-else语句的练习,我可以提供一些关于为什么elif语句没有运行的建议 我想给你一个选择,为存货挑选石头。 这是可行的,但如果我说我不想捡起石头,那elif语句似乎被忽略了,我捡起石头,它们被添加到我的库存中 我没有实际的错误,但是我不明白为什么elif语句没有被执行。作为本练习的一部分,我在同一个程序中多次使用了此选项,并且没有出现这种持续的问题 以下是我似乎有问题的陈述: elif num >=2 and rocks_there == True:

我正在编写一个程序作为if-elif-else语句的练习,我可以提供一些关于为什么elif语句没有运行的建议

我想给你一个选择,为存货挑选石头。 这是可行的,但如果我说我不想捡起石头,那elif语句似乎被忽略了,我捡起石头,它们被添加到我的库存中

我没有实际的错误,但是我不明白为什么elif语句没有被执行。作为本练习的一部分,我在同一个程序中多次使用了此选项,并且没有出现这种持续的问题

以下是我似乎有问题的陈述:

elif num >=2 and rocks_there == True:
        print("""You keep within touching distance of the castle wall.
                You come across some rocks. Do you want to pick them up.""")
        take = input("> ").lower()

        if "yes" or "y" in take:
            print("You pick up the rocks.")
            inventory.append('Rocks')
            rocks_there = False
            print("You follow the castle walls around to the front of the castle again.")
            grounds()

        elif "no" or "n" in take:
            inventory = inventory
            rocks_there = True
            print("You leave the rocks on the path.")
            print("You follow the castle walls around to the front of the castle.")
            grounds()
以下是整个功能:

def fog(): 全球库存 你在那里吗 打印(“当浓雾开始在你周围盘旋时,你沿着城堡左边的小路行走。”) 打印(“你想继续还是回到院子里?”)

choice=input(“>”).lower()
如果选择“返回”:
理由()
elif“携带”选项:
num=random.randint(0,10)
如果num<2:
打印(“雾”)信封,直到你不知道自己在哪里,看不到其他东西为止。
当你跨过高耸的悬崖边缘时,你突然感到自己摔倒了。
你死了,但至少你不是亡灵。”“”)
出口(0)
elif num>=2,rocks_there==True:
打印(“”)您保持在城堡墙的接触距离之内。
你碰到了一些石头。你想把它们捡起来吗
take=输入(“>”).lower()
如果“是”或“y”表示接受:
打印(“你捡起石头。”)
盘存。追加(‘岩石’)
那里的石头=假的
打印(“你沿着城堡的墙壁再次走到城堡的前面。”)
理由()
如果“否”或“n”出现在take中:
存货=存货
那里的岩石=真的
打印(“你把石头留在路上。”)
打印(“你沿着城堡的墙壁走到城堡的前面。”)
理由()
elif num>=2,rocks_there==False:
打印(“你沿着城堡的墙壁走到城堡的前面。”)
其他:
打印(“雾搅乱了你的大脑,我不理解你。”)
打印(“我希望你能找到出路。”)
打印(“再见!”)
出口(0)

如果您尝试此简单代码

mylist = []
if "yes" or "y" in mylist:
    print("oops")
您将看到代码被解释为

mylist = []
if "yes" or ("y" in mylist):
    print("oops")
自从

if "yes":
    print("oops")
它将始终通过
if
-部分运行,而不会通过
elif
部分运行。那是因为“是”被认为是一个错误

你可能想要的是

if take in ["y", "yes"]:
即“检查用户输入(
获取
)是否在可能答案的列表(
[]
)中”。语句的“否”部分类似。

如果“是”始终为真,则不再检查其他条件。
if take in ["y", "yes"]: