PROMEMORIA — ESPRESSIONI CONDIZIONALI (if / elif / else)


# ============================================================
# ============================================================

# Le espressioni condizionali permettono al programma
# di prendere decisioni basate su condizioni booleane.
# Sono fondamentali per controllare il flusso del codice.


# ============================================================
# 1. STRUTTURA BASE: if
# ============================================================

# if esegue il blocco indentato SOLO se la condizione è True

stock_level = 15

if stock_level < 20:
    print("Stock is low")

# Se la condizione è False, il blocco viene ignorato


# ============================================================
# 2. STRUTTURA if / else
# ============================================================

# else viene eseguito quando la condizione if è False

stock_level = 25

if stock_level < 20:
    print("Stock is low")
else:
    print("Stock is okay")


# ============================================================
# 3. STRUTTURA COMPLETA: if / elif / else
# ============================================================

# elif permette di testare condizioni alternative
# Le condizioni vengono valutate dall’alto verso il basso

totalCost = 150

if totalCost >= 200:
    print("20% discount applied")
elif totalCost >= 100:
    print("10% discount applied")
else:
    print("No discount for purchases under $100")


# ============================================================
# 4. CONDIZIONI MULTIPLE CON OPERATORI LOGICI
# ============================================================

# È possibile combinare più condizioni con:
# and → entrambe devono essere True
# or  → almeno una deve essere True
# not → nega una condizione

product_type = "Fruits"
day_of_week = "Monday"

if product_type == "Fruits" and day_of_week == "Monday":
    print("10% discount on Fruits today!")


# ============================================================
# 5. CONDIZIONI ANNIDATE (if dentro if)
# ============================================================

# Utili quando una decisione dipende da più livelli di verifica

product = "Non-Perishable"
stock = 70

if product == "Perishable":
    daysDelivered = 5
    if daysDelivered >= 4:
        print("Not fresh - Initiate discount")
    else:
        print("Product is fresh")

elif product == "Non-Perishable":
    if stock > 100:
        print("Consider discount")
    else:
        print("No discount needed")

else:
    print("The product is not specified")


# ============================================================
# 6. COMPITO RIASSUNTO — SCONTI SETTIMANALI
# ============================================================

# Variabili di esempio
product_type = "Vegetables"
day_of_week = "Tuesday"

# Logica richiesta dalla scheda
if product_type == "Fruits" and day_of_week == "Monday":
    print("10% discount on Fruits today!")
elif product_type == "Vegetables" and day_of_week == "Tuesday":
    print("15% discount on Vegetables today!")
elif product_type == "Dairy" and day_of_week == "Wednesday":
    print("20% discount on Dairy today!")
elif product_type == "Other":
    print("No discount available.")
else:
    print("No special discounts today.")


# ============================================================
# 7. ERRORI COMUNI DA EVITARE
# ============================================================

# ❌ Dimenticare i due punti :
# if stock < 10   ← ERRORE

# ❌ Indentazione errata
# Python usa l’indentazione per definire i blocchi logici

# ❌ Usare elif senza if
# ❌ Usare più else


# ============================================================
# 8. CONCETTI CHIAVE DA RICORDARE
# ============================================================

# ✔ Ogni catena condizionale inizia con if
# ✔ Puoi avere zero o più elif
# ✔ Puoi avere al massimo un else
# ✔ Le condizioni devono restituire True o False
# ✔ L’ordine delle condizioni è fondamentale
# ✔ L’indentazione NON è opzionale in Python