我写了一个函数来洗牌52张牌(整数列表)和'处理'他们4个不同的球员平均,即4名球员应该得到13张牌每个。然而,由于某种原因,当我运行它时,所有的玩家每人得到52张牌,这是一个洗牌版的牌组,有人能提供一些帮助,如何修改下面的代码,将牌组均匀地切割并交给每个玩家吗?你知道吗
def deal_cards(deck, Nplayers):
shuffle(deck)
cards = len(deck)
hands = Nplayers*[[]]
if Nplayers == 0:
return None
for card in range(cards):
player = card % Nplayers
hands[player].append(deck[card])
return hands
您不是在构建4个列表,而是在构建一个列表,引用了4次:
将列表相乘不会创建值的副本;相反,只复制引用;附加到
hands[0]
将反映在同一列表的所有其他引用中。你知道吗使用列表理解:
使用切片最简单:
相关问题 更多 >
编程相关推荐