🛒 Esercitazione Recupero: Smart Supermarket Analytics

Rafforza i concetti di cicli, condizioni e liste con un progetto pratico!

🏪 Contesto Reale:

AZIENDA: “SmartMarket Analytics”
RUOLO: Analista vendite supermercato
OBIETTIVO: Analizzare prodotti e prezzi
CONCETTI: Cicli, condizioni, liste, percentuali

✅ ESERCITAZIONE DI RECUPERO:

TEMPO: 90 minuti ⏰
DIFFICOLTÀ: Media-Bassa
OBIETTIVO: Rafforzare i concetti base
AIUTI: Consigliati per apprendere

📋 Dati Iniziali

📦

Lista prodotti da analizzare (copia questo):

prodotti.py
# Lista prodotti con prezzi (€)
prodotti = [
    "Pane: 1.50€",
    "Latte: 1.20€", 
    "Uova: 2.80€",
    "Mele: 3.00€",
    "Pasta: 0.90€",
    "Carne: 8.50€",
    "Formaggio: 4.30€",
    "Acqua: 0.50€"
]

🎨 Opzione Bonus: Colorare l’Output

🎨

Vuoi rendere il tuo output più professionale?

Usa i codici ANSI per colorare il testo nel terminale! È completamente opzionale ma rende il tuo codice più bello.

💡

Codici ANSI per i colori del TESTO (copia e incolla):

# Colori del testo (foreground)
ROSSO = "\033[31m"
VERDE = "\033[32m"
GIALLO = "\033[33m"
BLU = "\033[34m"
VIOLA = "\033[35m"
CIANO = "\033[36m"
BIANCO = "\033[37m"
RESET = "\033[0m"

💡

Codici ANSI per i colori di SFONDO (opzionali avanzati):

# Colori di sfondo (background)
SFONDO_ROSSO = "\033[41m"
SFONDO_VERDE = "\033[42m"
SFONDO_GIALLO = "\033[43m"
SFONDO_BLU = "\033[44m"
SFONDO_VIOLA = "\033[45m"
SFONDO_CIANO = "\033[46m"
SFONDO_BIANCO = "\033[47m"

🎯

Esempi di utilizzo (solo per capire come funzionano):

# Testo colorato semplice
print(f"{VERDE}Questo testo è verde{RESET}")
print(f"{ROSSO}Questo testo è rosso{RESET}")

# Testo con sfondo colorato
print(f"{SFONDO_GIALLO}{ROSSO}Rosso su sfondo giallo{RESET}")

# Combinazioni (testo + sfondo)
print(f"{SFONDO_BLU}{BIANCO}Testo bianco su sfondo blu{RESET}")

🌟

Dove potresti usare i colori in questa esercitazione:

  • Per colorare le categorie nella Parte 2 (Economico=Verde, Normale=Giallo, Premium=Rosso)
  • Per evidenziare il report nella Parte 3
  • Per rendere più visibili i prodotti più caro/economico nella Parte 4
  • Per distinguere i suggerimenti sconto
Esempio di output colorato (solo per farti un’idea visiva):

🟠 Pasta: 0.90€ → ECONOMICO
🟢 Pane: 1.50€ → NORMALE
🔴 Carne: 8.50€ → PREMIUM

Nota: Questa è solo una rappresentazione visiva, nel terminale useresti i codici ANSI.

⚠️

Regole per l’uso dei colori:

  1. I colori sono opzionali – non influiscono sul voto
  2. Non dare per scontato che funzionino su tutti i computer
  3. Usa sempre RESET dopo il testo colorato
  4. Testa il tuo codice anche senza colori
  5. Per combinare testo e sfondo: print(f"{SFONDO_COLORE}{TESTO_COLORE}testo{RESET}")

Parte 1: Visualizzazione Prodotti (20 min – 15pt)

1

Compito 1A: Stampa prodotti numerati

Stampa tutti i prodotti della lista con una numerazione (1., 2., 3., …)

💡

Concetti da usare:

  • Ciclo for per scorrere la lista
  • enumerate(prodotti, 1) per avere indice che parte da 1
  • print() con f-string per formattare l’output

📋

Output atteso:

1. Pane: 1.50€
2. Latte: 1.20€
3. Uova: 2.80€
4. Mele: 3.00€
5. Pasta: 0.90€
6. Carne: 8.50€
7. Formaggio: 4.30€
8. Acqua: 0.50€

🔢

Compito 1B: Conta i prodotti

Conta e stampa quanti prodotti ci sono nella lista

💡

Suggerimento: Usa la funzione len() per contare gli elementi di una lista

# Output atteso:
Totale prodotti nel supermercato: 8

Parte 2: Analisi Prezzi (25 min – 35pt)

2

Categorie di prezzo da applicare:

Prezzo (€) Categoria Colore
≤ 1.00€ ECONOMICO ● Verde
1.01€ – 3.00€ NORMALE ● Arancione
> 3.00€ PREMIUM ● Rosso
🔧

Compito 2A: Classifica i prodotti

Per ogni prodotto, estrai il prezzo e determina la categoria

💡

Passaggi da seguire:

  1. Per ogni prodotto nella lista:
  2. Estrai il prezzo dalla stringa (es: da “Pane: 1.50€” prendi “1.50”)
  3. Converti il prezzo in numero (float)
  4. Applica le condizioni per determinare la categoria
  5. Stampa il risultato

Come estrarre il prezzo:

# Ricorda: .split() divide una stringa in una lista
# Esempio: "Pane: 1.50€".split(": ") → ["Pane", "1.50€"]

📊

Output atteso CORRETTO:

Pane: 1.50€ → NORMALE
Latte: 1.20€ → NORMALE
Uova: 2.80€ → NORMALE
Mele: 3.00€ → NORMALE   
Pasta: 0.90€ → ECONOMICO
Carne: 8.50€ → PREMIUM
Formaggio: 4.30€ → PREMIUM
Acqua: 0.50€ → ECONOMICO

💰

Compito 2B: Calcola prezzo medio

Calcola e stampa il prezzo medio di tutti i prodotti

💡

Come procedere:

  • Crea una variabile per accumulare la somma dei prezzi
  • Per ogni prodotto, aggiungi il suo prezzo alla somma
  • Alla fine, dividi la somma totale per il numero di prodotti
  • Usa :.2f per formattare il risultato con 2 decimali

# Output atteso:
💰 Prezzo medio: 2.84€

Parte 3: Organizzazione Dati (25 min – 40pt)

3

📁

Compito 3A: Organizza in liste separate

Crea 3 liste separate per organizzare i prodotti per categoria

💡

Liste da creare:

  • prodotti_economici = [] – per prezzo ≤ 1.00€
  • prodotti_normali = [] – per prezzo 1.01€ – 3.00€
  • prodotti_premium = [] – per prezzo > 3.00€

Attenzione alla logica:

# Ricorda le condizioni corrette:
# - ECONOMICO: prezzo ≤ 1.00
# - NORMALE: prezzo ≤ 3.00 (ma > 1.00)
# - PREMIUM: prezzo > 3.00

Come aggiungere elementi a una lista:

# Usa il metodo .append()
lista.append(elemento)
# Esempio: prodotti_economici.append("Pasta: 0.90€")

📈

Compito 3B: Genera report statistico

Stampa un report con statistiche e percentuali

💡

Elementi del report:

  • Numero di prodotti per categoria
  • Percentuale di prodotti per categoria
  • Totale prodotti

Come calcolare le percentuali:

percentuale = (numero_categoria / totale_prodotti) * 100
# Esempio: (2 / 8) * 100 = 25.0%

# Output atteso CORRETTO del report:
========================================
📊 REPORT SMART SUPERMARKET
========================================
🟢 Prodotti ECONOMICI: 2
🟠 Prodotti NORMALI: 4    
🔴 Prodotti PREMIUM: 2    
📦 Totale prodotti: 8

📈 Percentuali:
Economici: 25.0%
Normali: 50.0%           
Premium: 25.0%           

📋

Compito 3C: Mostra liste organizzate

Stampa le liste dei prodotti organizzate per categoria

💡

Suggerimento: Usa di nuovo enumerate() per numerare i prodotti in ogni lista

# Output atteso CORRETTO:
🟢 PRODOTTI ECONOMICI:
  1. Pasta: 0.90€
  2. Acqua: 0.50€

🟠 PRODOTTI NORMALI:
  1. Pane: 1.50€
  2. Latte: 1.20€
  3. Uova: 2.80€
  4. Mele: 3.00€    

🔴 PRODOTTI PREMIUM:
  1. Carne: 8.50€
  2. Formaggio: 4.30€

Parte 4: Extra Challenge (20 min – 30pt)

4

🏆

Compito 4A: Trova estremi di prezzo

Trova il prodotto più caro e quello più economico

💡

Strategia:

  • Crea variabili per memorizzare il prezzo massimo/minimo e il prodotto corrispondente
  • Inizializza il massimo a 0 e il minimo a un numero grande (es: 1000)
  • Per ogni prodotto, confronta il prezzo con il massimo/minimo corrente
  • Se trovi un prezzo più alto/basso, aggiorna le variabili

# Output atteso:
🏆 PRODOTTO PIÙ CARO: Carne: 8.50€
🏆 PRODOTTO PIÙ ECONOMICO: Acqua: 0.50€

🎁

Compito 4B: Suggerisci sconti

Per i prodotti premium, suggerisci un prezzo scontato del 10%

💡

Calcoli:

  • Uno sconto del 10% significa pagare il 90% del prezzo originale
  • Calcola: prezzo_scontato = prezzo_originale * 0.90
  • Usa la lista prodotti_premium creata nella Parte 3
  • Per ogni prodotto premium, estrai il prezzo e calcola lo sconto

# Output atteso CORRETTO:
🎁 SUGGERIMENTI SCONTO:
Carne: 8.50€ → con sconto 10%: 7.65€
Formaggio: 4.30€ → con sconto 10%: 3.87€

📊 Output Completo Finale CORRETTO

Alla fine dell’esercitazione dovresti ottenere questo output completo CORRETTO:

1. Pane: 1.50€
2. Latte: 1.20€
3. Uova: 2.80€
4. Mele: 3.00€
5. Pasta: 0.90€
6. Carne: 8.50€
7. Formaggio: 4.30€
8. Acqua: 0.50€

Totale prodotti nel supermercato: 8

Pane: 1.50€ → NORMALE
Latte: 1.20€ → NORMALE
Uova: 2.80€ → NORMALE
Mele: 3.00€ → NORMALE      
Pasta: 0.90€ → ECONOMICO
Carne: 8.50€ → PREMIUM
Formaggio: 4.30€ → PREMIUM
Acqua: 0.50€ → ECONOMICO

💰 Prezzo medio: 2.84€

========================================
📊 REPORT SMART SUPERMARKET
========================================
🟢 Prodotti ECONOMICI: 2
🟠 Prodotti NORMALI: 4    
🔴 Prodotti PREMIUM: 2    
📦 Totale prodotti: 8

📈 Percentuali:
Economici: 25.0%
Normali: 50.0%           
Premium: 25.0%           

🟢 PRODOTTI ECONOMICI:
  1. Pasta: 0.90€
  2. Acqua: 0.50€

🟠 PRODOTTI NORMALI:
  1. Pane: 1.50€
  2. Latte: 1.20€
  3. Uova: 2.80€
  4. Mele: 3.00€          

🔴 PRODOTTI PREMIUM:
  1. Carne: 8.50€
  2. Formaggio: 4.30€

🏆 PRODOTTO PIÙ CARO: Carne: 8.50€
🏆 PRODOTTO PIÙ ECONOMICO: Acqua: 0.50€

🎁 SUGGERIMENTI SCONTO:
Carne: 8.50€ → con sconto 10%: 7.65€
Formaggio: 4.30€ → con sconto 10%: 3.87€

📋 Schema di Valutazione

Parte Punti Tempo Concetti Valutati
1 – Visualizzazione 15 20 min Cicli, enumerate(), len()
2 – Analisi prezzi 35 25 min If/elif/else, split(), float()
3 – Organizzazione 40 25 min Liste, append(), percentuali
4 – Bonus 30 20 min Ricerca max/min, calcoli
TOTALE 120 → Voto: punti / 12
🎯

Obiettivi di apprendimento:

  • Capire come scorrere liste con cicli for
  • Usare enumerate() per avere indici numerati
  • Applicare condizioni if/elif/else per prendere decisioni
  • Manipolare stringhe con split() per estrarre dati
  • Organizzare dati in liste separate
  • Calcolare medie e percentuali
  • Ricercare valori massimi e minimi in una lista

⚠️

ATTENZIONE ALLA LOGICA DELLE CONDIZIONI:

Ricorda che elif prezzo <= 3.00 include anche il caso in cui il prezzo è esattamente 3.00€!

Quindi "Mele: 3.00€" appartiene alla categoria NORMALE, non PREMIUM.

Torna in alto