#poker.py import random #suits = ['clubs','diamonds','hearts','spades'] suits = ['\u2663','\u2666','\u2665','\u2660'] #Aces high: 14 #card is a tuple (2-14,suit_char) def card_str(card): #return a string of the card 8H, AC, etc if card[0] == 14: pip = 'A' elif card[0] == 11: pip = 'J' elif card[0] == 12: pip = 'Q' elif card[0] == 13: pip = 'K' else: pip = str(card[0]) return pip+card[1] def hand_str(hand): #return a string of all the cards h = '' for card in hand: h += card_str(card) + ' ' return h def rank(h): #5 cards, in sorted order straight = flush = False if h[0][0]+1==h[1][0] and h[1][0]+1==h[2][0] and h[2][0]+1==h[3][0] and h[3][0]+1==h[4][0]: straight = True elif h[0][0]==2 and h[1][0]==3 and h[2][0]==4 and h[3][0]==5 and h[4][0]==14: straight = True #A2345 if h[0][1]==h[1][1]==h[2][1]==h[3][1]==h[4][1]: flush = True if straight: if flush: return "straight flush" else: return "straight: " + str(h[0][0]) + "-" + str(h[4][0]) elif flush: return "flush" if h[0][0]==h[3][0] or h[1][0]==h[4][0]: return "four-of-a-kind: " + str(h[1][0]) if h[0][0]==h[2][0] and h[3][0]==h[4][0] or\ h[0][0]==h[1][0] and h[2][0]==h[4][0]: return "full house" if h[0][0]==h[2][0] or h[1][0]==h[3][0] or h[2][0]==h[4][0]: return "three-of-a-kind" if h[0][0]==h[1][0] and h[2][0]==h[3][0] or\ h[0][0]==h[1][0] and h[3][0]==h[4][0] or\ h[1][0]==h[2][0] and h[3][0]==h[4][0]: return "two pair" if h[0][0]==h[1][0] or h[1][0]==h[2][0] or\ h[2][0]==h[3][0] or h[3][0]==h[4][0]: return "one pair" # return str(h[4][0]) + " high" return "high" deck = [(i%13+2,suits[i//13]) for i in range(52)] #create a fresh deck #tuples: (2-14,suit_char) #print(deck) #hand=[(10,'♦'),(11, '♣'),(12, '♥'),(13, '♦'),(14, '♠')] #hand=[(14,'♦'),(2, '♣'),(3, '♥'),(4, '♦'),(5, '♠')] #hand.sort(key=lambda t: (t[0], suits.index(t[1]))) #print(hand_str(hand), rank(hand)) loops = int(input("number of hands: ")) for i in range(loops): random.shuffle(deck) #print(hand_str(deck)) hand = deck[:5] #del deck[:5] hand.sort(key=lambda t: (t[0], suits.index(t[1]))) if rank(hand) not in ['one pair','high','two pair']: print(hand_str(hand), rank(hand)) #test ranking #hand=[(6, '♦'), (7, '♦'), (8, '♦'), (9, '♦'), (10, '♦')] #hand=[(6, '♦'), (7, '♦'),(8, '♠'), (9, '♠'), (10, '♠')] #hand=[(3, '♦'),(6, '♦'), (7, '♦'), (9, '♦'), (13, '♦')] #hand=[(6, '♣'),(6, '♦'),(6, '♥'),(6, '♠'),(9, '♦')] #hand=[(3, '♦'),(6, '♣'),(6, '♦'),(6, '♥'),(6, '♠')] #hand=[(3, '♦'),(3, '♠'),(6, '♣'),(6, '♦'),(6, '♥')] #hand=[(3, '♣'),(3, '♦'),(3, '♠'),(6, '♦'),(6, '♥')] #hand=[(3, '♣'),(3, '♦'),(3, '♠'),(6, '♦'),(7, '♥')] #hand=[(2, '♦'),(3, '♣'),(3, '♦'),(3, '♠'),(7, '♥')] #hand=[(1, '♦'),(2, '♥'),(3, '♣'),(3, '♦'),(3, '♠')] #hand=[(3, '♦'),(3, '♠'),(6, '♣'),(6, '♦'),(9, '♥')] #hand=[(3, '♦'),(3, '♠'),(5, '♥'),(6, '♣'),(6, '♦')] #hand=[(2, '♥'),(3, '♦'),(3, '♠'),(6, '♣'),(6, '♦')] #hand=[(3, '♦'),(3, '♠'),(6, '♣'),(7, '♦'),(9, '♥')] #hand=[(2,'♦'),(3, '♦'),(3, '♠'),(6, '♣'),(9, '♥')] #hand=[(1,'♦'),(2, '♣'),(3, '♦'),(3, '♠'),(9, '♥')] #hand=[(1,'♦'),(2, '♣'),(9, '♥'),(3, '♦'),(3, '♠')] #hand=[(14,'♦'),(2, '♣'),(3, '♥'),(4, '♦'),(5, '♠')] #hand=[(10,'♦'),(11, '♣'),(12, '♥'),(13, '♦'),(1, '♠')]