Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- class Pokerhand:
- def __init__(self, hand = None):
- self.hand = []
- if(hand == None):
- self.hand = ['C2','C3','C4','C5','C6']
- elif(len(hand) != 5):
- self.hand = ['C2','C3','C4','C5','C6']
- else:
- self.hand = hand
- def __repr__(self):
- s = '['
- c = 0
- while c < len(self.hand):
- if(c < len(self.hand) - 1):
- s = s + "'" + self.hand[c] + "'" + ','
- else:
- s = s + "'" + self.hand[c] + "'" + ']'
- c+=1
- return s
- def rank(self):
- #initial rank, will return this if all other conditions fail
- rank = 0
- straight = False
- flush = True
- three = False
- pair = False
- #Strait check
- #Ace as high card
- t = []
- for e in self.hand:
- if(e[1] == 'T'):
- t.append(10)
- elif(e[1] == 'J'):
- t.append(11)
- elif(e[1] == 'Q'):
- t.append(12)
- elif(e[1] == 'K'):
- t.append(13)
- elif(e[1] == 'A'):
- t.append(14)
- else:
- t.append(int(e[1]))
- t.sort()
- if(t[4]-t[3] == 1 and t[3]-t[2] == 1 and t[2]-t[1] == 1 and t[1]-t[0] == 1):
- straight = True
- #Ace as low card
- t = []
- for e in self.hand:
- if(e[1] == 'T'):
- t.append(10)
- elif(e[1] == 'J'):
- t.append(11)
- elif(e[1] == 'Q'):
- t.append(12)
- elif(e[1] == 'K'):
- t.append(13)
- elif(e[1] == 'A'):
- t.append(1)
- else:
- t.append(int(e[1]))
- t.sort()
- if(t[4]-t[3] == 1 and t[3]-t[2] == 1 and t[2]-t[1] == 1 and t[1]-t[0] == 1):
- straight = True
- for e in self.hand:
- if(e[0] != self.hand[0][0]):
- flush = False
- break
- 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}
- for e in self.hand:
- d[e[1]]+=1
- if(flush and straight):
- return 8
- for e in d.keys():
- if(d[e] >= 4):
- return 7
- for e in d.keys():
- if(d[e] >= 3):
- for el in d.keys():
- if(d[el] >= 2 and e != el):
- return 6
- if(flush):
- return 5
- if(straight):
- return 4
- for e in d.keys():
- if(d[e] >= 3):
- return 3
- for e in d.keys():
- if(d[e] >= 2):
- for el in d.keys():
- if(d[el] >= 2 and e != el):
- return 2
- for e in d.keys():
- if(d[e] >= 2):
- return 1
- return 0
- class Carddeck:
- def __init__(self,index=0):
- self.deck = []
- for e in "CSDH":
- for el in "23456789TJQKA":
- self.deck.append(e+el)
- self.index = index%52
- def __repr__(self):
- s = '['
- c = 0
- while c < len(self.deck):
- if(c < len(self.deck) - 1):
- s = s + "'" + self.deck[c] + "'" + ','
- else:
- s = s + "'" + self.deck[c] + "'" + ']'
- c+=1
- return s
- def shuffle(self):
- random.shuffle(self.deck)
- self.index = 0
- def dealcard(self):
- self.index+=1
- return self.deck[self.index-1]
- def dealhand(self):
- return Pokerhand([self.dealcard(),self.dealcard(),self.dealcard(),self.dealcard(),self.dealcard()])
- def sortList(lst):
- l = []
- for e in lst:
- l.append(e[1])
- l.sort()
- return l
- x = Carddeck()
- d = {0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0}
- c = 100000
- while c > 0:
- x.shuffle()
- h = x.dealhand()
- d[h.rank()]+=1
- c-=1
- t = []
- for e in d.keys():
- t.append([e,d[e]])
- t.sort()
- t.reverse()
- for e in t:
- if(e[0] == 8):
- print("Straight Flush\t:",e[1])
- elif(e[0] == 7):
- print("Four of a kind\t:",e[1])
- elif(e[0] == 6):
- print("Full House\t:",e[1])
- elif(e[0] == 5):
- print("Flush\t\t:",e[1])
- elif(e[0] == 4):
- print("Straight\t:",e[1])
- elif(e[0] == 3):
- print("Three of a kind\t:",e[1])
- elif(e[0] == 2):
- print("Two pair\t:",e[1])
- elif(e[0] == 1):
- print("One pair\t:",e[1])
- elif(e[0] == 0):
- print("High card\t:",e[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement