Advertisement
montana_1

Untitled

Nov 20th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.64 KB | None | 0 0
  1. import random
  2.  
  3. class Pokerhand:
  4.     def __init__(self, hand = None):
  5.         self.hand = []
  6.         if(hand == None):
  7.             self.hand = ['C2','C3','C4','C5','C6']
  8.         elif(len(hand) != 5):
  9.             self.hand = ['C2','C3','C4','C5','C6']
  10.         else:
  11.             self.hand = hand
  12.     def __repr__(self):
  13.         s = '['
  14.         c = 0
  15.         while c < len(self.hand):
  16.             if(c < len(self.hand) - 1):
  17.                 s = s + "'" + self.hand[c] + "'" + ','
  18.             else:
  19.                 s = s + "'" + self.hand[c] + "'" + ']'
  20.             c+=1
  21.         return s
  22.     def rank(self):
  23.         #initial rank, will return this if all other conditions fail
  24.         rank = 0
  25.         straight = False
  26.         flush = True
  27.         three = False
  28.         pair = False
  29.         #Strait check
  30.  
  31.         #Ace as high card
  32.         t = []
  33.         for e in self.hand:
  34.             if(e[1] == 'T'):
  35.                 t.append(10)
  36.             elif(e[1] == 'J'):
  37.                 t.append(11)
  38.             elif(e[1] == 'Q'):
  39.                 t.append(12)
  40.             elif(e[1] == 'K'):
  41.                 t.append(13)
  42.             elif(e[1] == 'A'):
  43.                 t.append(14)
  44.             else:
  45.                 t.append(int(e[1]))
  46.         t.sort()
  47.         if(t[4]-t[3] == 1 and t[3]-t[2] == 1 and t[2]-t[1] == 1 and t[1]-t[0] == 1):
  48.             straight = True
  49.        
  50.         #Ace as low card
  51.         t = []
  52.         for e in self.hand:
  53.             if(e[1] == 'T'):
  54.                 t.append(10)
  55.             elif(e[1] == 'J'):
  56.                 t.append(11)
  57.             elif(e[1] == 'Q'):
  58.                 t.append(12)
  59.             elif(e[1] == 'K'):
  60.                 t.append(13)
  61.             elif(e[1] == 'A'):
  62.                 t.append(1)
  63.             else:
  64.                 t.append(int(e[1]))
  65.         t.sort()
  66.         if(t[4]-t[3] == 1 and t[3]-t[2] == 1 and t[2]-t[1] == 1 and t[1]-t[0] == 1):
  67.             straight = True
  68.         for e in self.hand:
  69.             if(e[0] != self.hand[0][0]):
  70.                 flush = False
  71.                 break
  72.         d = {'2':0,'3':0,'4':0,'5':0,'6':0,'7':0,'8':0,'9':0,'T':0,'J':0,'Q':0,'K':0,'A':0}
  73.         for e in self.hand:
  74.             d[e[1]]+=1
  75.         if(flush and straight):
  76.             return 8
  77.         for e in d.keys():
  78.             if(d[e] >= 4):
  79.                 return 7
  80.         for e in d.keys():
  81.             if(d[e] >= 3):
  82.                 for el in d.keys():
  83.                     if(d[el] >= 2 and e != el):
  84.                         return 6
  85.         if(flush):
  86.             return 5
  87.         if(straight):
  88.             return 4
  89.         for e in d.keys():
  90.             if(d[e] >= 3):
  91.                 return 3
  92.         for e in d.keys():
  93.             if(d[e] >= 2):
  94.                 for el in d.keys():
  95.                     if(d[el] >= 2 and e != el):
  96.                         return 2
  97.         for e in d.keys():
  98.             if(d[e] >= 2):
  99.                 return 1
  100.         return 0
  101. class Carddeck:
  102.     def __init__(self,index=0):
  103.         self.deck = []
  104.         for e in "CSDH":
  105.             for el in "23456789TJQKA":
  106.                 self.deck.append(e+el)
  107.         self.index = index%52
  108.     def __repr__(self):
  109.         s = '['
  110.         c = 0
  111.         while c < len(self.deck):
  112.             if(c < len(self.deck) - 1):
  113.                 s = s + "'" + self.deck[c] + "'" + ','
  114.             else:
  115.                 s = s + "'" + self.deck[c] + "'" + ']'
  116.             c+=1
  117.         return s
  118.     def shuffle(self):
  119.         random.shuffle(self.deck)
  120.         self.index = 0
  121.     def dealcard(self):
  122.         self.index+=1
  123.         return self.deck[self.index-1]
  124.     def dealhand(self):
  125.         return Pokerhand([self.dealcard(),self.dealcard(),self.dealcard(),self.dealcard(),self.dealcard()])
  126.  
  127. def sortList(lst):
  128.     l = []
  129.     for e in lst:
  130.         l.append(e[1])
  131.     l.sort()
  132.     return l
  133.  
  134. x = Carddeck()
  135.  
  136. d = {0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0}
  137.  
  138. c = 100000
  139. while c > 0:
  140.     x.shuffle()
  141.     h = x.dealhand()
  142.     d[h.rank()]+=1
  143.     c-=1
  144.  
  145. t = []
  146. for e in d.keys():
  147.     t.append([e,d[e]])
  148. t.sort()
  149. t.reverse()
  150. for e in t:
  151.     if(e[0] == 8):
  152.         print("Straight Flush\t:",e[1])
  153.     elif(e[0] == 7):
  154.         print("Four of a kind\t:",e[1])
  155.     elif(e[0] == 6):
  156.         print("Full House\t:",e[1])
  157.     elif(e[0] == 5):
  158.         print("Flush\t\t:",e[1])
  159.     elif(e[0] == 4):
  160.         print("Straight\t:",e[1])
  161.     elif(e[0] == 3):
  162.         print("Three of a kind\t:",e[1])
  163.     elif(e[0] == 2):
  164.         print("Two pair\t:",e[1])
  165.     elif(e[0] == 1):
  166.         print("One pair\t:",e[1])
  167.     elif(e[0] == 0):
  168.         print("High card\t:",e[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement