Benvenuto/a! In questa lezione impari a scrivere condizioni if, else e elif in Python, a creare blocchi di codice indentati correttamente e ad affrontare condizioni semplici con esempi pratici. Queste competenze sono alla base di ogni programma che deve decidere cosa fare in base ai dati in ingresso.
🔗 Ripassi consigliati :
• Lezione 2 – Il tuo primo script: Hello, Python! → https://www.saperesemplice.com/primo-script-python-hello/
• Lezione 3 – Variabili e Tipi di Dato → https://www.saperesemplice.com/variabili-tipi-dato-python/
• Lezione 4 – Input e Output → https://www.saperesemplice.com/lezione-3-input-output-python/
• Percorso Python – Programmare da zero → https://www.saperesemplice.com/corsi-informatica/corsi-di-informatica-python/
Dettagli lezione
⏱️ Tempo stimato: 25–30 minuti
🧩 Difficoltà: Facile
🎯 Obiettivi specifici
- Comprendere la sintassi di
if,elif,elsee quando usarli. - Scrivere condizioni semplici leggibili usando operatori di confronto e logici.
- Indentare i blocchi di codice in modo corretto (4 spazi) ed evitare errori comuni.
- Applicare truthiness, condizioni annidate e la conditional expression (
x if cond else y).
🧱 Blocchi di codice indentati in Python
In Python l’indentazione definisce i blocchi: non ci sono parentesi graffe come in altri linguaggi. Dopo due punti : si indenta la riga successiva per indicare il blocco che appartiene a quella struttura (if, elif, else, for, funzioni, ecc.).
Regola pratica: usa 4 spazi per ogni livello di indentazione (coerenti in tutto il file). Evita di mescolare tab e spazi.
# Esempio di blocco indentato
age = 18
if age >= 18:
print("Access granted") # questa riga appartiene al blocco dell'if
print("Done") # questa riga è fuori dal blocco
💡 Best practice: mantieni un’indentazione costante e leggibile, soprattutto quando annidi più livelli.
Errori frequenti di indentazione
if True:
print("Hello") # ❌ IndentationError: expected an indented block
if True:
print("Hello") # ✅ corretto
# ❌ Evita di mescolare TAB e spazi: può causare errori difficili da diagnosticare
if True:
\tprint("Hello") # (tab) → potrebbe creare conflitti se il resto usa spazi
Domanda per te: quale tool o impostazione dell’editor usi per visualizzare i caratteri invisibili e garantire 4 spazi per tab?
🔍 Condizioni semplici con if
La forma base di if esegue un blocco solo quando la condizione è truthy.
# Sintassi base
if condition:
# block
...
# Esempi
temperature = 31
if temperature > 30:
print("It's a hot day")
name = ""
if not name:
print("Please, enter your name")
👀 Truthiness: sono considerati falsy
False,None,0, contenitori vuoti ("",[],{},set()), range vuoti. Tutto il resto è truthy.
Errore comune da evitare
Confondere
=con==nelle condizioni.=è assegnazione (e non è valido dentro l’espressione delif),==è confronto. In Python scrivereif x = 5:causa SyntaxError. Usa sempre==per confrontare.
Esempio pratico 1 — Accesso semplice
user_age = 16
if user_age >= 18:
print("Welcome")
else:
print("Sorry, you must be 18+")
🔄 if + else: due rami alternativi
Quando ci sono due scenari mutuamente esclusivi, usa else.
balance = 25
price = 40
if balance >= price:
print("Purchase completed")
else:
print("Insufficient funds")
Esempio pratico 2 — Validazione input minimale
email = ""
if email:
print("Thanks! We'll contact you soon")
else:
print("Please provide an email address")
🎯 Consiglio: per messaggi all’utente, usa frasi in inglese (es. Purchase completed, Please provide an email address) per abituarti a standard internazionali.
🪜 elif: più condizioni in sequenza
Usa elif quando devi testare più alternative in ordine di priorità. Il primo blocco la cui condizione è truthy viene eseguito; gli altri vengono saltati.
score = 72
if score >= 90:
print("Grade: A")
elif score >= 75:
print("Grade: B")
elif score >= 60:
print("Grade: C")
else:
print("Grade: D")
Esempio pratico 3 — Tariffa spedizione
weight = 1.8
if weight <= 1:
print("Shipping: 4.99€")
elif weight <= 2:
print("Shipping: 6.99€")
elif weight <= 5:
print("Shipping: 9.99€")
else:
print("Shipping: 14.99€")
Domanda per te: come cambieresti la sequenza elif se volessi priorità diverse (es. prima controllare weight > 10)?
🧩 Condizioni composte e precedence
Combina condizioni con and, or, not. Ricorda la precedenza: not > and > or. Per chiarezza, usa parentesi.
age = 20
has_id = True
country = "IT"
if (age >= 18 and has_id) or country != "IT":
print("Access granted")
Esempio pratico 4 — Form di login (semplificato)
username = "admin"
password = "1234"
if username == "admin" and password == "1234":
print("Login successful")
else:
print("Invalid credentials")
✂️ Conditional expression (operatore ternario in Python)
Quando vuoi calcolare un valore in base a una condizione in una sola riga:
# Sintassi: <val_true> if <condizione> else <val_false>
items = 0
message = "No items" if items == 0 else "Items in cart"
print(message)
⚠️ Errore comune da evitare
Abusare del ternario per concatenare molte condizioni. Se le alternative sono più di due, meglio una serie diif/elif/elseordinata.
🔶 Esempi pratici guidati
1) Controllo numero positivo/negativo/zero (condizioni semplici)
n = -3
if n > 0:
print("Positive")
elif n == 0:
print("Zero")
else:
print("Negative")
2) Messaggi in base all’orario (branching semplice)
hour = 14
if 0 <= hour < 12:
print("Good morning")
elif 12 <= hour < 18:
print("Good afternoon")
else:
print("Good evening")
3) Menu testuale minimale (blocchi indentati)
print("1) Start")
print("2) Settings")
print("3) Quit")
choice = 2
if choice == 1:
print("Starting...")
elif choice == 2:
print("Opening settings...")
else:
print("Bye!")
4) Validazione registrazione (condizioni composte + else finale)
username = "alice"
email = ""
password = "secret"
if not username:
print("Username required")
elif not email:
print("Email required")
elif len(password) < 6:
print("Password too short")
else:
print("Registration complete")
Domanda per te: in quale dei casi qui sopra useresti una conditional expression invece di un blocco if completo? Perché?
📖 Sezione teorica
- Condizioni semplici con
ifeseguono un blocco quando l’espressione è truthy. - Blocchi di codice indentati: 4 spazi, niente mix tab/spazi; l’indentazione fa parte della sintassi.
elifgestisce alternative multiple; viene eseguito solo il primo ramo vero.elseraccoglie l’ultimo caso, quando nessuna condizione precedente è vera.- Precedenza logica:
not>and>or(usa parentesi per chiarezza). - Ternario (
x if cond else y****************) per restituire rapidamente un valore in base a una condizione.
🔗 Riferimenti utili e affidabili:
• Documentazione ufficiale – if/elif/else (compound statements) → https://docs.python.org/3/reference/compound_stmts.html#if
• PEP 8 – Style Guide (indentazione: 4 spazi, niente mix tab/spazi) → https://peps.python.org/pep-0008/
• Approfondimento: Control Flow in Python → https://realpython.com/python-control-flow/
📚 Glossario tecnico
- Indentazione: spazi all’inizio della riga che definiscono il livello del blocco. In Python è significativa.
- Blocco (block): insieme di istruzioni associate a una struttura di controllo (es.
if). - Truthiness/Falsiness: regole con cui oggetti sono interpretati come veri/falsi nelle condizioni.
- Conditional expression: forma compatta
A if cond else Bche restituisce un valore.
📝 Esercizio finale
Scrivi uno script che simuli la scelta di un piano di abbonamento in base a input (puoi simulare con variabili).
Requisiti:
- Se l’utente ha meno di 18 anni, stampa “Junior plan”; se ha tra 18 e 25, “Young plan”; tra 26 e 65, “Standard plan”; oltre 65, “Senior plan”.
- Se l’utente ha un codice promo non vuoto, applica un messaggio aggiuntivo “Promo applied”.
- Usa blocchi indentati corretti e almeno un
elif. - Extra: usa un’espressione ternaria per generare il testo “Email provided” / “Email missing”.
Schema d’aiuto (esempio):
age = 27
email = ""
promo_code = "WELCOME10"
# Your code here...
🧠 Quiz finale
Non guardare le risposte subito! Sono più sotto 👇
- Quale riga definisce un blocco per l’
if?
A)if condazione:
B)if condizione:+ riga successiva indentata
C)if (condizione)senza: - In quale ordine vengono valutati gli operatori logici?
A)and>or>not
B)not>and>or
C)or>and>not - Cosa succede nella catena
if/elif/elif/else?
A) Vengono eseguiti tutti i rami veri
B) Viene eseguito solo il primo ramo vero
C) Viene eseguito sempre l’else - Qual è un errore comune nelle condizioni?
A) Usare==per confronti
B) Dimenticare i:dopoif/elif/else
C) Usare 4 spazi per l’indentazione - Qual è la forma corretta del ternario in Python?
A)cond ? A : B
B)A if cond else B
C)A unless cond else B - Quale messaggio produce questo codice?
n = 0
if n:
print("Not zero")
else:
print("Zero")
A) Not zero
B) Zero
C) Errore di sintassi
- Quale riga è più sicura/leggibile?
A)if a and b or c:
B)if (a and b) or c:
C)if a && b || c:
❓ FAQ
1) Posso scrivere if su una sola riga?
Sì, if cond: statement, ma usalo con moderazione per non perdere leggibilità.
2) È consigliato annidare molti if?
Meglio evitare troppi livelli. Spezza il problema in funzioni o usa elif ben ordinati.
3) Posso confrontare contro None con ==?
Si preferisce is/is not (if x is None:) per chiarezza semantica.
4) Come evito errori di indentazione?
Configura l’editor per inserire 4 spazi al tasto Tab, visualizza i caratteri invisibili, attiva il linter.
5) Meglio elif o catene di if separati?
Usa elif quando le condizioni sono mutuamente esclusive; catene di if indipendenti quando vuoi valutare più condizioni anche se precedenti sono vere.
🔗 Link utili
Esterni
• Python Language Reference – ********************if: https://docs.python.org/3/reference/compound_stmts.html#if
• PEP 8 – Indentation: https://peps.python.org/pep-0008/
• Control Flow in Python (guida e casi pratici): https://realpython.com/python-control-flow/
Interni SapereSemplice
• Lezione 2 – Primo script Python: https://www.saperesemplice.com/primo-script-python-hello/
• Lezione 3 – Variabili e Tipi di Dato: https://www.saperesemplice.com/variabili-tipi-dato-python/
• Lezione 4 – Input e Output: https://www.saperesemplice.com/lezione-3-input-output-python/
• Percorso “Corsi Python – Programmare da zero”: https://www.saperesemplice.com/corsi-informatica/corsi-di-informatica-pthon/
🔁 Collegamento alla lezione successiva
➡️ **Prosegui alla Lezone 7: *Condizioni complesse e annidate
(Il link verrà inserito non appena l’articolo sarà online.)
🗨️ Hai dubbi? Lascia un commento!
📩 Vuoi il PDF della lezione? Scrivici!
🔗 Condividi con un compagno di corso.
🧪 Risposte del quiz (mostra solo dopo aver provato)
- B
- B
- B
- B
- B
- B
- B
