Skip to content

Instantly share code, notes, and snippets.

@macndesign
Created October 4, 2015 21:04
Show Gist options
  • Save macndesign/f71cd40c1e97d8e3215d to your computer and use it in GitHub Desktop.
Save macndesign/f71cd40c1e97d8e3215d to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# coding: utf-8
"""
>>> from baralho import Baralho
>>> b = Baralho()
>>> len(b)
52
>>> sorted([Carta('2', 'espadas'), Carta('K', 'copas'), Carta('A', 'copas')])
[<A de copas>, <2 de espadas>, <K de copas>]
>>> b.pega_carta('4', 'paus')
<4 de paus>
>>> b.pega_carta('B', 'copas')
'Carta nao encontrada'
>>> b[0]
<A de copas>
>>> b[:3]
[<A de copas>, <2 de copas>, <3 de copas>]
>>> for carta in b[-3:]: print carta
...
<J de paus>
<Q de paus>
<K de paus>
>>> b = Baralho()
>>> b[-1]
<K de paus>
>>> b[-3:]
[<J de paus>, <Q de paus>, <K de paus>]
>>> b[:3]
[<A de copas>, <2 de copas>, <3 de copas>]
"""
from random import shuffle
from functools import total_ordering
@total_ordering
class Carta(object):
naipes = 'copas ouros espadas paus'.split()
valores = 'A 2 3 4 5 6 7 8 9 10 J Q K'.split()
def __init__(self, valor, naipe):
self.valor = valor
self.naipe = naipe
def __repr__(self):
return u'<%s de %s>' % (self.valor, self.naipe)
def __eq__(self, other):
return (self.valor, self.naipe) == (other.valor, other.naipe)
def __gt__(self, other):
return self.peso() > other.peso()
@classmethod
def todas(cls):
return [Carta(v, n) for n in cls.naipes for v in cls.valores]
def peso(self):
return Carta.naipes.index(self.naipe) + len(Carta.naipes) * Carta.valores.index(self.valor)
class Baralho(object):
def __init__(self):
self.cartas = Carta.todas()
def __len__(self):
return len(self.cartas)
def __getitem__(self, pos):
return self.cartas[pos]
def __setitem__(self, pos, item):
self.cartas[pos] = item
def pega_carta(self, valor, naipe):
pegou = None
for carta in self.cartas:
if carta.naipe == naipe and carta.valor == valor:
pegou = carta
return pegou if pegou else 'Carta nao encontrada'
if __name__ == '__main__':
from doctest import testmod
testmod()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment