Ответ 1
Попробуйте следующее:
i = 5
ii = 10
if i == 5 and ii == 10:
print "i is 5 and ii is 10"
Изменить: О, и вам не нужна эта точка с запятой в последней строке (отредактируйте, чтобы удалить ее из моего кода).
В С# мы можем использовать &&
(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?
Попробуйте следующее:
i = 5
ii = 10
if i == 5 and ii == 10:
print "i is 5 and ii is 10"
Изменить: О, и вам не нужна эта точка с запятой в последней строке (отредактируйте, чтобы удалить ее из моего кода).
Как указано, "&" в 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
" - (приоритет, короткое цитирование, поведение с целыми аргументами и т.д.), Поэтому вам повезло, что вы поймали это здесь, а не обманул, пока не произвел менее явные ошибки.
Правильный оператор, который будет использоваться, - это ключевые слова 'или' и 'и', которые в вашем примере могут быть правильными:
if i == 5 and ii == 10:
print "i is 5 and ii is 10"
Подробности можно найти в разделе "Логические операции" в справочной системе.
Вы также можете проверить их как пару.
if (i,ii)==(5,10):
print "i is 5 and ii is 10"
&
используется для побитового сравнения. вместо этого используйте and
. и btw, вам не нужна точка с запятой в конце инструкции print.
В python используйте and
вместо &&
следующим образом:
#!/usr/bin/python
foo = True;
bar = True;
if foo and bar:
print "both are true";
Отпечатки:
both are true