Corso: Python Base
0. Introduzione al corso
Cos’è Python
A cosa serve (script, data science, web, automazione, ecc.)
Come eseguire codice:
interprete interattivo ( python o python3 )
file .py
editor/IDE (VS Code, PyCharm, ecc.)
1. Variabili
1.1 Teoria
Una variabile è un “nome” che punta a un valore in memoria.
In Python non si dichiara il tipo prima ( int x; ), basta assegnare:
x = 10
Regole di naming:
può contenere lettere, numeri, underscore ( _ )
non può iniziare con un numero
niente spazi, niente caratteri speciali tipo - , @ , ecc.
case sensitive: nome e Nome sono variabili diverse.
Assegnazione:
x = 5 → assegna 5 alla variabile x
puoi riassegnare con un altro tipo: x = "ciao"
1.2 Esempio 1 – Assegnazione e stampa
# Dichiarazione di alcune variabili con assegnazione
nome = "Luca" # stringa
eta = 25 # intero (int)
altezza = 1.78 # numero con virgola (float)
# Stampa dei valori con print()
print("Nome:", nome)
print("Età:", eta)
print("Altezza:", altezza)
1.3 Esempio 2 – Riassegnazione di una variabile
# Inizialmente x è un numero intero
x = 10
print("x iniziale:", x)
# Ora riassegniamo un valore diverso
x = 20
print("x dopo riassegnazione:", x)
# Possiamo anche cambiare completamente tipo
x = "adesso sono una stringa"
print("x come stringa:", x)
1.4 Esercizi intermedi svolti
Esercizio 1 – Memorizza i dati di un utente
Crea variabili per nome, cognome, età e città. Stampa una frase completa con tutte le
informazioni.
# Variabili con i dati dell'utente
nome = "Giulia"
cognome = "Rossi"
eta = 30
citta = "Milano"
# Costruiamo una frase usando le variabili
# Usiamo la f-string: f"...{variabile}..."
frase = f"Ciao, mi chiamo {nome} {cognome}, ho {eta} anni e vivo a {citta
print(frase) # Stampa: Ciao, mi chiamo Giulia Rossi, ho 30 anni e vivo a
Esercizio 2 – Riassegnazione e tracciamento
Crea una variabile saldo , assegnale un valore iniziale, poi fai alcune “operazioni” (es.
deposito, prelievo) modificando la variabile e stampando il risultato ogni volta.
# saldo iniziale
saldo = 1000
print("Saldo iniziale:", saldo)
# deposito
deposito = 250
saldo = saldo + deposito # aggiorniamo il saldo
print("Dopo il deposito:", saldo)
# prelievo
prelievo = 400
saldo = saldo - prelievo # aggiorniamo di nuovo il saldo
print("Dopo il prelievo:", saldo)
1.5 Esercizi avanzati svolti
Esercizio 1 – Tre variabili, un’unica frase
Crea tre variabili prodotto , quantita , prezzo_unitario . Calcola il prezzo totale e
stampa una frase formattata.
prodotto = "Notebook"
quantita = 3
prezzo_unitario = 4.50
# Calcoliamo il totale
totale = quantita * prezzo_unitario
# Usiamo una f-string con formattazione dei decimali: :.2f → 2 cifre deci
frase = f"Hai acquistato {quantita} {prodotto}(s) a {prezzo_unitario:.2f}
print(frase)
Esercizio 2 – Scambio di variabili
Dati due valori a e b , scambiali senza usare una variabile temporanea classica ( temp ).
a = 5
b = 10
print("Prima dello scambio: a =", a, ", b =", b)
# In Python si può fare "unpacking" di tuple.
# (a, b) = (b, a) scambia i valori in una sola riga.
a, b = b, a
print("Dopo lo scambio: a =", a, ", b =", b)
1.6 Esercizi su variabili (proposti, senza soluzione)
1. Crea variabili per titolo di un libro, autore, anno di pubblicazione e prezzo. Stampa una
frase completa.
2. Definisci una variabile che contenga il numero di minuti in un giorno (usa un calcolo, non
un numero fisso).
2. Tipi di variabili (tipi di dato)
2.1 Teoria
Principali tipi base in Python:
int → numeri interi: 10 , -3
float → numeri decimali: 3.14 , 0.5
bool → valori logici: True , False
str → stringhe: "ciao" , "Python"
list → liste: [1, 2, 3] , ["a", "b"]
dict → dizionari (coppie chiave:valore): {"nome": "Luca", "eta": 25}
set → insiemi: {1, 2, 3}
None → assenza di valore
Conversione di tipo (casting):
int("10") → 10
float("3.5") → 3.5
str(10) → "10"
bool(0) → False , bool(1) → True
2.2 Esempio 1 – Tipi base e type()
# Alcune variabili con tipi diversi
numero_intero = 10
numero_decimale = 3.14
testo = "Ciao"
vero_falso = True
# La funzione type() ci dice il tipo della variabile
print(type(numero_intero)) # <class 'int'>
print(type(numero_decimale)) # <class 'float'>
print(type(testo)) # <class 'str'>
print(type(vero_falso)) # <class 'bool'>
2.3 Esempio 2 – Conversione tra tipi (casting)
# Partiamo da una stringa che rappresenta un numero
testo_numero = "42"
# Convertiamo in int
numero = int(testo_numero) # da "42" a 42
print(numero, type(numero)) # 42 <class 'int'>
# Convertiamo in float
numero_float = float(testo_numero)
print(numero_float, type(numero_float)) # 42.0 <class 'float'>
# Convertiamo un numero in stringa
n = 99
n_str = str(n)
print(n_str, type(n_str)) # "99" <class 'str'>
2.4 Esercizi intermedi svolti
Esercizio 1 – Somma da input (string → int)
Chiedi due numeri all’utente (come stringhe con input() ), convertili in interi e stampa la
somma.
# input() restituisce SEMPRE una stringa
numero1_str = input("Inserisci il primo numero intero: ")
numero2_str = input("Inserisci il secondo numero intero: ")
# Convertiamo in interi
numero1 = int(numero1_str)
numero2 = int(numero2_str)
somma = numero1 + numero2
print("La somma è:", somma)
Esercizio 2 – Bool da numeri
Dato un numero intero, verifica il suo valore booleano con bool() .
n = 0
print("n:", n, "bool(n):", bool(n)) # False, perché 0 è considerato fals
m = 5
print("m:", m, "bool(m):", bool(m)) # True, perché ogni numero diverso d
2.5 Esercizi avanzati svolti
Esercizio 1 – Media di tre numeri da input
# Chiediamo tre numeri all'utente
a_str = input("Inserisci il primo numero: ")
b_str = input("Inserisci il secondo numero: ")
c_str = input("Inserisci il terzo numero: ")
# Convertiamo in float per gestire anche decimali
a = float(a_str)
b = float(b_str)
c = float(c_str)
media = (a + b + c) / 3
print(f"La media è: {media:.2f}")
Esercizio 2 – Concatena numero e stringa
Chiedi all’utente un nome e un’età. Stampa una frase tipo: "Ciao, Mario, hai 25 anni" .
Fai attenzione ai tipi.
nome = input("Inserisci il tuo nome: ")
eta_str = input("Inserisci la tua età: ")
# Possiamo tenere eta come stringa e usarla direttamente
frase = "Ciao, " + nome + ", hai " + eta_str + " anni."
print(frase)
2.6 Esercizi sui tipi (proposti)
1. Chiedi un numero decimale all’utente, convertilo in float e stampa il quadrato.
2. Chiedi all’utente un testo e stampa se è una stringa vuota o meno (usa la conversione a
bool).
3. Operazioni booleane
3.1 Teoria
Tipo bool : solo due valori, True e False .
Operatori logici:
and → vero se entrambi sono veri
or → vero se almeno uno è vero
not → nega il valore ( not True → False )
Operatori di confronto:
== uguale
!= diverso
> maggiore
< minore
>= maggiore o uguale
<= minore o uguale
3.2 Esempio 1 – Confronti
a = 10
b = 20
print(a == b) # False, 10 non è uguale a 20
print(a < b) # True, 10 è minore di 20
print(a != b) # True, 10 è diverso da 20
3.3 Esempio 2 – and , or , not
eta = 25
ha_patente = True
# Vuoi sapere se la persona può guidare (es. > 18 e patente)
puo_guidare = (eta >= 18) and ha_patente
print("Può guidare?", puo_guidare) # True
# Controlliamo se è minorenne o non ha la patente (condizione problematic
problema = (eta < 18) or (not ha_patente)
print("C'è un problema per guidare?", problema) # False
3.4 Esercizi intermedi svolti
Esercizio 1 – Numero pari
Chiedi un numero e verifica se è pari usando l’operatore % (modulo).
numero = int(input("Inserisci un numero intero: "))
# operatore modulo: numero % 2 restituisce il resto della divisione per 2
# se il resto è 0, il numero è pari
is_pari = (numero % 2) == 0
print("Il numero è pari?", is_pari)
Esercizio 2 – Intervallo di età
Controlla se un’età è compresa tra 18 e 30 anni (inclusi).
eta = int(input("Inserisci la tua età: "))
# condizione: eta >= 18 and eta <= 30
in_intervallo = (eta >= 18) and (eta <= 30)
print("La tua età è tra 18 e 30?", in_intervallo)
3.5 Esercizi avanzati svolti
Esercizio 1 – Accesso ad area riservata
L’utente può entrare se:
è admin ( is_admin == True ) oppure
è maggiorenne e ha un abbonamento attivo.
is_admin = False # True se è amministratore
eta = 20
abbonamento_attivo = True
# Condizione di accesso
puo_entrare = is_admin or (eta >= 18 and abbonamento_attivo)
print("Accesso consentito?", puo_entrare)
Esercizio 2 – Password e tentativi
Supponi di avere una password corretta e un flag che indica se l’account è bloccato.
Stampa se l’accesso è possibile.
password_corretta = True # immagina che l'utente abbia digitato quella
account_bloccato = False # se True, l'account è bloccato
# Puoi entrare solo se la password è corretta E l'account NON è bloccato
accesso = password_corretta and (not account_bloccato)
print("Accesso possibile?", accesso)
3.6 Esercizi (proposti)
1. Verifica se un numero è positivo e pari.
2. Chiedi all’utente due condizioni booleane (ad esempio “piove”, “ho l’ombrello”) e stampa
se può uscire senza bagnarsi.
4. Operazioni aritmetiche e algebriche
4.1 Teoria
Operatori principali:
+ addizione
- sottrazione
* moltiplicazione
/ divisione (risultato float)
// divisione intera (senza parte decimale)
% modulo (resto)
** potenza
Ordine di precedenza simile alla matematica:
parentesi ()
potenze
moltiplicazioni/divisioni
addizioni/sottrazioni
4.2 Esempio 1 – Operazioni base
a = 10
b = 3
print("a + b =", a + b) # 13
print("a - b =", a - b) # 7
print("a * b =", a * b) # 30
print("a / b =", a / b) # 3.3333...
4.3 Esempio 2 – Divisione intera, modulo, potenza
a = 10
b = 3
print("a // b =", a // b) # 3, parte intera
print("a % b =", a % b) # 1, resto
print("a ** b =", a ** b) # 10^3 = 1000
4.4 Esercizi intermedi svolti
Esercizio 1 – Sconto su un prezzo
Dato un prezzo e una percentuale di sconto, calcola il prezzo scontato.
prezzo = 100.0
sconto_percentuale = 20.0
# Calcoliamo l'importo dello sconto
sconto = prezzo * sconto_percentuale / 100
# Prezzo finale
prezzo_finale = prezzo - sconto
print("Prezzo originale:", prezzo)
print("Sconto:", sconto)
print("Prezzo finale:", prezzo_finale)
Esercizio 2 – Conversione minuti in ore e minuti
minuti_totali = 135
# Numero di ore è la divisione intera per 60
ore = minuti_totali // 60
# I minuti restanti sono il resto della divisione per 60
minuti_restanti = minuti_totali % 60
print(f"{minuti_totali} minuti sono {ore} ore e {minuti_restanti} minuti.
4.5 Esercizi avanzati svolti
Esercizio 1 – Interesse composto (semplice versione)
capitale_iniziale = 1000.0
tasso_annuo = 5.0 # in percentuale
anni = 3
# Formula semplificata: capitale_finale = capitale * (1 + tasso/100)^anni
capitale_finale = capitale_iniziale * (1 + tasso_annuo / 100) ** anni
print(f"Dopo {anni} anni avrai: {capitale_finale:.2f} €")
Esercizio 2 – Equazione lineare
Risolvi ax + b = 0 per x .
a = 2
b = -8
# ax + b = 0 -> x = -b / a
x = -b / a
print(f"La soluzione dell'equazione {a}x + {b} = 0 è x = {x}")
4.6 Esercizi (proposti)
1. Calcola l’area e il perimetro di un rettangolo dati base e altezza.
2. Dato un numero di secondi, convertili in ore, minuti e secondi.
5. Stringhe e manipolazione di stringhe
5.1 Teoria
Una stringa è una sequenza di caratteri: "ciao" .
Si possono usare apici singoli '...' o doppi "..." .
Indici come le liste:
testo[0] → primo carattere
slicing: testo[0:3]
Operazioni principali:
concatenazione: "ciao" + " mondo"
ripetizione: "ha" * 3 → "hahaha"
Metodi frequenti:
lower() , upper()
strip() , replace() , split() , join()
startswith() , endswith() , find()
5.2 Esempio 1 – Indicizzazione e slicing
testo = "Python"
# Indici: P y t h o n
# 0 1 2 3 4 5
print(testo[0]) # 'P'
print(testo[1:4]) # 'yth', prende le posizioni 1,2,3
print(testo[-1]) # 'n', ultimo carattere
5.3 Esempio 2 – Metodi utili
frase = " Ciao, Mondo! "
print([Link]()) # " ciao, mondo! "
print([Link]()) # " CIAO, MONDO! "
print([Link]()) # "Ciao, Mondo!" (rimuove spazi iniziali/finali
print([Link]("Mondo", "Python")) # " Ciao, Python! "
# split separa la stringa in una lista usando uno spazio come separatore
parole = [Link]().split(" ")
print(parole) # ['Ciao,', 'Mondo!']
5.4 Esercizi intermedi svolti
Esercizio 1 – Iniziali di nome e cognome
nome = "Mario"
cognome = "Rossi"
# prendiamo il primo carattere di ogni stringa con [0]
iniziali = nome[0] + cognome[0]
print("Iniziali:", iniziali) # "MR"
Esercizio 2 – Contare la lunghezza di una stringa
Usa len() .
testo = "Programmare in Python"
lunghezza = len(testo) # len() restituisce il numero di caratteri
print(f"La stringa '{testo}' contiene {lunghezza} caratteri.")
5.5 Esercizi avanzati svolti
Esercizio 1 – Invertire una stringa
testo = "Python"
# slicing [::-1] inverte la stringa
testo_inverso = testo[::-1]
print("Originale:", testo)
print("Invertito:", testo_inverso)
Esercizio 2 – Contare le vocali
testo = "Programmare in Python"
testo = [Link]() # rendiamo tutto minuscolo per semplificare
vocali = "aeiou"
conteggio = 0
for carattere in testo:
if carattere in vocali:
conteggio += 1
print("Numero di vocali nella frase:", conteggio)
5.6 Esercizi (proposti)
1. Chiedi una frase e stampa la stessa frase tutta in maiuscolo, tutta in minuscolo e con la
prima lettera maiuscola.
2. Chiedi una parola e verifica se è palindroma (uguale al contrario).
6. Condizioni if , elif , else
6.1 Teoria
Struttura base:
if condizione:
# blocco eseguito se la condizione è True
elif altra_condizione:
# eseguito se la prima è False e questa è True
else:
# eseguito se nessuna delle precedenti è True
6.2 Esempio 1 – if semplice
eta = 18
if eta >= 18:
print("Sei maggiorenne.")
6.3 Esempio 2 – if-elif-else
voto = 27
if voto < 18:
print("Bocciato")
elif voto < 24:
print("Sufficiente")
elif voto < 30:
print("Buono")
else:
print("Eccellente / 30 e lode magari!")
6.4 Esercizi intermedi svolti
Esercizio 1 – Numero positivo, negativo o zero
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.")
Esercizio 2 – Calcolatrice semplice (somma o sottrazione)
a = float(input("Primo numero: "))
b = float(input("Secondo numero: "))
operazione = input("Scegli operazione (+ o -): ")
if operazione == "+":
risultato = a + b
print("Risultato:", risultato)
elif operazione == "-":
risultato = a - b
print("Risultato:", risultato)
else:
print("Operazione non supportata.")
6.5 Esercizi avanzati svolti
Esercizio 1 – Classificazione voto scolastico
voto = int(input("Inserisci il voto (0-10): "))
if voto < 0 or voto > 10:
print("Voto non valido.")
elif voto < 6:
print("Insufficiente")
elif voto < 7:
print("Sufficiente")
elif voto < 8:
print("Discreto")
elif voto < 9:
print("Buono")
elif voto < 10:
print("Ottimo")
else:
print("Eccellente")
Esercizio 2 – Tariffa in base all’età
eta = int(input("Inserisci la tua età: "))
if eta < 0:
print("Età non valida.")
elif eta <= 12:
print("Biglietto bambino.")
elif eta <= 26:
print("Biglietto giovane.")
elif eta >= 65:
print("Biglietto senior.")
else:
print("Biglietto adulto.")
6.6 Esercizi (proposti)
1. Chiedi all’utente un numero da 1 a 7 e stampa il giorno della settimana corrispondente.
2. Chiedi all’utente un anno e stabilisci se è bisestile (condizione su divisibilità per 4, 100,
400).
7. Ciclo while
7.1 Teoria
Esegue un blocco di codice finché la condizione è vera.
Attenzione ai loop infiniti: bisogna aggiornare le variabili coinvolte.
Struttura:
while condizione:
# blocco
7.2 Esempio 1 – Contare da 1 a 5
contatore = 1
while contatore <= 5:
print(contatore)
contatore += 1 # uguale a contatore = contatore + 1
7.3 Esempio 2 – Chiedere password finché non è corretta
password_corretta = "python123"
inserita = ""
while inserita != password_corretta:
inserita = input("Inserisci la password: ")
print("Accesso consentito!")
7.4 Esercizi intermedi svolti
Esercizio 1 – Sommare i numeri da 1 a N
n = int(input("Inserisci un numero N: "))
somma = 0
i = 1
while i <= n:
somma += i
i += 1
print(f"La somma dei numeri da 1 a {n} è {somma}.")
Esercizio 2 – Menu ripetuto
scelta = ""
while scelta != "q":
print("Menu:")
print("1. Saluta")
print("2. Di' il tuo nome")
print("q. Esci")
scelta = input("Scegli un'opzione: ")
if scelta == "1":
print("Ciao!")
elif scelta == "2":
nome = input("Come ti chiami? ")
print("Piacere di conoscerti,", nome)
elif scelta == "q":
print("Uscita dal programma.")
else:
print("Scelta non valida.")
7.5 Esercizi avanzati svolti
Esercizio 1 – Indovina il numero (semplice)
numero_segreto = 7
tentativo = None
while tentativo != numero_segreto:
tentativo = int(input("Indovina il numero (1-10): "))
if tentativo < numero_segreto:
print("Troppo basso!")
elif tentativo > numero_segreto:
print("Troppo alto!")
else:
print("Hai indovinato!")
Esercizio 2 – Calcolo media numeri inseriti dall’utente
L’utente inserisce numeri finché non digita 0 . Poi stampi la media.
somma = 0
conteggio = 0
while True:
numero = float(input("Inserisci un numero (0 per terminare): "))
if numero == 0:
break # interrompe il ciclo
somma += numero
conteggio += 1
if conteggio > 0:
media = somma / conteggio
print("Media dei numeri inseriti:", media)
else:
print("Nessun numero inserito.")
7.6 Esercizi (proposti)
1. Stampa tutti i numeri pari da 2 a N usando un while .
2. Crea un semplice “login”: chiedi username e password finché non combaciano con
quelli corretti.
8. Ciclo for
8.1 Teoria
Usato per iterare su una sequenza (lista, stringa, range , ecc.).
Sintassi:
for variabile in sequenza:
# blocco
8.2 Esempio 1 – for con range()
# range(1, 6) produce i numeri 1,2,3,4,5
for i in range(1, 6):
print(i)
8.3 Esempio 2 – Iterare su una stringa
testo = "Python"
for carattere in testo:
print(carattere)
8.4 Esercizi intermedi svolti
Esercizio 1 – Tabellina del 5
for i in range(1, 11):
risultato = 5 * i
print(f"5 x {i} = {risultato}")
Esercizio 2 – Somma degli elementi di una lista
numeri = [1, 2, 3, 4, 5]
somma = 0
for n in numeri:
somma += n
print("Somma:", somma)
8.5 Esercizi avanzati svolti
Esercizio 1 – Stampa solo numeri pari da una lista
numeri = [10, 15, 22, 33, 40, 41]
for n in numeri:
if n % 2 == 0:
print("Pari:", n)
Esercizio 2 – Conta le lettere maiuscole in una stringa
testo = "Ciao Pythonista!"
conteggio_maiuscole = 0
for c in testo:
if [Link](): # metodo che verifica se il carattere è maiuscolo
conteggio_maiuscole += 1
print("Numero di lettere maiuscole:", conteggio_maiuscole)
8.6 Esercizi (proposti)
1. Stampa tutti i numeri da 1 a 100 che sono multipli di 3.
2. Dato un elenco di nomi, stampa solo quelli che iniziano con la lettera “A”.
9. Liste e manipolazione di liste
9.1 Teoria
Lista: collezione ordinata e modificabile:
numeri = [1, 2, 3]
Può contenere tipi diversi: [1, "ciao", True]
Operazioni:
indicizzazione: numeri[0]
slicing: numeri[1:3]
aggiunta: .append() , .insert()
rimozione: .remove() , .pop()
lunghezza: len(lista)
9.2 Esempio 1 – Creazione e accesso
numeri = [10, 20, 30, 40]
print(numeri[0]) # 10
print(numeri[1:3]) # [20, 30]
9.3 Esempio 2 – Metodi principali
frutti = ["mela", "banana", "pera"]
[Link]("arancia") # aggiunge in fondo
print(frutti)
[Link]("banana") # rimuove il primo elemento "banana"
print(frutti)
ultimo = [Link]() # rimuove l'ultimo e lo restituisce
print("Ultimo rimosso:", ultimo)
print(frutti)
9.4 Esercizi intermedi svolti – Liste di numeri
Esercizio 1 – Media di una lista di numeri
numeri = [5, 10, 15, 20]
somma = 0
for n in numeri:
somma += n
media = somma / len(numeri)
print("Media:", media)
Esercizio 2 – Massimo e minimo (senza funzioni built-in)
numeri = [3, 7, 2, 9, 4]
# inizializziamo max e min con il primo elemento
max_val = numeri[0]
min_val = numeri[0]
for n in numeri:
if n > max_val:
max_val = n
if n < min_val:
min_val = n
print("Valore massimo:", max_val)
print("Valore minimo:", min_val)
9.5 Esercizi avanzati svolti – Liste di stringhe e manipolazione sulle stringhe
Esercizio 1 – Trasformare tutti i nomi in maiuscolo
nomi = ["mario", "Giulia", "luca"]
nuova_lista = []
for nome in nomi:
nuovo_nome = [Link]() # rende la stringa maiuscola
nuova_lista.append(nuovo_nome)
print("Lista originale:", nomi)
print("Lista maiuscola:", nuova_lista)
Esercizio 2 – Filtrare le stringhe che contengono una certa lettera
parole = ["python", "java", "c", "javascript", "go"]
lettera = "a"
contengono_lettera = []
for parola in parole:
if lettera in parola:
contengono_lettera.append(parola)
print(f"Parole che contengono '{lettera}':", contengono_lettera)
9.6 Esercizi (proposti)
1. Data una lista di numeri, crea una nuova lista contenente solo i numeri maggiori di 10.
2. Data una lista di parole, crea una nuova lista con le lunghezze delle parole.
10. Set e dizionari
10.1 Set – Teoria
set è un insieme:
non ordinato
non contiene duplicati
Usato per controllare membership, rimuovere duplicati, fare operazioni insiemistiche
(unione, intersezione).
numeri = {1, 2, 3, 3}
print(numeri) # {1, 2, 3}
10.2 Esempio set
numeri = {1, 2, 3}
[Link](3) # non aggiunge duplicato
[Link](4)
print(numeri) # {1, 2, 3, 4}
10.3 Dizionari – Teoria
Collezione di coppie chiave:valore
Sintassi:
studente = {
"nome": "Luca",
"eta": 25,
"corso": "Informatica"
}
Accesso:
studente["nome"]
Aggiunta/modifica:
studente["eta"] = 26
Metodi utili:
.keys() , .values() , .items()
10.4 Esempio dizionario base
studente = {
"nome": "Luca",
"eta": 25
}
print(studente["nome"]) # "Luca"
studente["eta"] = 26 # modifica
studente["corso"] = "Python" # aggiunta
print(studente)
10.5 Esercizi intermedi svolti – Set
Esercizio 1 – Rimuovere duplicati da una lista
lista = [1, 2, 2, 3, 3, 3, 4]
insieme = set(lista) # converte in set, rimuovendo duplicati
lista_senza_duplicati = list(insieme) # riconverte in lista
print(lista_senza_duplicati)
Esercizio 2 – Intersezione di due insiemi
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
intersezione = set1 & set2 # oppure [Link](set2)
print("Intersezione:", intersezione) # {3, 4}
10.6 Esercizi intermedi svolti – Dizionari
Esercizio 1 – Info su una persona
persona = {
"nome": "Giulia",
"cognome": "Rossi",
"eta": 30
}
print("Nome:", persona["nome"])
print("Cognome:", persona["cognome"])
print("Età:", persona["eta"])
Esercizio 2 – Iterare su un dizionario
prezzi = {
"mela": 1.0,
"banana": 0.5,
"pera": 0.8
}
for frutto, prezzo in [Link]():
print(f"{frutto}: {prezzo} €")
10.7 Esercizi avanzati svolti – Liste di dizionari
Teoria lampo
Lista di dizionari: struttura molto usata per dati complessi.
studenti = [
{"nome": "Luca", "voto": 27},
{"nome": "Giulia", "voto": 30}
]
Esercizio 1 – Media voti di una lista di dizionari
studenti = [
{"nome": "Luca", "voto": 27},
{"nome": "Giulia", "voto": 30},
{"nome": "Marco", "voto": 24}
]
somma_voti = 0
for studente in studenti:
somma_voti += studente["voto"]
media = somma_voti / len(studenti)
print("Media voti:", media)
Esercizio 2 – Filtrare studenti con voto >= 28
studenti = [
{"nome": "Luca", "voto": 27},
{"nome": "Giulia", "voto": 30},
{"nome": "Marco", "voto": 24},
{"nome": "Anna", "voto": 29}
]
studenti_bravi = []
for studente in studenti:
if studente["voto"] >= 28:
studenti_bravi.append(studente)
print("Studenti con voto >= 28:")
for s in studenti_bravi:
print(s["nome"], s["voto"])
10.8 Esercizi (proposti)
1. Crea un dizionario per rappresentare un libro (titolo, autore, anno, prezzo) e stampane
un riepilogo.
2. Crea una lista di dizionari che rappresentano prodotti in un carrello (nome, prezzo,
quantità) e calcola il totale da pagare.
11. File, input-output
11.1 Teoria
Per lavorare con file in Python si usa la funzione open() .
Modalità:
"r" lettura
"w" scrittura (sovrascrive il file)
"a" append (aggiunge in fondo)
Uso consigliato: with open(...) as f: → chiude il file automaticamente.
11.2 Esempio 1 – Scrivere su un file
# Apriamo (o creiamo) un file in modalità scrittura "w"
with open("[Link]", "w", encoding="utf-8") as f:
[Link]("Ciao, questo è il primo file.\n")
[Link]("Scriviamo un'altra riga.\n")
11.3 Esempio 2 – Leggere da un file
# Leggiamo il contenuto del file "[Link]"
with open("[Link]", "r", encoding="utf-8") as f:
contenuto = [Link]() # legge tutto il file come una stringa
print("Contenuto del file:")
print(contenuto)
11.4 Esercizi intermedi svolti
Esercizio 1 – Scrivere una lista di stringhe su un file
righe = ["Prima riga\n", "Seconda riga\n", "Terza riga\n"]
with open("lista_righe.txt", "w", encoding="utf-8") as f:
for riga in righe:
[Link](riga)
print("File scritto correttamente.")
Esercizio 2 – Leggere un file riga per riga
with open("lista_righe.txt", "r", encoding="utf-8") as f:
for riga in f:
# ogni riga termina già con \n, usiamo strip() per rimuovere newl
print("Riga letta:", [Link]())
11.5 Esercizi avanzati svolti
Esercizio 1 – Copiare un file
# Leggiamo il contenuto di un file e lo copiamo in un altro
with open("[Link]", "r", encoding="utf-8") as src:
contenuto = [Link]()
with open("[Link]", "w", encoding="utf-8") as dest:
[Link](contenuto)
print("Copia completata.")
Esercizio 2 – Salvare e ricaricare una lista di numeri
numeri = [10, 20, 30, 40]
# Scriviamo i numeri su un file, separati da spazi
with open("[Link]", "w", encoding="utf-8") as f:
for n in numeri:
[Link](str(n) + " ")
# Ora leggiamo e ricostruiamo la lista
with open("[Link]", "r", encoding="utf-8") as f:
contenuto = [Link]()
# '10 20 30 40 ' → ['10', '20', '30', '40', '']
parti = [Link](" ") # separiamo la stringa sugli spazi
lista_numeri = []
for p in parti:
if p != "": # ignoriamo eventuali stringhe vuote
lista_numeri.append(int(p))
print("Lista ricostruita:", lista_numeri)
11.6 Esercizi (proposti)
1. Chiedi all’utente una frase e salvala su un file di testo.
2. Leggi un file di testo e conta quante righe contiene.