Ошибка обработки условия сравнения строк
a="Hello"
b="World"
c="Hello"
d="World"
if a==b & c==d :
print("success")
при запуске выдается ошибка:
(unsupported operand type(s) for &: 'str' and 'str')
Ответы (2 шт):
Python3 не имеет логического оператора &, вместо оператора & поставьте and, вот так:
a="Hello"
b="World"
c="Hello"
d="World"
if a==b and c==d:
print("success")
для логических условий надо использовать
andвместо&&if a==b and c==d&- это побитовое "и" и в данном примере он может быть использован:
ошибка:
unsupported operand type(s) for &: 'str' and 'str'
связана с тем, что оператор & имеет больший приоритет, чем оператор ==, поэтому питон пытается выполнить операцию
b & c
но b и c - это строки, а для них оператора побитового "И" не существует
однако если правильно расставить приоритеты, то можно & применить:
if (a==b) & (c==d):
теперь сначала будут вычислены a==b и c==d и хотя они булевы, но булевы однозначно соотносятся с целочисленными значениями - False - 0, True - 1
потому что будут возможны 2 варианты:
a == bиc == d- т.е. будет1 & 1, т.е.1и условие будет выполненоa != bиc == d- т.е. будет0 & 1, т.е.0и условие не будетa == bиc != d- т.е. будет1 & 0, т.е.0и условие не будетa != bиc != d- т.е. будет0 & 0, т.е.0и условие не будет
таким образом в данном случае будет выполнено логическое "И" между 0/1 и 0/1 и будет эквивалентна if a==b and c==d: