Ciao,
innanzitutto, per la tua prima richiesta, cioè come puoi fare a far andare il programma all'infinito, puoi semplicemente mettere tutto il codice dentro a una funzione, e chiamare la funzione da dentro a un ciclo `while`.
Inoltre, è buona pratica mettere il codice dentro una "guardia", cosi se il tuo codice viene importato come module, non viene eseguito.
Quindi, supponendo che la tua nuova funzione si chiami
Se vogliamo fare qualcosa di carino, possiamo fare che si ricordi del credito tra un'esecuzione e l'altra (supponiamo non dia resto!).
Puoi creare una classe, giusto per esercitarsi con la programmazione a oggetti, e gli diamo un paio di funzioni per aggiungere e togliere denaro. Aggiungiamo anche un'eccezione se non ci sono abbastanza soldi.
Il codice diventa allora qualcosa tipo:
Se vuoi esercitarti un altro po', puoi:
innanzitutto, per la tua prima richiesta, cioè come puoi fare a far andare il programma all'infinito, puoi semplicemente mettere tutto il codice dentro a una funzione, e chiamare la funzione da dentro a un ciclo `while`.
Inoltre, è buona pratica mettere il codice dentro una "guardia", cosi se il tuo codice viene importato come module, non viene eseguito.
Quindi, supponendo che la tua nuova funzione si chiami
macchinetta
, avremo qualcosa del genere:
Python:
# Leggi https://stackoverflow.com/q/419163/2586392 per più informazioni su questo costrutto
if __name__ == "__main__":
while True:
macchinetta()
Se vogliamo fare qualcosa di carino, possiamo fare che si ricordi del credito tra un'esecuzione e l'altra (supponiamo non dia resto!).
Puoi creare una classe, giusto per esercitarsi con la programmazione a oggetti, e gli diamo un paio di funzioni per aggiungere e togliere denaro. Aggiungiamo anche un'eccezione se non ci sono abbastanza soldi.
Il codice diventa allora qualcosa tipo:
Python:
class Cassa(object):
def __init__(self):
self.credito = 0
def aggiungi(self, amount):
self.credito += amount
def rimuovi(self, amount):
if amount >= self.credito:
raise ValueError("Non hai abbastanza credito!")
self.credito -= amount
def macchinetta(cassa: Cassa):
bevande = {
"Caffe": 0.40,
"Cioccolata": 0.60,
"Caffe macchiato": 0.45,
"Te": 0.30,
}
for nome, prezzo in bevande.items():
print(f"Prodotto: {nome}, Prezzo: {prezzo}")
print('-' * 50)
selezione_prodotto = input("Inserisci il nome del prodotto: ")
if selezione_prodotto in bevande.keys():
print(f"Hai selezionato {selezione_prodotto.upper()}")
else:
print("Valore non corretto!")
return
credito_inserito = float(input("Inserisci denaro: "))
cassa.aggiungi(credito_inserito)
print(f"Denaro disponibile: {cassa.credito}")
print('-' * 50)
try:
cassa.rimuovi(bevande[selezione_prodotto])
print("Erogazione in corso ...")
print("Bevanda pronta!")
print('-' * 50)
print(f"Denaro rimanente: {cassa.credito}")
except ValueError as err:
print(err)
print(f"{selezione_prodotto} costa {bevande[selezione_prodotto]} euro")
print("\n")
# Leggi https://stackoverflow.com/q/419163/2586392 per più informazioni su questo costrutto
if __name__ == "__main__":
cassa = Cassa()
while True:
macchinetta(cassa)
Se vuoi esercitarti un altro po', puoi:
- Creare una classe "Inventario", che conti quante cose ci sono ancora nella macchinetta, e man mano diminuisce
- Avere un selettore che ti faccia scegliere quanto zucchero
- Aggiungere la possibilità di avere le "chiavette", dove puoi caricare credito
- Poter far ricaricare l'inventario
- A fine giornata, stampare quanti soldi sono stati collezionati, e quante bevande sono state erogate
- Salvare il tutto in un file, che funga da database, cosicché l'inventario rimanga anche tra esecuzioni diverse del programma