我该如何让这个代码再洗牌两次来完成纸牌把戏



现在,我正在玩一个21卡的把戏,我遇到了这个似乎无法破解的错误。

def combine_columns_basedoncard(split_card_deck,TotalCardDeck):

split_card_deck = deal_deck_columns(TotalCardDeck)
for i in range(3):
card_deck = []
card_deck2 = []
card_deck3 = []
for i in range(0, 21, 3):
card_deck.append(subdeck[0 + i])
card_deck2.append(subdeck[1 + i])
card_deck3.append(subdeck[2 + i])
DealedCards = card_deck, card_deck2, card_deck3
Choice()

if (Choice == 1):
subdeck.extend(card_deck2)
subdeck.extend(card_deck)
subdeck.extend(card_deck3)
elif (Choice == 2):
subdeck.extend(card_deck)
subdeck.extend(card_deck2)
subdeck.extend(card_deck3)
else:
subdeck.extend(card_deck)
subdeck.extend(card_deck3)
subdeck.extend(card_deck2)
print(DealedCards)

这里有一个功能可以洗牌,然后用户可以选择他们的牌在哪个堆/子牌组中,然而,这个代码只会洗牌一次,然后再也不会洗牌,并打印相同的列表,我真的不明白为什么会发生这种情况,也不知道我会如何再次洗牌来完成21张牌的把戏。如果有人能提出一些建议,我们将不胜感激!

编辑:

def Choice():
VaildChoice = False
ColumnChoice = ""
while(not VaildChoice):
ColumnChoice = input("Which column is your card in? 1, 2 or 3 ")
if("1" in ColumnChoice or "2" in ColumnChoice or "3" in ColumnChoice):
VaildChoice = True
else:
print("Invaild choice")
return ColumnChoice

添加了choice((以更好地了解代码!

原因是您正在扩展子甲板。延伸子甲板时,将在末端插入新元素。在下一次迭代中,您的子牌组长度已经延长,但第一组牌仍然相同,并且从未被替换。

要修复此问题,请在Choice((之后将子甲板初始化为空列表

此外,您的外循环迭代器和内循环迭代程序都命名为i。请检查用法。

最新更新