Baralla de cartes¶
El mòdul baralla conté tot un seguit de funcions que
permeten crear, modificar i consultar el conjunt de cartes d’una
baralla.
Hem decidit representar una carta amb una tupla (n, p), on
n és el número (entre 1 i 12) i
p és el pal, una cadena de caràcters que pot valdre
'oros','copes','espases'o'bastos'.
Una baralla, sencera o no, es representa com una llista de cartes.
Es demana que:
Dissenyeu la funció
nova_baralla()[1]:- baralla.nova_baralla()¶
Retorna una baralla amb les 48 cartes ordenades: [(1, “oros”), (2, “oros”), … (12, “bastos”)]
Per exemple:
>>> from baralla import nova_baralla >>> b = nova_baralla() >>> len(b) 48 >>> print(b[0]) (1, 'oros') >>> print(b[47]) (12, 'bastos')
Dissenyeu la funció següent [1]:
- baralla.nom_carta(carta)¶
Retorna el nom tradicional de la carta (
str) calculat a partir de la tupla carta.Per exemple:
>>> from baralla import nom_carta >>> nom_carta( (1, 'copes') ) 'as de copes' >>> nom_carta( (5, 'espases') ) "5 d'espases" >>> nom_carta( (10, 'oros') ) "sota d'oros" >>> nom_carta( (12, 'bastos') ) 'rei de bastos'
Recordeu que tradicionalment s’anomena as al número 1, sota al 10, cavall a l’11 i rei al 12.
Definiu la funció següent [1]:
- baralla.escriu(baralla)¶
Escriu a la sortida estàndard el nom tradicional de totes les cartes de la baralla baralla.
Per exemple:
>>> from baralla import escriu >>> b = [ ... (3, 'bastos'), ... (12, 'oros'), ... (1, 'copes'), ... ] >>> escriu(b) 3 de bastos rei d'oros as de copes
Dissenyeu la funció següent [1]:
- baralla.treu_carta(b)¶
Retorna la primera carta de la baralla b i l’elimina de la baralla b.
Per exemple:
>>> from baralla import nova_baralla, treu_carta >>> x = nova_baralla() >>> y = x[:] >>> c = treu_carta(x) >>> print(c) (1, 'oros') >>> x == y[1:] True
Utilitzant la funció
shuffle()del mòdulrandom, dissenyeu la funció següent [1]:- baralla.barreja(b)¶
Barreja les cartes de la baralla b, intercanviant-ne l’ordre a l’atzar.
Per exemple:
>>> from baralla import nova_baralla, barreja >>> b = nova_baralla() >>> c = b[:] >>> barreja(b) >>> c == b False >>> sorted(c) == sorted(b) True
Dissenyeu la funció següent [1]:
- baralla.quatre_bastos_seguits(b)¶
Retorna True si a la baralla b hi ha quatre cartes de bastos juntes i False altrament.
Per exemple:
>>> from baralla import nova_baralla, quatre_bastos_seguits >>> b = nova_baralla() >>> quatre_bastos_seguits(b) True >>> quatre_bastos_seguits(b[:39]) False
Dissenyeu la funció següent [1]:
- baralla.talla(b, l)¶
Retorna una nova baralla calculada tallant en dues piles la baralla de cartes b pel lloc l i empilant-les en l’ordre contrari.
Per exemple:
>>> from baralla import talla >>> b = [ ... (3, 'bastos'), ... (12, 'oros'), ... (1, 'copes'), ... ] >>> b1 = talla(b, 1) >>> b1 [(12, 'oros'), (1, 'copes'), (3, 'bastos')] >>> b2 = talla(b, 2) >>> b2 [(1, 'copes'), (3, 'bastos'), (12, 'oros')] >>> b3 = talla(b, 0) >>> b3 == b True
Solució
Disposeu d’una solució al fitxer baralla.py. Us encoratgem a resoldre el problema abans de
mirar la solució. Useu-la per comparar-la amb la vostra.
Notes