draco97
02-01-2020, 22:08
Salve a tutti, mi sono avvicinato alla programmazione in Python da circa una settimana... e per ora sto studiando qualche base come i cicli while for e qualche nozione sulle variabili e i loro tipi. Siccome volevo iniziare a testarmi e provare a scrivere qualche piccolissimo programma con ciò che ho imparato, ho deciso di provare a scrivere una piccola morra cinese molto base, che da semplicemente un valore casuale alla mossa dell'avversario e decreta il giocatore che ha vinto:
print ('Benvenuto alla morra cinese di Alessandro.')
from random import randint
giocatore = input ('scegli carta, forbice o sasso ')
if giocatore != 'carta' and giocatore != 'sasso' and giocatore != 'forbice':
print ('errore') # in caso di errore, far ripartire il ciclo da capo
else:
print ('hai scelto', giocatore)
computer = randint (0,2)
if computer == 0: computer = 'sasso'
elif computer == 1: computer = 'forbice'
else:
computer = 'carta'
print('il tuo avversario ha scelto ', computer)
if giocatore == 'carta' and computer == 'forbice' or giocatore == 'forbice' and computer == 'carta' or giocatore == 'sasso' and computer == 'forbice':
print (' complimenti, hai vinto! ')
elif giocatore == 'carta' and computer == 'carta' or giocatore == 'forbice' and computer == 'forbice' or giocatore == 'sasso' and computer == 'sasso':
print (' è un pareggio!')
else:
print (' Mi spiace, hai perso!')
# fine della partita, chiedere se iniziare un'altra partita e quindi ricominciare il ciclo da capo
I problemi che non riesco a risolvere sono essenzialmente due:
- vorrei che, nel caso in cui l'immissione del valore della risposta del giocatore sia errato, il ciclo oltre a dare errore si debba interrompere e/o ripartire senza proseguire oltre.
- creare, una volta terminata la partita, un ulteriore pezzo di codice nel quale se la risposta equivalga a si, il ciclo ricominci da capo consentendo di effettuare un'altra partita.
Ho provato ad inserire un while a inizio programma. Tuttavia così facendo risolve soltanto un pezzo di codice (if, ed else iniziali) e non va oltre la scelta effettuata dal giocatore. Ho provato ad inserire più cicli per ogni if else impostando un valore true o false ad una variabile all'inizio del ciclo, ma anche in questo caso il risultato è stato insoddisfacente visto che il ciclo non ripartiva effettivamente se andavo a digitare un input si, ma invece il programma terminava.
Dove sbaglio? Sono effettivamente inesperto e alle prime armi, ma sono stato ore a provare quantomeno a far ripartire il ciclo una volta finita la partita. Mi serve sapere qualche nozione avanzata per poter fare ciò, oppure è sufficiente quello che ho imparato fin'ora?
Grazie a tutti quelli che mi risponderanno :)
print ('Benvenuto alla morra cinese di Alessandro.')
from random import randint
giocatore = input ('scegli carta, forbice o sasso ')
if giocatore != 'carta' and giocatore != 'sasso' and giocatore != 'forbice':
print ('errore') # in caso di errore, far ripartire il ciclo da capo
else:
print ('hai scelto', giocatore)
computer = randint (0,2)
if computer == 0: computer = 'sasso'
elif computer == 1: computer = 'forbice'
else:
computer = 'carta'
print('il tuo avversario ha scelto ', computer)
if giocatore == 'carta' and computer == 'forbice' or giocatore == 'forbice' and computer == 'carta' or giocatore == 'sasso' and computer == 'forbice':
print (' complimenti, hai vinto! ')
elif giocatore == 'carta' and computer == 'carta' or giocatore == 'forbice' and computer == 'forbice' or giocatore == 'sasso' and computer == 'sasso':
print (' è un pareggio!')
else:
print (' Mi spiace, hai perso!')
# fine della partita, chiedere se iniziare un'altra partita e quindi ricominciare il ciclo da capo
I problemi che non riesco a risolvere sono essenzialmente due:
- vorrei che, nel caso in cui l'immissione del valore della risposta del giocatore sia errato, il ciclo oltre a dare errore si debba interrompere e/o ripartire senza proseguire oltre.
- creare, una volta terminata la partita, un ulteriore pezzo di codice nel quale se la risposta equivalga a si, il ciclo ricominci da capo consentendo di effettuare un'altra partita.
Ho provato ad inserire un while a inizio programma. Tuttavia così facendo risolve soltanto un pezzo di codice (if, ed else iniziali) e non va oltre la scelta effettuata dal giocatore. Ho provato ad inserire più cicli per ogni if else impostando un valore true o false ad una variabile all'inizio del ciclo, ma anche in questo caso il risultato è stato insoddisfacente visto che il ciclo non ripartiva effettivamente se andavo a digitare un input si, ma invece il programma terminava.
Dove sbaglio? Sono effettivamente inesperto e alle prime armi, ma sono stato ore a provare quantomeno a far ripartire il ciclo una volta finita la partita. Mi serve sapere qualche nozione avanzata per poter fare ciò, oppure è sufficiente quello che ho imparato fin'ora?
Grazie a tutti quelli che mi risponderanno :)