Io userei una lista di tuple per rappresentare il mazzo, in questo modo potresti fare dei controlli anche relativamente elaborati con poco sforzo. Ad esempio in questo codice creo un un nuovo mazzo e controllo quante carte ho uguali a seconda del valore, del seme o del colore.
Questo ti permette di controllare se hai fatto coppia, tris, poker, colore o cose di questo tipo. Con altrettanta facilità puoi aggiungere i controlli per vedere se hai fatto scala, dopodiché combini le due cose e diventa semplice capire chi è il vincitore della mano.
Python:
import random
black, red = ['picche', 'fiori'], ['cuori', 'quadri']
seeds = black + red
numbers, figures = [ '2', '3', '4', '5', '6', '7', '8', '9', '10' ], [ 'jack', 'queen', 'king', 'ace' ]
values = numbers + figures
deck = [ (v,s) for s in seeds for v in values ]
compare = { 'value' : lambda a,b: a[0] == b[0],
'seed' : lambda a,b: a[1] == b[1],
'color': lambda a,b: (a[1] in black and b[1] in black) or (a[1] in red and b[1] in red) }
def maximum(cards, compare):
return max(sum(compare(x, y) for x in cards) for y in cards)
if __name__ == '__main__':
random.shuffle(deck)
hand = [ deck.pop() for i in range(5) ]
print('your hand is: {}'.format(hand))
print('{} cards equals by value'.format(maximum(hand, compare['value'])))
print('{} cards equals by seeds'.format(maximum(hand, compare['seed'])))
print('{} cards equals by colors'.format(maximum(hand, compare['color'])))
Questo ti permette di controllare se hai fatto coppia, tris, poker, colore o cose di questo tipo. Con altrettanta facilità puoi aggiungere i controlli per vedere se hai fatto scala, dopodiché combini le due cose e diventa semplice capire chi è il vincitore della mano.