在Python中的if语句中对条件进行分组的正确语法是什么?

时间:2019-01-05 15:15:38

标签: python if-statement syntax

我无法完全理解python中if语句的语法。是否可以将条件归纳如下所示?

if my_age and neighborhood_age > 20:

python将完全理解为以下代码: if my_age> 20 and neighborhood_age > 20:吗?

如果它确实了解完全相同的内容,那么如何对条件进行分组?例如:

假设我有三个条件:

my_age and neighborhood_age > 20 father_age < 60 cousin_age < my age

编写if语句的正确方法是什么? if (my_age and neighborhood_age > 20) and (father_age < 60) and (cousin_age < my age):吗?

如果我开始混合使用'and'和'or'运算符,会发生什么?编写以下代码的最佳方法是什么?

if ((my_age and neighborhood_age > 20) and (father_age < 60) and (cousin_age < my age)) or girlfriend_age > 18:

2 个答案:

答案 0 :(得分:1)

  

python将完全按照上面的代码理解:if my_age> 20 and neighborhood_age> 20:吗?

不,不会。 Python将其解释为:

if (my_age) and (neighborhood_age > 20)

如果要将两个值与第三个值进行比较,则必须这样做:

if (my_age > 20 and neighborhood_age > 20): ...

或者,为了清晰起见,将其分组:

if ((my_age > 20) and (neighborhood_age > 20)): ...

如果要比较的值很多,可以使用all

if all(age > 20 for age in (my_age, neighborhood_age)): ...

对于您的最后一个示例,我可能会这样写,使用多行代码和括号消除歧义:

if ((my_age > 20 and neighborhood_age > 20) and 
    (father_age < 60) and 
    (cousin_age < my age)
) or (girlfriend_age > 18):
    ...

在几乎所有情况下(除了最简单的情况),您都应该使用括号将您的意图绝对清楚。

答案 1 :(得分:1)

您必须自己编写每个条件。 and关键字与将if语句放入if语句相同。 例如:

if my_age >= 20 and neighborhood_age >= 20:
    # Do something

是同一件事

if my_age >= 20:
    if neighborhood_age >= 20:
         # Do something

要混合使用andor,更干净的方法是使用圆括号和结束行。