刚开始学习Python,我正在尝试创建一个21点游戏。我想找出玩家手中的牌值之和。我的方法是将字母“J”、“Q”、“K”的值改为10,将“A”的值改为11。我已经定义了类Card,但是当我运行代码时,我得到一个错误:“type object'Card'没有属性'value'”
import random
DEFAULT_SUITS = ("Clubs","Hearts","Diamonds","Spades")
DEFAULT_VALUES = ("A",2,3,4,5,6,7,8,9,10,"J","Q","K")
class Card():
def __init__ (self, suit, value):
self.suit = suit
self.value = value
def show(self):
print(self.value, self.suit)
class Shoes():
def __init__(self, decks, suits=DEFAULT_SUITS, values=DEFAULT_VALUES):
self.cards = []
for deck in range(decks):
for suit in suits:
for value in values:
self.cards.append(Card(suit,value))
random.shuffle(self.cards)
def show(self):
for card in self.cards:
card.show()
def drawcard(self):
return self.cards.pop()
class Player():
def __init__ (self, name):
self.name = name
self.hand = []
def drawcard(self, shoes):
self.hand.append(shoes.drawcard())
return self
def totalvalue(self):
for card in self.hand:
if Card.value == "J":
self.hand = [10 if card=="J" else card for card in cards]
if Card.value == "Q":
self.hand = [10 if card=="Q" else card for card in cards]
if Card.value == "K":
self.hand = [10 if card=="K" else card for card in cards]
if Card.value == "A":
self.hand = [11 if card=="A" else card for card in cards]
self.totalvalue = sum(self.hand(Card.value))
def showhand(self):
for card in self.hand:
card.show()
shoe = Shoes(int(input("Enter the number of deck used in a shoes: ")))
bob = Player("bob")
bob.drawcard(shoe)
bob.showhand()
bob.totalvalue()
我如何更改手中的值“J”、“Q”、“K”、“A”并将其相加以获得总值
您已经使用了Card.value,其中Card是一个类instace,只需在totalvalue函数中将Card更改为Card即可
接下来,我会建议做一本字典; 从偶数中取每一个值
诸如此类
我看到在使用卡片列表时有些混乱。这是你应该做的
可以使用下面的列表理解进一步简化代码
相关问题 更多 >
编程相关推荐