【问题标题】:How would I go about getting this code to shuffle the deck two more times to complete the card trick?我将如何让此代码再洗牌两次以完成纸牌技巧?
【发布时间】: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 == 1Choice == 2 不可能是真的。也许您想将函数的结果保存在一个变量中,然后将该值与 1 或 2 进行比较。

标签: python python-3.x function loops shuffle


【解决方案1】:

原因是因为您正在扩展子甲板。当您扩展子甲板时,新元素将被插入到最后。在下一次迭代中,您的子套牌长度有所延长,但第一组卡片仍然相同,并且从未被替换。

在 Choice() 之后将此初始化子甲板修复为空列表

你的外循环迭代器和内循环迭代器都被命名为 i。检查该用法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    相关资源
    最近更新 更多