Python函数运行到第一个if语句,而不管输入是什么

Python函数运行到第一个if语句,而不管输入是什么,python,Python,我正在通过在线教程学习Python。我的问题是,当我运行脚本时,无论我输入什么,我得到的响应都是if go==“kitchen” 我相信问题在于你的第一个if语句 在大多数编程语言中,你不能像你那样只说“或”。您需要做的是在所有条件下重复“go==”部分 if go == Kitchen or go == breakfast: 它现在正在做的是评估(go==Kitchen)并发现它是错误的。然后它评估“早餐”,结果为真。因为它是一个“或”语句,所以整个if都是真的。正如注释中提到的,您在这里使

我正在通过在线教程学习Python。我的问题是,当我运行脚本时,无论我输入什么,我得到的响应都是if go==“kitchen”


我相信问题在于你的第一个if语句

在大多数编程语言中,你不能像你那样只说“或”。您需要做的是在所有条件下重复“go==”部分

if go == Kitchen or go == breakfast:

它现在正在做的是评估(go==Kitchen)并发现它是错误的。然后它评估“早餐”,结果为真。因为它是一个“或”语句,所以整个if都是真的。

正如注释中提到的,您在这里使用的
是不正确的。这:

go == "kitchen" or "breakfast"
相当于:

(go == "kitchen") or "breakfast"
运算符将其两个操作数强制转换为布尔值,这将为您提供:

(something) or true

这总是减少到
true
,因此您总是输入if语句,正如Ignacio所说,您需要一个新的教程

如果子表达式
go==Kitchen
breaken
计算为
true
,则表达式
go==Kitchen
将为true。如果
go
的计算结果与
Kitchen
的计算结果相同,或者它们的类型定义了一个为它们定义相等性的
\uuuuuueq\uuuu
方法,或者如果
早餐
是一个非
的对象,则会发生这种情况

检查变量是否包含列表中的值的方法是:

if go in (Kitchen, breakfast):
   # do something
还要注意的是,您的代码没有显示变量
Kitchen
breaken
的定义位置,并且缩进不正确。

语法

if go == "Kitchen" or "breakfast":
是错误的,因为评估的顺序。似乎你打算检查围棋是“厨房”还是“早餐”。但是,您检查go是“kitchen”还是字符串“早餐”是真的。后者总是这样,因为非空字符串的计算结果不是False

描述您意图的直观方式是:

if (go == "kitchen") or (go == "breakfast"):
也许你还可以写一些更具蟒蛇风格的东西:

if go in ["kitchen", "breakfast"]:

若要检查某个条件是否为一系列内容之一,则应在中使用
,例如:

if go in ('Bathroom', 'take a dump', 'have a beep'):
    # do something...
elif go in ('Kitchen', 'Living room'):
    # etc...
else:
    # no idea where to go?

的使用并没有达到您预期的效果,其他帖子已经对此进行了解释。

您需要一个新的教程,因为
的用法不正确。目前,此程序将因语法错误而中止。缩进在Python中非常重要。请把它修好。此外,还有像
bed
sleep
这样的东西是不带引号的。调用函数时也会出错。您不喜欢
查斯,是吗?为什么有人投了反对票?无论多么简单,这都是一个有效的问题。除非有重复项。@user1571810,这是:请使用它是的,它们不是变量,而是字符串。我只是在尝试不同的东西,把引语去掉,忘了把它们放回去。谢谢你的帮助。@user1571810不管它们是变量还是字符串。同样的评估规则也适用(当然,除了有额外的评估步骤)。
if go in ('Bathroom', 'take a dump', 'have a beep'):
    # do something...
elif go in ('Kitchen', 'Living room'):
    # etc...
else:
    # no idea where to go?