【发布时间】:2020-12-01 13:07:09
【问题描述】:
现在,我正在研究 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() 以便更好地了解代码!
【问题讨论】:
-
我们可以为minimal reproducible example 获得更多吗?
-
你混淆了 subdeck 和 split_card_deck 吗?
-
如果
Choice是一个函数,这样Choice()是你可以合理地做的事情——那么Choice == 1或Choice == 2不可能是真的。也许您想将函数的结果保存在一个变量中,然后将该值与 1 或 2 进行比较。
标签: python python-3.x function loops shuffle