26 ⭐ Concession Stand Program 🍿

Obiettivi di apprendimento:

  • Usare un dizionario per rappresentare un menu (articolo: prezzo).
  • Gestire un carrello di acquisto usando un dizionario (articolo: quantità) o una lista.
  • Applicare i cicli per calcolare il costo totale in base alle quantità.

Programma Esempio:

def concession_stand_program():
    print("🍿 PROGRAMMA CASSA CINEMA 🍿")

    # Dizionario che funge da inventario/menu (Articolo: Prezzo)
    menu = {
        "Popcorn grande": 6.50,
        "Coca Cola": 3.00,
        "Nachos": 5.50,
        "Acqua": 2.00,
        "Caramelle": 4.00
    }

    # Dizionario per il carrello (Articolo: Quantità)
    carrello_quantita = {}

    while True:
        print("\n=== MENU ARTICOLI ===")
        # Stampa il menu ordinato
        for i, (articolo, prezzo) in enumerate(menu.items()):
            print(f"{i+1}. {articolo:<15} €{prezzo:.2f}")
        print("0. Calcola Totale e Paga")

        scelta = input("Seleziona il numero dell'articolo da aggiungere (o 0 per pagare): ")

        if scelta == '0':
            break

        try:
            indice_scelto = int(scelta) - 1
            articoli = list(menu.keys())

            if 0 <= indice_scelto < len(articoli):
                articolo_selezionato = articoli[indice_scelto]
                quantita = int(input(f"Quanti '{articolo_selezionato}' vuoi aggiungere? "))

                if quantita > 0:
                    # Se l'articolo è già nel carrello, aggiunge la quantità
                    if articolo_selezionato in carrello_quantita:
                        carrello_quantita[articolo_selezionato] += quantita
                    # Altrimenti, aggiunge l'articolo con la quantità
                    else:
                        carrello_quantita[articolo_selezionato] = quantita

                    print(f"✅ Aggiunti {quantita}x di {articolo_selezionato}.")
                else:
                    print("La quantità deve essere positiva.")

            else:
                print("❌ Scelta non valida.")
        except ValueError:
            print("❌ Inserimento non valido. Devi inserire un numero.")

    # Calcolo del totale
    totale_finale = 0.0

    print("\n\n--- RIEPILOGO ORDINE ---")
    if not carrello_quantita:
        print("Carrello vuoto. Totale: €0.00")
        return

    # Ciclo sui prodotti nel carrello
    for articolo, quantita in carrello_quantita.items():
        prezzo_unitario = menu[articolo]
        costo_articolo = prezzo_unitario * quantita
        totale_finale += costo_articolo

        print(f"{quantita}x {articolo:<15} @ €{prezzo_unitario:.2f} = €{costo_articolo:.2f}")

    # Calcolo tasse e totale
    tasse = totale_finale * 0.05 # Tasse ipotetiche 5%
    totale_finale_tasse = totale_finale + tasse

    print("-" * 35)
    print(f"SUBTOTALE:           €{totale_finale:.2f}")
    print(f"TASSE (5%):          €{tasse:.2f}")
    print(f"TOTALE DA PAGARE:    €{totale_finale_tasse:.2f}")
    print("Grazie!")

# concession_stand_program()