🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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)