============================================================
1. Introduzione agli operatori logici
============================================================
Gli operatori principali:
and → entrambe le condizioni devono essere vere
or → almeno una condizione deve essere vera
not → inverte il valore di una condizione booleana
============================================================
2. Operatore AND — entrambe le condizioni devono essere vere
============================================================
Esempio:
price = 5
stock = 20
if price < 10 and stock > 0:
print("The product is affordable AND available.")
============================================================
3. Operatore OR — almeno una condizione vera
============================================================
Esempio:
age = 16
has_parent = True
if age >= 18 or has_parent:
print("User can enter.")
============================================================
4. Operatore NOT — inverte una condizione
============================================================
Esempio:
is_expired = False
if not is_expired:
print("Product is still valid.")
============================================================
5. Combinazione di AND e OR
============================================================
Uso di parentesi per chiarezza (importantissimo!)
Esempio:
price = 3.5
stock = 50
category = "Produce"
if (price < 5 and stock > 20) or category == "Produce":
print("Special discount available!")
============================================================
6. Precedenza degli operatori
============================================================
NOT ha priorità più alta
AND viene dopo
OR è l’ultimo
Esempio:
x = True or False and False
print(x) # True, perché AND viene prima
============================================================
7. Condizioni multiple con range
============================================================
Controllare se un valore è dentro un intervallo con AND
Esempio:
temp = 22
if temp > 18 and temp < 30:
print("Comfortable temperature.")
============================================================
8. Controllare range usando una forma più leggibile
============================================================
Esempio:
if 18 < temp < 30:
print("Same result, more Pythonic!")
============================================================
9. Combinazione di condizioni su stringhe
============================================================
Esempio:
product = "milk"
if product.startswith("m") and len(product) < 5:
print("Product qualifies.")
============================================================
10. Combinazione di condizioni con liste
============================================================
Esempio:
cart = ["milk", "bread", "eggs"]
if "milk" in cart and "eggs" in cart:
print("Breakfast items complete!")
============================================================
11. Condizioni su dizionari
============================================================
Esempio:
stock = {"milk": 10, "eggs": 0}
if stock["milk"] > 0 and stock["eggs"] == 0:
print("Milk available but eggs out of stock.")
============================================================
12. Usare OR per gestire valori di fallback
============================================================
Esempio:
user_input = ""
username = user_input or "Guest"
print(username)
============================================================
13. Combinazione di NOT con AND/OR
============================================================
Esempio:
available = False
price = 4.0
if not available or price > 10:
print("Cannot purchase.")
============================================================
14. Condizioni annidate vs condizioni combinate
============================================================
Esempio annidato:
if price < 5:
if stock > 10:
print("OK")
Stessa logica, molto più pulita:
if price < 5 and stock > 10:
print("OK")
============================================================
15. Condizioni con più operatori logici (caso reale)
============================================================
Esempio:
age = 25
has_id = True
banned = False
if has_id and (age >= 18) and not banned:
print("Access granted.")