Кажется, у вас даже нет "Костюма" на ваших картах, так как вы обнаружите флеш?
Вот пример хорошей колоды карт и обнаружения флеша.Объедините это с collections.Counter
, который я предложил в вашем другом вопросе, и у вас будет большинство комбинаций.
Я бы посоветовал прочитать об объектах и классах (например, http://introtopython.org/classes.html)
И я оставлю это вам для создания class Hand
, который берет 5 карт в __init__
и имеет такие методы, как is_flush()
...
from collections import namedtuple
from random import shuffle
Card = namedtuple("Card", "suit, rank")
class Deck:
suits = '♦♥♠♣'
ranks = '23456789JQKA'
def __init__(self):
self.cards = [Card(suit, rank) for suit in self.suits for rank in self.ranks]
shuffle(self.cards)
def deal(self, amount):
return tuple(self.cards.pop() for _ in range(amount))
flush = False
while not flush:
deck = Deck()
while len(deck.cards) > 5:
hand = deck.deal(5)
# (Card(suit='♣', rank='7'), Card(suit='♠', rank='2'), Card(suit='♥', rank='4'), Card(suit='♥', rank='K'), Card(suit='♣', rank='3'))
if len(set(card.suit for card in hand)) > 1:
print(f"No Flush: {hand}")
continue
print(f"Yay, it's a Flush: {hand}")
flush = True
break
# No Flush: (Card(suit='♠', rank='K'), Card(suit='♣', rank='6'), Card(suit='♦', rank='6'), Card(suit='♣', rank='4'), Card(suit='♠', rank='Q'))
# No Flush: (Card(suit='♠', rank='J'), Card(suit='♥', rank='9'), Card(suit='♥', rank='3'), Card(suit='♣', rank='2'), Card(suit='♠', rank='6'))
# No Flush: (Card(suit='♣', rank='7'), Card(suit='♥', rank='5'), Card(suit='♦', rank='5'), Card(suit='♦', rank='Q'), Card(suit='♦', rank='K'))
# Yay, it's a Flush: (Card(suit='♣', rank='3'), Card(suit='♣', rank='A'), Card(suit='♣', rank='J'), Card(suit='♣', rank='9'), Card(suit='♣', rank='5'))