22 ⭐ Shopping Cart Program 🛒

Obiettivi di apprendimento:

  • Applicare le liste per simulare un carrello della spesa.
  • Utilizzare i cicli while e for per la gestione del menu e la stampa del carrello.
  • Eseguire operazioni di base su liste (aggiungi, rimuovi, stampa, calcola totale).

Programma Esempio:

def shopping_cart_program():
    print("🛒 PROGRAMMA CARRELLO DELLA SPESA 🛒")

    # Utilizziamo una lista di tuple per l'inventario per memorizzare (nome, prezzo)
    inventario = [
        ("Mela", 0.99),
        ("Latte (1L)", 1.50),
        ("Pane", 2.20),
        ("Uova (6)", 3.00),
        ("Acqua (6x)", 4.50)
    ]

    # La lista principale per memorizzare gli articoli nel carrello
    carrello = []

    while True:
        print("\n=== MENU ===")
        print("1. Visualizza Inventario")
        print("2. Aggiungi Articolo al Carrello")
        print("3. Rimuovi Articolo dal Carrello")
        print("4. Visualizza Carrello e Totale")
        print("0. Esci e Paga")

        scelta = input("Seleziona un'opzione (0-4): ")

        if scelta == '1':
            print("\n--- INVENTARIO ---")
            for i, (nome, prezzo) in enumerate(inventario):
                print(f"{i+1}. {nome:<10} €{prezzo:.2f}")

        elif scelta == '2':
            try:
                scelta_inv = int(input("Inserisci il numero dell'articolo da aggiungere: "))
                indice = scelta_inv - 1

                if 0 <= indice < len(inventario):
                    articolo_selezionato = inventario[indice]
                    carrello.append(articolo_selezionato)
                    print(f"✅ '{articolo_selezionato[0]}' aggiunto al carrello.")
                else:
                    print("❌ Numero articolo non valido.")
            except ValueError:
                print("❌ Inserimento non valido.")

        elif scelta == '3':
            if not carrello:
                print("Il carrello è vuoto. Nulla da rimuovere.")
                continue

            print("\n--- ARTICOLI NEL CARRELLO ---")
            # Usa enumerate per mostrare gli indici per la rimozione
            for i, (nome, prezzo) in enumerate(carrello):
                print(f"{i+1}. {nome:<10} €{prezzo:.2f}")

            try:
                idx_rimuovi = int(input("Inserisci il numero dell'articolo da rimuovere: "))
                indice = idx_rimuovi - 1

                if 0 <= indice < len(carrello):
                    articolo_rimosso = carrello.pop(indice) # Rimuove per indice
                    print(f"🗑️ '{articolo_rimosso[0]}' rimosso dal carrello.")
                else:
                    print("❌ Numero articolo non valido.")
            except ValueError:
                print("❌ Inserimento non valido.")

        elif scelta == '4':
            if not carrello:
                print("Il carrello è vuoto.")
                continue

            totale = 0.0
            print("\n--- RIEPILOGO CARRELLO ---")
            for nome, prezzo in carrello:
                print(f"- {nome:<10} €{prezzo:.2f}")
                totale += prezzo

            tasse = totale * 0.22 # Ipotizziamo 22% di IVA
            totale_finale = totale + tasse

            print("-" * 25)
            print(f"SUBTOTALE:   €{totale:.2f}")
            print(f"IVA (22%):   €{tasse:.2f}")
            print(f"TOTALE:      €{totale_finale:.2f}")

        elif scelta == '0':
            print(f"\nGrazie per l'acquisto! Totale da pagare: €{totale_finale:.2f} (IVA inclusa).")
            break

        else:
            print("Scelta non valida. Inserisci un numero tra 0 e 4.")

# shopping_cart_program()