Sostieni AppuntiFacili con una piccola donazione su PayPal
Dona con PayPalLe strutture di controllo permettono di decidere il flusso di esecuzione di un programma:
Esistono due grandi categorie di strutture di controllo:
| Tipo | Descrizione | Esempio tipico |
|---|---|---|
| Selezione | Esegue blocchi diversi di codice in base a una condizione | if, elif, else |
| Iterazione (Cicli) | Ripete un blocco di codice più volte finché una condizione è vera | for, while |
INFO
Le strutture di controllo rendono i programmi dinamici, flessibili e reattivi ai dati. Senza di esse, il codice eseguirebbe sempre le stesse istruzioni in modo lineare.
ifL’istruzione if consente di eseguire codice solo se una condizione è vera.
Sintassi base:
if condizione:
istruzioni
La condizione è un’espressione booleana (True o False).
Esempio:
numero = int(input("Inserisci un numero: "))
if numero > 0:
print("Il numero è positivo")
if, elif, else# Esempio base di struttura condizionale
numero = int(input("Inserisci un numero: "))
if numero > 0:
print("Il numero è positivo.")
elif numero < 0:
print("Il numero è negativo.")
else:
print("Il numero è zero.")
Regole importanti:
if è obbligatorioelif è opzionale (può comparire più volte)else è opzionale e finalepython
| Operatore | Significato | Esempio | Risultato |
|---|---|---|---|
== | Uguale a | 5 == 5 | True |
!= | Diverso da | 5 != 3 | True |
> | Maggiore di | 7 > 2 | True |
< | Minore di | 4 < 1 | False |
>= | Maggiore o uguale | 3 >= 3 | True |
<= | Minore o uguale | 2 <= 5 | True |
TIP
Le condizioni in Python non richiedono parentesi tonde, ma devono essere seguite da : e un rientro del blocco successivo.
L’operatore ternario (o condizionale) permette di scrivere un if in una sola riga.
È utile per assegnare un valore a una variabile in base a una condizione.
Sintassi:
Esempio:
x = 10
messaggio = "Positivo" if x > 0 else "Negativo"
print(messaggio) # Output: Positivo
Altro esempio:
eta = 18
status = "Maggiorenne" if eta >= 18 else "Minorenne"
print(status) # Output: Maggiorenne
INFO
L’operatore ternario è una forma compatta dell’istruzione if-else, utile quando si vuole scrivere codice più leggibile e sintetico, ma va usato con moderazione per non compromettere la chiarezza.
n, stampa "Pari" se è pari altrimenti "Dispari" usando un operatore ternario."Promosso" se è ≥ 18, "Bocciato" altrimenti.Le strutture iterative consentono di ripetere un blocco di istruzioni più volte, finché una condizione è verificata o per un certo numero di elementi.
forIl ciclo for in Python serve per iterare su sequenze (liste, stringhe, tuple, range, ecc.).
# Esempio base di ciclo for con range
for i in range(5):
print("Iterazione numero:", i)
range()La funzione range() genera una sequenza di numeri interi.
| Sintassi | Significato | Esempio | Output |
|---|---|---|---|
range(n) | da 0 a n-1 | range(5) | 0,1,2,3,4 |
range(a, b) | da a a b-1 | range(2,5) | 2,3,4 |
range(a, b, step) | da a a b-1, con passo step | range(1,10,2) | 1,3,5,7,9 |
# range con valori di inizio, fine e passo
for i in range(1, 11, 2):
print("Numero dispari:", i)
# Iterazione su una lista di nomi
nomi = ["Anna", "Luca", "Marco"]
for nome in nomi:
print("Ciao", nome)
INFO
Il ciclo for in Python non è un ciclo “classico” come in C o Java.
Non serve un contatore: Python itera direttamente sugli elementi.
whileIl ciclo while ripete un blocco di istruzioni finché una condizione rimane vera.
# Esempio base di ciclo while
contatore = 0
while contatore < 5:
print("Contatore:", contatore)
contatore += 1
# Ciclo che termina quando l'utente scrive "esci"
parola = ""
while parola != "esci":
parola = input("Scrivi qualcosa ('esci' per terminare): ")
print("Hai scritto:", parola)
WARNING
Attenzione ai cicli infiniti: se la condizione non diventa mai False, il programma non terminerà.
Python offre tre istruzioni speciali per modificare il comportamento dei cicli:
| Istruzione | Effetto |
|---|---|
break | Interrompe il ciclo immediatamente |
continue | Salta l’iterazione corrente e passa alla successiva |
pass | Non fa nulla; usata come segnaposto |
# Uso di break, continue e pass
for i in range(1, 10):
if i == 5:
break # Interrompe il ciclo
if i % 2 == 0:
continue # Salta i numeri pari
if i == 7:
pass # Non fa nulla
print(i)
TIP
pass è utile quando si vuole lasciare un blocco vuoto, ad esempio durante la scrittura iniziale di una funzione o ciclo.
I cicli possono essere inseriti uno dentro l’altro. Ogni ciclo interno verrà eseguito completamente per ogni iterazione di quello esterno.
# Tabellina 3x3 con cicli annidati
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} x {j} = {i*j}")
print("---")
INFO
I cicli annidati sono usati spesso per matrici, tabelle o algoritmi di ricerca combinata.
else nei cicliIn Python, i cicli for e while possono avere una clausola else.
Il blocco else viene eseguito solo se il ciclo termina normalmente, cioè senza essere interrotto da break.
# Esempio di ciclo for con else
for n in range(1, 6):
print(n)
if n == 3:
break
else:
print("Ciclo completato senza interruzioni.")
print("Fine del programma.")
| Struttura | Descrizione breve | Esempio tipico |
|---|---|---|
if / elif / else | Selezione condizionale | Verifica condizioni |
for | Itera su sequenze | Liste, range, stringhe |
while | Ciclo basato su condizione | Ripetizione fino a fine |
break | Interrompe un ciclo | Terminazione anticipata |
continue | Salta iterazione corrente | Controllo fine del ciclo |
pass | Non esegue nulla | Strutture vuote |
INFO
Le strutture di controllo permettono di creare algoritmi complessi, combinando logica condizionale e ripetizione controllata.
Scrivi un programma che chieda all’utente un numero e stampi se è positivo, negativo o zero.
Chiedi un numero N e calcola la somma di tutti i numeri da 1 a N utilizzando un ciclo for.
whileCrea un ciclo while che conti da 1 a 10 e si interrompa se raggiunge il numero 7.
Chiedi all’utente un numero intero positivo N.
Pari se il numero è pariDispari se il numero è dispariChiedi all’utente un numero N.
for da 1 a NScrivi un programma che:
while1) Cosa fa l'istruzione `if`?
2) Qual è la differenza tra `for` e `while`?
3) A cosa serve `break` in un ciclo?
4) Quando viene eseguito l'`else` di un ciclo `for`?
5) Qual è lo scopo dell'istruzione `pass`?