============================================================

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.")