【发布时间】:2014-06-29 04:29:52
【问题描述】:
我要做的是制作一副牌,然后将一张特定牌从牌组移到玩家手上。我在创建牌组并将牌添加到玩家手上时没有问题,但是每当我尝试从牌组中取出牌时,它都会告诉我牌一开始不在牌组中,这是没有意义的。
这里是相关代码
class Card(object):
suit_names = ["Clubs", "Diamonds", "Hearts", "Spades"]
rank_names = [None, "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"] #so zero returns nothing, an Ace is 1 and so forth
def __init__(self, suit, rank): #initial method, just defines suit and rank so you can find it later
self.suit = suit
self.rank = rank
def getRank(self): #returns the rank of the card as an integer
return self.rank
def getSuit(self): #returns suit as an integer
return self.suit
def __str__(self):
return '%s of %s' % (Card.rank_names[self.rank], Card.suit_names[self.suit])
class Deck(object):
def __init__(self): #this is just creating a deck of cards, in standard order with the suits arranged alphabetically
self.cards = []
for suit in range(4):
for rank in range(1, 14):
card=Card(suit, rank)
self.cards.append(card) #what you should be ending up here is 52 objects from the "Card" class
def shuffle(self):
shuffle(self.cards)
def main():
selfHand=[]
s,r=eval(input("Input your first downcard's suit and rank, separated by a comma" ))
card=Card(s,r)
selfHand.append(card)
deck.cards.remove(card)
再次,一切正常(我省略了不相关的代码,如果有什么看起来有点不对劲——这就是为什么 main 函数中有大缩进)但最后一行提示错误“ValueError: list. remove(x): x 不在列表中"
明确地说,套牌应该是一张卡片列表。我正试图从牌组中取出一张特定的牌,就是这样。认为这很简单,但已经吃掉了整个下午(公平地说,我对 python 和编码很陌生)
在这一点上,我尝试了无数不同的方法,结果相似。
感谢您的帮助
【问题讨论】:
-
您发布的代码使用了一个未定义的对象
deck。 -
我假设您有一个
deck = Deck(),但您忘记在此处添加? -
我采取了使用 Python 2 进行代码审查的方法,它有帮助吗?您使用的是哪个版本的 Python?