Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-01-2020, 22:08   #1
draco97
Junior Member
 
Iscritto dal: Jan 2020
Messaggi: 3
[Python] Piccolo programma morra cinese (principiante)

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:

Codice:
    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
draco97 è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2020, 09:36   #2
DoctorT
Senior Member
 
Iscritto dal: Jul 2005
Messaggi: 738
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
Old 03-01-2020, 10:00   #3
DoctorT
Senior Member
 
Iscritto dal: Jul 2005
Messaggi: 738
aggiunta la gestione dell'errore di input ... ho usato lo statement break e l'operatore in delle liste, forse non li hai ancora studiati ma rendono tutto un pò più chiaro

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

print ('Benvenuto alla morra cinese di Alessandro.')
while continua =="s":
	while True:
		giocatore = input ('scegli carta, forbice o sasso  ')
		if giocatore in segno:
			break
		else:
			print ("errore ripeti la scelta ")
	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
Old 03-01-2020, 15:58   #4
draco97
Junior Member
 
Iscritto dal: Jan 2020
Messaggi: 3
Aaah ecco. Sapevo che stavo sbagliando la forma e l'ordine in cui scrivevo il programma, sinceramente non penso che ci sarei mai arrivato da solo. Gli operatori (in, in particolare) non li ho ancora studiati, ma spero di arrivarci presto...
Quindi guardando il secondo programma che hai scritto: il ciclo while si interrompe se metto un valore corretto per poi far proseguire la seconda parte del programma, mentre fa ricominciare il primo ciclo da capo se sbaglio giusto?
draco97 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2020, 12:51   #5
DoctorT
Senior Member
 
Iscritto dal: Jul 2005
Messaggi: 738
Quote:
Originariamente inviato da draco97 Guarda i messaggi
Aaah ecco. Sapevo che stavo sbagliando la forma e l'ordine in cui scrivevo il programma, sinceramente non penso che ci sarei mai arrivato da solo. Gli operatori (in, in particolare) non li ho ancora studiati, ma spero di arrivarci presto...
Quindi guardando il secondo programma che hai scritto: il ciclo while si interrompe se metto un valore corretto per poi far proseguire la seconda parte del programma, mentre fa ricominciare il primo ciclo da capo se sbaglio giusto?
si esatto il ciclo si interrompe quando immetti un valore corretto.
__________________
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
Old 05-01-2020, 13:39   #6
draco97
Junior Member
 
Iscritto dal: Jan 2020
Messaggi: 3
Quote:
Originariamente inviato da DoctorT Guarda i messaggi
si esatto il ciclo si interrompe quando immetti un valore corretto.
Perfetto, grazie mille gentilissimo
draco97 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
CAS Space ha lanciato per la prima volta...
Qualcomm boccia Samsung: i futuri chip S...
Il razzo spaziale cinese Tianlong-3 di S...
Samsung cambia i piani: aumenta la produ...
TSMC non si ferma più: fatturato ...
Xiaomi porta in Italia il nuovo Redmi A7...
Mercato smartphone: Q1 2026 positivo (+1...
YouTube punta sull'AI: gli utenti potran...
Il prossimo chip a 2 nm di Samsung punte...
Due smartphone REDMAGIC sono stati rimos...
La beta della One UI 8.5 è ora di...
Addio al Pannello di Controllo di Window...
Il chip N1 di NVIDIA per i laptop del fu...
YouTube Premium costerà di pi&ugr...
I nuovi Samsung Galaxy A57 5G e A37 5G a...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v