Realizziamo un esempio in Python sulle carte della briscola. Le carte della briscola sono 40 con i seguenti valori: asso, 2, 3, 4, 5, 6, 7, fante, cavallo, re. I semi sono bastoni, coppe, denari e spade.
Python carte – primo esempio
Estrarre una carta a caso da un mazzo di 40 carte.
Utilizziamo una lista carte che conterrà i numeri da 0 a 39. Per popolarla utilizzo list(range(40)).
Per mescolare le carte utilizzo poi il metodo shuffle, importando il modulo random.
Fate dunque la prova ad eseguire questo codice:
from random import *
carte=list(range(40))
print(carte)
shuffle(carte)
print(carte)
Noterete come il mazzo delle 40 carte viene mescolato.
Adesso proviamo ad estrarre una carta utilizzando il metodo choice e dopo averla estratta la rimuoviamo dal mazzo utilizzando il metodo remove.
Provate dunque questo codice:
from random import *
carte=list(range(40))
shuffle(carte)
estratta=choice(carte)
carte.remove(estratta)
print(carte)
Secondo esempio estrazione di carte in Python
Estraiamo adesso tutte le carte dal mazzo.
Quindi con un ciclo while che continua finché la lunghezza della lista carte non è 0, estraiamo delle carte. Visualizziamo la lista ogni volta per vedere i risultati dell’estrazione.
Ecco dunque un esempio:
from random import *
n=40
carte=list(range(n))
shuffle(carte)
while n>0:
estratta=choice(carte)
carte.remove(estratta)
print('La carta estratta è', estratta)
print(carte)
n-=1
Terzo esempio estrazione dell’ultima carta in Python
Facciamo una variazione all’esercizio proposto estraendo sempre l’ultima carta.
Utilizziamo per questo scopo il metodo pop.
from random import *
n=40
carte=list(range(n))
shuffle(carte)
while n>0:
estratta=carte.pop()
print('La carta estratta è', estratta)
print(carte)
n-=1
Quarto esempio
Associamo adesso il seme e il valore della carta al numero estratto.
Creiamo quindi due liste, una per i semi e una per i valori.
valori = [‘asso’, ‘due’, ‘tre’, ‘quattro’, ‘cinque’, ‘sei’, ‘sette’, ‘fante’, ‘cavallo’, ‘re’]
semi=[‘bastoni’, ‘coppe’, ‘denari’, ‘spade’]
I valori sono 10, mentre i semi sono 4.
Quindi per trovare il seme basta dividere ciascun numero per 10.
Infatti se ad esempio esce 35:
35//10=3 – corrisponde a spade
24//10=2 – corrisponde a denari
16//10=1 – corrisponde a coppe
8//10=0 – corrisponde a bastoni
Quindi modifichiamo il codice:
from random import *
semi = ['bastoni', 'coppe', 'denari', 'spade']
valori = ['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']
n = 40
carte = list(range(n))
shuffle(carte)
while n > 0:
estratta = carte.pop()
n -= 1
s = estratta//10
print('La carta estratta è', estratta)
print('Seme: ', semi[s])
print(carte)
Adesso non ci resta che determinare il valore. Possiamo pensare di considerare i resti della divisione in quanto i valori vanno da 0 a 9. In questo modo ottengo tutte le possibili combinazioni.
Quindi modifico ancora il codice:
from random import *
semi = ['bastoni', 'coppe', 'denari', 'spade']
valori = ['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']
n = 40
carte = list(range(n))
shuffle(carte)
while n > 0:
estratta = carte.pop()
n -= 1
s = estratta//10
v = estratta%10
print('La carta estratta è', estratta)
print('Seme: ', semi[s])
print('Valore: ', valori[v])
print(carte)
Adesso chiediamo all’utente di continuare ad estrarre le carte utilizzando un ciclo while True.
from random import *
semi = ['bastoni', 'coppe', 'denari', 'spade']
valori = ['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']
n = 40
carte = list(range(n))
shuffle(carte)
while True:
estrai = input('Per estrarre premi invio, altrimenti premi E! ')
if estrai == 'E':
break
estratta = carte.pop()
n -= 1
s = estratta//10
v = estratta%10
print('La carta estratta è', estratta)
print(valori[v], 'di', semi[s])
Una volta capito il funzionamento possiamo anche togliere l’istruzione print(‘La carta estratta è’, estratta).
Gioco indovina carta in Python
Realizziamo un semplice gioco per indovinare una carta in Python.
Dapprima facciamo indovinare il seme della carta, dopo se ha indovinato il seme facciamo indovinare anche il valore.
Questa è una possibile soluzione, proponete pure la vostra e provate a creare delle varianti al gioco.
from random import *
semi=['bastoni', 'coppe', 'denari', 'spade']
valori=['asso', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'fante', 'cavallo', 're']
n=40
carte = list(range(n))
shuffle(carte)
while True:
estrai = input('Per estrarre premi invio, altrimenti premi E! ')
if estrai == 'E':
break
estratta = carte.pop()
n -= 1
s = estratta//10
v = estratta%10
print('Hai due tentativi per indovinare il seme!')
tentativo = 0
for i in range(2):
indovina = input('metti il seme: b, c, d oppure s: ')
if indovina == 'b':
indovina = 'bastoni'
elif indovina == 'c':
indovina = 'coppe'
elif indovina == 'd':
indovina = 'denari'
elif indovina == 's':
indovina = 'spade'
else:
print('Hai sbagliato a digitare')
if indovina == semi[s]:
print('Hai indovinato il seme! ')
tentativo = 1
break
else:
print('Non hai indovinato!')
if tentativo == 1:
print('Hai tre tentativi per indovinare il valore!')
for i in range(3):
numero = input('metti il valore: asso, due, tre, quattro , cinque, sei, sette, fante, cavallo, re: ')
if numero == valori[v]:
print('Hai indovinato! ')
break
else:
print('Non hai indovinato! ')
if i == 2:
print('La carta estratta era: ', valori[v], 'di', semi[s] )
print()
Provate a scrivere codice direttamente nell’editor sotto:
Alcuni link utili
Indice tutorial sul linguaggio Python
1 – Introduzione al linguaggio Python
2 – Le variabili
3 – Operatori aritmetici e di assegnazione
4 – Stringhe
5 – Casting
6 – Input e print
8 – Errori in Python
9 – Script Python
10 – Scambio di variabili