Каков правильный синтаксис для группировки условий в операторе if в Python? - PullRequest
0 голосов
/ 05 января 2019

У меня проблемы с полным пониманием синтаксиса оператора if в python. Можно ли сгруппировать условия, как показано ниже?

if my_age and neighborhood_age > 20:

Будет ли Python понимать вышеуказанный код точно как: if my_age> 20 and neighborhood_age > 20:?

При условии, что он понимает одно и то же, как я могу сгруппировать условия? e.g.:

Предположим, у меня есть три условия:

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):?

А что будет, если я начну смешивать операторы 'и' и 'или'? Как лучше всего написать следующий код:

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

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Вы должны написать каждое условие самостоятельно. Ключевое слово and - это то же самое, что и выражение if внутри оператора if. Например:

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

Это то же самое, что

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

Чтобы смешать and и or, нужно использовать круглые скобки и конечную строку.

0 голосов
/ 05 января 2019

Будет ли Python понимать приведенный выше код в точности как: если my_age> 20 и окрестность> 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)): ...

Если у вас есть много значений для сравнения, вы можете использовать все :

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):
    ...

Практически во всех случаях, кроме самых простых, вы должны использовать круглые скобки, чтобы прояснить свое намерение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...