View Single Post
Old 03-01-2020, 10:36   #2
DoctorT
Senior Member
 
Iscritto dal: Jul 2005
Messaggi: 736
l'idea di mettere un ciclo while è giusta, però il tuo codice sembra un pochino confuso mentre il python ha delle funzionalità ottime che ti permettono di scrivere un codice più elegante e comprensibile. Ad esempio per transformare in stringa la risposta random del computer è più semplice usare una lista.
Ti allego una mia implementazione che risolve il problema n.2, per gestire l'errore di input forse si potrebbe usare mettere la risposta dell'utente dentro un altro ciclo while ma la cosa si complica ... vediamo se arriva qualcuno con una rispost più elegante.

Codice:
from random import randint
    
segno = ["carta","forbice","sasso"]
continua = "s";

print ('Benvenuto alla morra cinese di Alessandro.')
while continua =="s":
	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 = segno[randint(0,2)] # il computer scegli il segno da giocare
	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 == computer:
		print (' è un pareggio!')
	else:
		print (' Mi spiace, hai perso!')
	continua = input ("vuoi continuare ? (s/n)   ") # chiedi se coninciare un altra partita
__________________
O.S.: WIN 10 64-bit CPU: INTEL I5 12400F RAM: 16 GB Corsair Vengeance LPX 3200 Mhz VGA: MSI ARMOR RX570 4GB OC MOBO: ASROCK B660M PRO RS HDD: Seagate 1TB SDD: CRUCIAL MX500 500GB ALI: BE QUIET PURE POWER CM 11 600W
DoctorT è offline   Rispondi citando il messaggio o parte di esso