I need help writing a PYTHON function. Thank you for your help in advance. A sam
ID: 3851862 • Letter: I
Question
I need help writing a PYTHON function. Thank you for your help in advance.
A sample code, back ground info, instructions, and sample output is provided in screenshots below. Again, thank you.
Sample Code -
Background Info and Instructions -
Sample Output -
Thank you so much for the help!
IDLE File Edit Format Run Options window Help 100% LI Sun 6:18 PM Users/b s/projo6.py (3.6.1) inport cards def less than(c1,c2): Return True if cl is smaller in rank True if ranks are equal and cl has a smaller' suit False otherwise if c1.rank)Explanation / Answer
class Game:
playerOnesHand = []
playerTwosHand = []
playerOneScore = 0
playerTwoScore = 0
result = 0
def __init__(self, cards):
cards = cards.split()
self.playerOnesHand = Hand(cards[0:5])
self.playerTwosHand = Hand(cards[5:10])
self.play();
def play(self):
self.playerOneScore = self.playerOnesHand.getScore();
self.playerTwosCore = self.playerTwosHand.getScore();
if (self.playerOneScore > self.playerTwoScore):
result = 1
else:
result = 2
class Hand:
cards = []
values = []
def setValues(self):
for card in self.cards:
self.values.append(card.value)
self.values.sort()
print len(self.values)
def isFlush(self):
currentSuit = self.cards[0].suit
for card in self.cards:
if card.suit != currentSuit:
return False
currentSuit = card.suit
return True
def isRoyalFlush(self):
for card in self.cards:
self.values.append(card.value)
low = min(self.values)
if low == 10 and (low + 1 in self.values) and (low + 2 in self.values) and (low + 3 in self.values) and (low + 4 in self.values):
return True
else:
return False
def isFourOfAKind(self):
cardOneCount = self.values.count(self.values[0])
cardTwoCount = self.values.count(self.values[len(self.values) - 1])
if cardOneCount == 4 | cardTwoCount == 4:
return True
else:
return False
def isThreeOfAKind(self):
cardOneCount = self.values.count(self.values[0])
cardTwoCount = self.values.count(self.values[len(self.values) - 1])
if cardOneCount == 3 | cardTwoCount == 3:
return True
else:
return False
def isStraight(self):
low = min(self.values)
if low == 10 and (low + 1 in self.values) and (low + 2 in self.values) and (low + 3 in self.values) and (low + 4 in self.values):
return True;
def isFullHouse(self):
self.values = []
for card in self.cards:
self.values.append(card.value)
self.values.sort()
cardOneCount = self.values.count(self.values[0])
cardTwoCount = self.values.count(self.values[len(self.values) - 1])
if (cardOneCount == 2 and cardTwoCount == 3 ) | (cardOneCount == 3 and cardTwoCount == 2):
return True
else:
return False
def isTwoPair(self):
cardOneCount = self.values.count(self.values[0])
cardTwoCount = self.values.count(self.values[4])
cardThreeCount = self.values.count(self.values[2])
if(cardOneCount == 2 and cardTwoCount == 2) | (cardOneCount == 2 and cardThreeCount == 2) | (cardTwoCount == 2 and cardThreeCount == 2):
return True;
return False;
def isPair(self):
cardOneCount = self.values.count(self.values[0])
cardTwoCount = self.values.count(self.values[4])
cardThreeCount = self.values.count(self.values[2])
if(cardOneCount == 2 ^ cardTwoCount == 2 ^ cardTwoCount == 3):
return True;
return False;
def __init__(self, cards):
for c in cards:
self.cards.append(Card(c))
self.setValues()
def getScore(self):
score = 0
if self.isRoyalFlush(): score = 140000
elif self.isFlush() and self.isStraight(): score = 130000
elif self.isFourOfAKind(): score = 120000
elif self.isFullHouse(): score = 110000
elif self.isFlush(): score = 100000
elif self.isStraight(): score = 90000
elif self.isThreeOfAKind(): score = 80000
elif self.isTwoPair(): score = 70000
elif self.isTwoPair(): score = 60000
else: score = 0
return score
class Card:
# value = 0
# suit = 0
def __init__(self, card):
self.value = self.determineValue(card[0])
self.suit = card[1]
def determineValue(x,y):
return {
'2':2,
'3':3,
'4':4,
'5':6,
'6':6,
'7':7,
'8':8,
'9':9,
'T':10,
'J':11,
'Q':12,
'K':13,
'A':14
}.get(y)
def playGames():
player1Score = 0;
player2Score = 0;
file = open("poker-small.txt")
for line in file:
game = Game(line)
if game.result == 1:
player1Score += 1
else:
player2Score += 1
print "Player one has won " + str(player1Score) + " games! "
print "Player two has won " + str(player2Score) + " games! "
if (player1Score > player2Score):
print "Player 1 wins!"
else:
print "Player 2 wins!"
def main():
playGames();
if __name__ == "__main__":
main()