【问题标题】:Shuffling a list inside an object in Python在 Python 中对对象内的列表进行洗牌
【发布时间】:2021-03-20 22:17:41
【问题描述】:

我是 python oop 的新手,我正在尝试制作二十一点游戏。我创建了一个名为卡片的对象,我想在 __init__ 函数中洗牌,但 random.shuffle(self.cards * self.number_of_packs) 不起作用,有什么方法可以在 __init__ 函数中做到这一点,还是我必须这样做在 Cards 对象之外?

class Cards:
    def __init__(self):
        import random
        self.onTable = []
        self.cards = ["2 ♥", "3 ♥", "4 ♥..."]
        self.number_of_packs = random.randint(2, 5)
        self.inPack = random.shuffle(self.cards * self.number_of_packs)

【问题讨论】:

  • 注意imports 通常应该出现在文件的顶部,而不是函数/方法中

标签: python oop random blackjack


【解决方案1】:

random.shuffle 对列表参数执行 shuffle 操作 - 它不返回新列表。你需要先生成一个新的列表,然后使用shuffle来打乱它:

new_list = self.number_of_packs * self.cards
random.shuffle(new_list)
print(new_list)

【讨论】:

    【解决方案2】:

    我猜你在找什么

    self.inPack = random.sample(self.cards * self.number_of_packs,len(self.cards * self.number_of_packs))
    

    documentation

    random.shuffle 随机播放给定的参数并且不返回任何内容。

    除此之外,建议在任何范围之外的 .py 文件的开头进行导入。 同样从 OOP 的角度来看,拥有一个名为 Cardsclass 和一个名为 cards 的成员似乎是不寻常的。也许看看here 以获得一些基本指导。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2015-10-09
      • 1970-01-01
      • 2012-11-22
      • 2021-12-17
      相关资源
      最近更新 更多