我正在用python开发一款德州hold-em游戏,希望遍历一个包含7张牌(洞中2张+棋盘上5张)的完整手牌的数组。该数组包含类Cards的元素,其中Card类构造函数是
class Card:
def __init__(self, suit, val):
self.suit = suit
self.value = val因此,我在一个由7张随机卡片组成的“玩家”类中有一个“手牌”数组,其中花色是4个字符串(黑桃、梅花、红心、菱形)之一,值是9个数字(2-10)或4个字符串(jack-ace)中的一个。我想遍历数组以检查列表中是否包含扑克中的任何一手牌,但是我不知道如何从我的数组中“提取”牌的花色/值。我在我的"Player“类中启动了一个方法来检查花色,这里的花色就是黑桃。
class Player:
def __init__(self, name):
self.name = name
self.pocket = []
self.hand = []
def spadeChecker(self):
card = Card("Blank", 0)
for i in self.hand:
card = self.hand[i]
if(card.suit == "Spade"):
print("Hi! you have a spade!")
else:
pass当从我的终端运行程序时,我收到一条TypeError消息:
in spadeChecker card = self.hand[i] TypeError: list indices must be integers or slices, not Card
我知道我的方法很糟糕,但我对此非常陌生,就是不知道如何让它工作。有什么建议吗?
谢谢
发布于 2021-03-09 21:12:14
这里是重写的方法,包括一个带有3张牌的手的例子。
class Card:
def __init__(self, suit, val):
self.suit = suit
self.value = val
class Player:
def __init__(self, name):
self.name = name
self.pocket = []
self.hand = [Card("Heart", 10), Card("Spade", 10), Card("Diamond", 10)]
def spadeChecker(self):
for card in self.hand:
if(card.suit == "Spade"):
print("Hi! you have a spade!")
#return True
else:
#return False
pass
p = Player("Bob")
p.spadeChecker()输出为:
Hi! you have a spade!发布于 2021-03-09 10:18:45
在您的代码中,迭代器是i,迭代器是self.hand,它是Card对象的列表。因此,每次循环迭代时,i都将是一个Card对象。如果您希望能够获得Card对象的索引以及Card对象本身,我建议使用enumerate()函数。但是,由于您只引用Card对象,所以只能直接获取suit属性。
class Player:
def __init__(self, name):
self.name = name
self.pocket = []
self.hand = []
def spadeChecker(self):
card = Card("Blank", 0)
for card_obj in self.hand:
if(card_obj.suit == "Spade"):
print("Hi! you have a spade!")
else:
passhttps://stackoverflow.com/questions/66539818
复制相似问题