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:
- I colori sono opzionali - non influiscono sul voto
- Non dare per scontato che funzionino su tutti i computer
- Usa sempre
RESETdopo il testo colorato - Testa il tuo codice anche senza colori
- Per combinare testo e sfondo:
print(f"{SFONDO_COLORE}{TESTO_COLORE}testo{RESET}")
Parte 1: Visualizzazione Prodotti (20 min - 15pt)
- Compito 1A: Stampa prodotti numerati
Stampa tutti i prodotti della lista con una numerazione (1., 2., 3., ...)
Concetti da usare:
- Ciclo
forper scorrere la lista enumerate(prodotti, 1)per avere indice che parte da 1print()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)
- 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:
- Per ogni prodotto nella lista:
- Estrai il prezzo dalla stringa (es: da "Pane: 1.50β¬" prendi "1.50")
- Converti il prezzo in numero (float)
- Applica le condizioni per determinare la categoria
- 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
:.2fper 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_premiumcreata 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/elseper 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.