【问题标题】:How to create a Card class with 52 cards without declaring them one by one?如何在不一张一张声明的情况下创建一个包含 52 张卡片的 Card 类?
【发布时间】:2023-02-07 17:58:18
【问题描述】:

我想创建一个纸牌游戏,但我发现很难使用循环声明 52 张纸牌,因为我不想只写 52 行或更多行来声明它们。我需要确保卡的编号和类型是分开的,并且两者都可以用作变量,这样数字就可以比较并且可以检测到类型

我尝试使用 for 循环,但显然我无法使用 for 循环创建 52 个不同的名称变量,所以我不确定如何实现此目的

【问题讨论】:

  • 请阐明您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: python oop


【解决方案1】:

我不明白为什么你需要创建 52 个不同的变量,你可以将你的对象存储在列表或字典中。

# You need at least one attribute charactering each of your objects
# I am assuming you have an individual ID  -> range(52)
# However these could be just your card value -> [card_1_value_1, ..., card_52_value]

# In a list:
lst = [Card(id = i) for i in range(52)]  # list comprenhension

# In a dictionary:
dict = {i:Card(id = i) for i in range(52)}  # dictionary comprenhension

如果你真的需要将它们定义为变量,你可以使用 exec() 函数,但我强烈建议不要这样做,因为这不是一个好的做法。

for i in range(52):
    exec(f'variable_{i} = Card(id={i})')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多