class HandOfCards:
def __init__ (self, numCardsInHand):
self.list = []
all_rank = random.randint(1, 13)
random_suit = ['d', 'c', 'h', 's']
all_suit = random.choice(random_suit)
for count in range(numCardsInHand):
self.list.append(Card(all_rank, all_suit))
def __str__(self):
all_items = '\n'.join(map(str, self.list))
return all_items
我想创建一些随机对象,但是用循环
^{pr2}$结果我实际上创建了numCardsInHand
完全相同的对象。随机模块似乎在我的for
循环上不起作用。我想不通。在
all_rank
不是一个生成随机秩的函数;它是一个随机选择的单个秩,是对random.choice
调用的结果。(对于all_suit
也是如此。)然而,即使你每次打电话给
random.choice
和random.randint
,你也有一个更大的问题:你不能保证你不会选择同一张牌两次。解决方案很简单:创建一副牌,然后使用random.sample
从牌堆中挑选。在若要选择多只手牌,请选择一只手牌,从牌堆中取出所选牌,然后再次取样。然而,这是更简单的只是洗牌和处理他们。在
^{pr2}$您需要在循环中调用
random
模块:random
模块只给变量赋值,变量是固定的。它不会在每次调用变量时重新赋值(这很奇怪)。换句话说,每次需要新值时都应该再次调用函数。就你而言另一种方法是给函数本身赋值一个变量。所以你的代码应该是:
^{pr2}$虽然这可能会让人困惑。在
最后一点要注意,不要使用
list
来存储列表。list
是Python中的一个内置组件,下次尝试将任何内容转换为列表时可能会发生冲突。在相关问题 更多 >
编程相关推荐