Подтвердить что ты не робот

Как использовать boolean 'и' в Python

В С# мы можем использовать && (boolean и) следующим образом:

int i = 5;
int ii = 10;
if(i == 5 && ii == 10) {
    Console.WriteLine("i is 5, and ii is 10");
}
Console.ReadKey(true);

Но попробуйте это с помощью python:

i = 5
ii = 10
if i == 5 && ii == 10:
    print "i is 5 and ii is 10";      

Я получаю сообщение об ошибке: SyntaxError: invalid syntax

Если я использую одиночный &, по крайней мере, я не получаю синтаксическую ошибку. Как сделать boolean && в Python?

4b9b3361

Ответ 1

Попробуйте следующее:

i = 5
ii = 10
if i == 5 and ii == 10:
      print "i is 5 and ii is 10"

Изменить: О, и вам не нужна эта точка с запятой в последней строке (отредактируйте, чтобы удалить ее из моего кода).

Ответ 2

Как указано, "&" в python выполняет побитовое и операцию, как и в С#. and является соответствующим эквивалентом оператору &&.

Поскольку мы имеем дело с булевыми (i == 5 is True и ii == 10 также True), вы можете задаться вопросом, почему это ни в коем случае не работало (True, считающееся целочисленным числом, все равно означает True и True - истинное значение) или генерирует исключение (например, запрещая побитовые операции над булевыми типами)

Причиной является приоритет оператора. Оператор "and" связывается более слабо, чем ==, поэтому выражение: "i==5 and ii==10" эквивалентно: "(i==5) and (ii==10)"

Однако побитовое & имеет более высокий приоритет, чем "==" (так как вы не хотели бы, чтобы выражения типа "a & 0xff == ch" означали "a & (0xff == ch)" ), поэтому выражение фактически интерпретируется как

if i == (5 & ii) == 10:

Который использует цепочку операторов python, чтобы означать: имеет ли значение значение ii и имеет значение 5, равное как i, так и 10. Очевидно, это никогда не будет истинным.

На самом деле вы получили бы (по-видимому) правильный ответ, если бы вы включили скобки, чтобы заставить приоритет, так что:

if (i==5) & (ii=10)

приведет к печати заявления. Однако это неправильная вещь: "&" имеет много разных семантик для "and" - (приоритет, короткое цитирование, поведение с целыми аргументами и т.д.), Поэтому вам повезло, что вы поймали это здесь, а не обманул, пока не произвел менее явные ошибки.

Ответ 3

Правильный оператор, который будет использоваться, - это ключевые слова 'или' и 'и', которые в вашем примере могут быть правильными:

if i == 5 and ii == 10:
    print "i is 5 and ii is 10"

Подробности можно найти в разделе "Логические операции" в справочной системе.

Ответ 4

Вы также можете проверить их как пару.

if (i,ii)==(5,10):
    print "i is 5 and ii is 10"

Ответ 5

& используется для побитового сравнения. вместо этого используйте and. и btw, вам не нужна точка с запятой в конце инструкции print.

Ответ 6

В python используйте and вместо && следующим образом:

#!/usr/bin/python
foo = True;
bar = True;
if foo and bar:
    print "both are true";

Отпечатки:

both are true