我正在学习Python 2,而我正在尝试使用OOP创建一个二十一点游戏。有人可以告诉我为什么在运行下面的代码后我无法hand.hit()
两次?它只工作一次。为什么呢?
此外,有人可以让我知道如何计算一名球员的实际价值吗?
谢谢!
import random
rank = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace']
suit = ['Diamonds', 'Clubs', 'Hearts', 'Spade']
card_val = {'2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, '10':10, 'Jack':10, 'Queen':10, 'King':10, 'Ace':1}
class Card(object):
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
def __str__(self):
return str(self.rank) + ' of ' + str(self.suit)
def grab_suit(self):
return self.suit
def grab_rank(self):
return self.rank
def draw(self):
print(self.suit + self.rank)
class Deck(object):
def __init__(self):
self.cards = []
for i in rank:
for j in suit:
self.cards.append(Card(i,j))
def __str__(self):
return str([str(card) for card in self.cards])
def shuffle(self):
random.shuffle(self.cards)
def deal(self):
single_card = self.cards.pop()
return single_card
deck = Deck()
class PlayerHand(object):
def __init__(self):
self.value = []
def __str__(self):
return str([str(card) for card in self.value])
def hit(self):
self.hit = self.value.append(deck.deal())
return self.value
hand = PlayerHand()
答案 0 :(得分:0)
第一个问题的答案很简单:你用“无”覆盖你的方法(因为self.value.append不返回任何东西)。
所以你需要更改一行:
self.hit = self.value.append(deck.deal())
要
self.value.append(deck.deal())
在stackoverflow上询问计算手的实际值already,因此我只回答问题的第一部分。