在 Python 中的对象内随机排列列表

Shuffling a list inside an object in Python

我是 python oop 的新手,我正在尝试制作 21 点游戏。我创建了一个名为 cards 的对象,我想在 __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)

我猜你要找的是

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

参见 documentation

random.shuffle 打乱给定的参数,return 什么都不做。

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

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

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