你好,我正在用Python写一个二十一点游戏。我在播放器类中遇到一个名为calculateTemporaryHandValueWhereAEquals11()的方法有问题。它由一个名为drawCard()的经销商类中的方法调用。问题是第一个if语句。如果经销商手中有A,那么它将调用calculateTemporaryHandValueWhereAEquals11(self.player)来检查hand的值是否为= 21,假设A等于11.由于某种原因,该列表为空且在calculateTemporaryHandValueWhereAEquals11中没有任何反应( ) 方法。但是在drawCards()中的elif语句中,我调用了一个名为calculateTemporaryHandValueWhere()的函数,该函数检查手的值,假设A等于1.这一个工作,它获取列表并计算值!我不明白我在做什么使得一种方法起作用而不是另一种方法。如果有人可以提供帮助,将不胜感激!谢谢!
import random
class Player(object):
def drawCard(self, hitOrStop):
if hitOrStop == 'hit':
playerRecievesCard = RandomCard().selectRandomCard()
self.myHand.append(playerRecievesCard)
return True
else:
return False
def calculateTemporaryHandValue(self, playersHand = []):
sumOfAllCards = 0
for card in playersHand:
if card == 'A':
sumOfAllCards += 1
elif card == 'J' or card == 'K' or card == 'Q':
sumOfAllCards += 10
else:
sumOfAllCards += card
return sumOfAllCards
def calculateTemporaryHandValueWhereAEquals11(self, playerHand = []):
sumOfAllCards = 0
print(playerHand)
for card in playerHand:
if card == 'A':
sumOfAllCards += 11
elif card == 'J' or card == 'K' or card == 'Q':
sumOfAllCards += 10
else:
sumOfAllCards += card
return sumOfAllCards
class Dealer(Player):
def __init__(self):
self.myHand = []
def drawCards(self):
if 'A' in self.myHand:
valueOfdeal = Dealer.calculateTemporaryHandValueWhereAEquals11(self.myHand)
print (valueOfdeal)
#if Dealer.calculateTemporaryHandValueWhereAEquals11(self.myHand) <= 21 and Player.calculateTemporaryHandValueWhereAEquals11(self.myHand) >= 17:
print ("he")
return False
elif Dealer.calculateTemporaryHandValue(self.myHand) < 17 and len(self.myHand) <=5:
playerRecievesCard = RandomCard().selectRandomCard()
self.myHand.append(playerRecievesCard)
return True
else:
return False
答案 0 :(得分:0)
您不应该调用类Dealer.calculateTemporaryHandValueWhereAEquals11(self.myHand)
上的方法,而应调用实例self.calculateTemporaryHandValueWhereAEquals11(self.myHand)
上的方法。
当您这样做时,该方法将参数self.myHand
作为第一个参数self
而不是第二个参数playerHand
。如果该方法没有playerHand = []
的默认参数,您将获得TypeError: [method] takes exactly 2 arguments (1 given)
。