Esercizi Classi Python
Codegrind Team•Jul 21 2022
Ecco degli esercizi con soluzione per praticare l’utilizzo delle classi e della programmazione ad oggetti in Python.
Esercizio 1
Creare una classe Persona che abbia i seguenti attributi: nome, età , sesso. Aggiungi un metodo “presentati” che stampi una frase di presentazione della persona, ad esempio “Ciao, mi chiamo Marco e ho 32 anni”.
class Persona:
def __init__(self, nome, etĂ , sesso):
self.nome = nome
self.etĂ = etĂ
self.sesso = sesso
def presentati(self):
print(f"Ciao, mi chiamo {self.nome} e ho {self.etĂ } anni")
p = Persona("Marco", 32, "maschio")
p.presentati() # Ciao, mi chiamo Marco e ho 32 anni
Esercizio 2
Creare una classe Animale che abbia gli attributi “nome” e “specie”. Aggiungi un metodo “emetti_suono” che stampi un suono specifico per ogni specie. Ad esempio, se l’animale è un gatto dovrebbe stampare “Miao!”, se è un cane “Bau!”.
class Animale:
def __init__(self, nome, specie):
self.nome = nome
self.specie = specie
def emetti_suono(self):
if self.specie == "gatto":
print("Miao!")
elif self.specie == "cane":
print("Bau!")
else:
print("Suono sconosciuto")
a = Animale("Fuffi", "gatto")
a.emetti_suono() # Miao!
b = Animale("Buddy", "cane")
b.emetti_suono() # Bau!
Esercizio 3
Creare una classe Automobile che abbia gli attributi “marca”, “modello” e “anno”. Aggiungi un metodo “descrivi” che stampi una descrizione dell’automobile, ad esempio “Questa è una Toyota Corolla del 2017”.
class Automobile:
def __init__(self, marca, modello, anno):
self.marca = marca
self.modello = modello
self.anno = anno
def descrivi(self):
print(f"Questa è una {self.marca} {self.modello} del {self.anno}")
auto = Automobile("Toyota", "Corolla", 2017)
auto.descrivi() # Questa è una Toyota Corolla del 2017
Esercizio 4
Creare una classe Impiegato che abbia gli attributi “nome”, “cognome”, “matricola” e “stipendio”. Aggiungere un metodo “aumenta_stipendio” che aumenti lo stipendio dell’impiegato del 10% e un metodo “stampa_dettagli” che stampi tutti i dettagli dell’impiegato, ad esempio “Impiegato: Marco Rossi, matricola 12345, stipendio: 3000 Euro”.
class Impiegato:
def __init__(self, nome, cognome, matricola, stipendio):
self.nome = nome
self.cognome = cognome
self.matricola = matricola
self.stipendio = stipendio
def aumenta_stipendio(self):
self.stipendio *= 1.1
def stampa_dettagli(self):
print(f"Impiegato: {self.nome} {self.cognome}, matricola {self.matricola}, stipendio: {self.stipendio:.2f} Euro")
i = Impiegato("Marco", "Rossi", 12345, 3000)
i.stampa_dettagli() # Impiegato: Marco Rossi, matricola 12345, stipendio: 3000.00 Euro
i.aumenta_stipendio()
i.stampa_dettagli() # Impiegato: Marco Rossi, matricola 12345, stipendio: 3300.00 Euro
Esercizio 5
Crea una classe GestoreMagazzino che gestisca un magazzino di prodotti. La classe dovrĂ avere i seguenti attributi:
- Un dizionario “prodotti” che mappa i nomi dei prodotti ai rispettivi oggetti “Prodotto” (che descriverai in seguito)
- Una variabile “costo_magazzinaggio” che indica il costo per magazzinare ogni prodotto per un mese
La classe dovrĂ avere i seguenti metodi:
- Un metodo “aggiungi_prodotto” che aggiunga un nuovo prodotto al magazzino
- Un metodo “rimuovi_prodotto” che rimuova un prodotto dal magazzino
- Un metodo “calcola_costi_magazzinaggio” che calcoli i costi di magazzinaggio per tutti i prodotti presenti nel magazzino
Crea inoltre una classe Prodotto che abbia gli attributi “nome”, “prezzo” e “scorta”.
class Prodotto:
def __init__(self, nome, prezzo, scorta):
self.nome = nome
self.prezzo = prezzo
self.scorta = scorta
class GestoreMagazzino:
def __init__(self, costo_magazzinaggio):
self.prodotti = {}
self.costo_magazzinaggio = costo_magazzinaggio
def aggiungi_prodotto(self, prodotto):
self.prodotti[prodotto.nome] = prodotto
def rimuovi_prodotto(self, nome_prodotto):
self.prodotti.pop(nome_prodotto)
def calcola_costi_magazzinaggio(self):
costi = 0
for nome, prodotto in self.prodotti.items():
costi += prodotto.scorta * self.costo_magazzinaggio
return costi
p1 = Prodotto("Telefono", 500, 10)
p2 = Prodotto("Computer", 1000, 5)
gm = GestoreMagazzino(10)
gm.aggiungi_prodotto(p1)
gm.aggiungi_prodotto(p2)
print(gm.calcola_costi_magazzinaggio()) # 150 (10*10 + 5*10)
gm.rimuovi_prodotto("Telefono")
print(gm.calcola_costi_magazzinaggio()) # 50 (5*10)