我正在尝试用Python创建21点游戏。然而,当我尝试洗牌并从牌堆对象中发牌时,我得到一个错误,说明我的牌堆对象没有长度。有人能帮忙解决这个问题吗?谢谢
def deal():
deck = Deck()
player = Hand()
dealer = Hand()
random.shuffle(deck)
player.add_card(deck.deal_card())
player.add_card(deck.deal_card())
dealer.add_card(deck.deal_card())
dealer.add_card(deck.deal_card())
prompt()
您可能试图在
Deck
对象上使用len
函数,而不是在Deck
对象的实例变量deck
上使用它。如果d
是类Deck
的实例,则应该调用len(d.deck)
,或者更好地为self.deck
实现一个getter方法,并使用类似len(d.get_deck())
。在操作后编辑编辑:
您试图对}。在
Deck
对象本身调用shuffle
,而不是存储在Deck
对象中的list
deck
。混淆的部分原因可能是您决定将类命名为Deck
及其实例变量deck
。如果需要list
deck
,则需要在deal
函数中发出{根据评论进行编辑:
当然,您不能在
list
deck
上调用deal_card
。你能做到的这个符号应该清楚地表明这里的
Deck
对象是什么,deck
list
。在在
^{pr2}$Deck()
上尝试random.shuffle
将导致:Deck没有len,其中}列表,它有一个长度。在
Deck().deck
表示您的{random.shuffle在适当的位置洗牌序列x。可选参数random是一个0参数函数,返回[0.0,1.0]中的随机浮点;默认情况下,这是函数random()。 注意,即使是很小的len(x),x的置换总数也比大多数随机数生成器的周期大;这意味着一个长序列的大多数置换永远无法生成。
注意
len(x)
。在相关问题 更多 >
编程相关推荐