Un semplice esempio di programmazione con Python: carta forbice sasso

Introduzione

In questo semplice esempio di programmazione con Python creerai il gioco Carta, Forbice, Sasso e giocherai contro il computer.

Il gioco è molto semplice: sia il giocatore che il computer scelgono carta, forbice o sasso, e si vince in base alle regole seguenti:

  • Sasso vince contro Forbice
  • Carta vince contro Sasso
  • Forbice vince contro Carta

Usare IDE su Microninja

Un fantastico modo di scrivere e testare codice è quello di usare Thonny Python IDE, un’applicazione di sviluppo per Python.
Lancia Thonny Python IDE da Menu/Coding/Thonny Python IDE.
Si accede al menù facendo clic sull’icona di Microninja in basso a sinistra dello schermo.
Una volta aperta la finestra di Python, avrai a disposizione un editor di testo, dove puoi scrivere, salvare e testare il tuo codice.

Salva subito il tuo file con il nome cartaforbicesasso.py: fai clic su File e quindi su Save As. Seleziona la cartella .thonny, e scrivi cartaforbicesasso.py nel campo di testo Nome del file. Fai quindi clic su Salva.

Il Turno del giocatore

Per prima cosa, facciamo scegliere al giocatore Carta, Forbice o Sasso.

Useremo il modulo randint per generare numeri in maniera casuale.
Quindi facciamo scegliere al giocatore Carta, Forbice o Sasso digitando le lettere ‘c’, ‘f’ or ’s’.

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')

Ora stampiamo a schermo la scelta fatta:

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')

Testa il codice facendo clic su Run. Fai clic nella finestra di output e fai la tua scelta.

Il turno del Computer

Ora tocca al computer. Usiamo la funzione randint per generare un numero casuale per decidere fra carta, forbice e sasso.

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')
sceltapc = randint (1,3)
print(sceltapc)

Esegui il programma qualche volta (dovrai inserire ‘c’, ‘f’ or ‘s’ ogni volta).
sceltapc dovrebbe assumere il valore 1, 2 o 3.

Diciamo che:

  • 1 = sasso (s)
  • 2 = carta (c)
  • 3 = forbice (f)

Usa if per verificare che la scelta del pc sia 1 (== viene usato per verificare se 2 “cose” sono uguali).

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')
sceltapc = randint (1,3)
print(sceltapc)
if sceltapc == 1:

Python usa il rientro (sposta una riga di codice a destra) per farti vedere quali istruzioni si riferiscano if. Definisci computer come ‘s’ sotto if usando il rientro:

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')
sceltapc = randint (1,3)
print(sceltapc)
if sceltapc == 1:
  computer = 's'

Puoi aggiungere un’altra condizione usando elif (se invece):

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')
sceltapc = randint (1,3)
print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'

Questa condizione verrà controllata solo se la prima non viene soddisfatta (e cioè se il computer non sceglie 1).

Infine, se il computer non ha scelto né 1 né 2, allora deve per forza aver scelto 3.
Questa volta puoi usare else che significa “altrimenti”.

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')
sceltapc = randint (1,3)
print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'
else:
  computer = 'f'

Adesso, al posto di visualizzare a schermo il numero che il computer ha scelto casualmente, puoi visualizzare la lettera.

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs')
sceltapc = randint (1,3)
#print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'
else:
  computer = 'f'
print(computer)

Puoi sia cancellare print(sceltapc), o fare in modo che il programma lo ignori inserendo # all’inizio della riga.

Testa il tuo codice premendo Run e facendo una scelta.

Hmm, la scelta del computer viene stampata in una nuova riga. Puoi ovviare a questo problema aggiungendo end=' ' dopo vs: questo comando dice a Python di finire con uno spazio e non andando a capo.

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs', end=’ ’)
sceltapc = randint (1,3)
#print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'
else:
  computer = 'f'
print(computer)

Gioca un po’ di volte, premendo Run e facendo una scelta.
Al momento devi dedurre da solo chi ha vinto. Adesso vediamo come farlo fare a Python.

Controlla il Risultato

Aggiungiamo del codice per determinare chi ha vinto in maniera automatica.
Devi confrontare le variabili giocatore e computer.
Se hanno lo stesso valore, allora è un pareggio:

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs', end=’ ’)
sceltapc = randint (1,3)
#print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'
else:
  computer = 'f'
print(computer)
if giocatore == computer:
  print('PAREGGIO!')

Testa il codice giocando finché non ottieni un pareggio.

Adesso vediamo il caso in cui il giocatore ha scelto ‘s’ (sasso) e il computer no. Se il computer ha scelto ‘f’ (forbice) allora il giocatore ha vinto. Se il computer ha scelto ‘c’ (carta) allora il computer ha vinto. Possiamo verificare la scelta del giocatore e del computer usando and.

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs', end=’ ’)
sceltapc = randint (1,3)
#print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'
else:
  computer = 'f'
print(computer)
if giocatore == computer:
  print('PAREGGIO!')
elif giocatore == 's' and computer == 'f':
  print(‘HAI VINTO!')
elif giocatore == 's' and computer == 'c':
  print(‘HAI PERSO!’)

Adesso vediamo il caso in cui il giocatore ha scelto ‘c’ (carta) e il computer no:

from random import randint
giocatore = input ('carta (c), forbice (f), sasso(s)?')
print(giocatore, 'vs', end=’ ’)
sceltapc = randint (1,3)
#print(sceltapc)
if sceltapc == 1:
  computer = 's'
elif sceltapc == 2:
  computer = 'c'
else:
  computer = 'f'
print(computer)
if giocatore == computer:
  print('PAREGGIO!')
elif giocatore == 's' and computer == 'f':
  print(‘HAI VINTO!')
elif giocatore == 's' and computer == 'c':
  print(‘HAI PERSO!’)
elif giocatore == 'c' and computer == 's':
  print(‘HAI VINTO!')
elif giocatore == 'c' and computer == 'f':
  print(‘HAI PERSO!’)

Sapresti scrivere da solo il codice necessario per determinare chi vince quando il giocatore sceglie ‘f’ (forbice) e il computer sasso o carta?

Gioca un po’ per testare il codice e creare nuovi esempi con Python.


This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.