Ce face and, or, not
a and b este adevărat doar dacă ambele sunt adevărate. a or b este adevărat dacă cel puțin una este adevărată. not a inversează valoarea logică.
and și or se opresc imediat ce cunosc rezultatul (evaluare scurtcircuitată) și returnează una dintre valorile primite, nu neapărat True/False. De aceea nume or "Anonim" dă o valoare implicită când nume este gol.
Prioritatea este not, apoi and, apoi or. Pune paranteze când combini mai mulți operatori, ca să fie clar.
Exemple
Exemplul 1: Condiții combinate
varsta = 22
student = True
print(varsta >= 18 and student)
print(varsta < 18 or student)
print(not student)
Rezultat
True
True
False
Exemplul 2: Valoare implicită cu or
for nume in ["Ana", ""]:
afisat = nume or "Anonim"
print(afisat)
print(0 or [] or "ultima valoare")
print(3 and 5)
Rezultat
Ana
Anonim
ultima valoare
5
Exemplul 3: Scurtcircuitare
Dacă lista este goală, and se oprește înainte de lista[0], așa că nu apare IndexError.
lista = []
if lista and lista[0] > 10:
print("Primul element e mare")
else:
print("Lista e goală sau primul element e mic")
Rezultat
Lista e goală sau primul element e mic
Greșeli frecvente
- Scrii
&&,||sau!ca în alte limbaje. În Python se scrie cu cuvinte:and,or,not. - Scrii
if culoare == "roșu" or "verde":. Condiția este mereu adevărată, pentru că"verde"singur este adevărat. Corect:culoare in ("roșu", "verde").
Comenzi înrudite
if / elif / else: Execută un bloc de cod doar dacă o condiție este adevărată.bool(), True și False: Tipul logic, cu valorile True și False; bool() spune dacă o valoare este considerată adevărată.in / not in: Verifică dacă o valoare se află într-o listă, text, dicționar sau mulțime.all() și any(): all() verifică dacă toate elementele sunt adevărate; any() verifică dacă cel puțin unul este.