问题描述
现在,我正在研究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。检查使用情况。