每次for循环迭代时添加到列表中(Python)?

2024-04-25 23:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个程序,创建一组卡片,然后打印出来,这是目前为止运作良好。然而,我一直不知道如何存储每一张卡的方式,一套数量的卡,或个人卡,可以比较到另一套。你知道吗

我用来“抽”牌的功能是:

def TableHand():
    print("Table Hand:")
    for i in range(0,5):
        print(RandomCardDraw(), "of", RandomHouseDraw())

函数“RandomCardDraw”和“RandomHouseDraw”都只是绘制一个随机数和一个随机房子。你知道吗

我想对最终的打印结果进行排序,例如-7个红心,然后是列表/字典中的下一张“卡片”或者其他可以让我将“表格”与用户手进行比较的东西??你知道吗

Idk如果这是可能的,因为方式编码我以前的功能或没有?如果需要更多的信息来回答我可以提供XD。你知道吗

谢谢。你知道吗


Tags: ofin程序功能for数量def方式
3条回答

你可以在手之前生成一副卡片,这会使分类更容易,并且确保你没有任何重复的卡片,因为如果你不先检查就动态生成它们,这是一种可能性。你知道吗

这是我以前做过的,suits变量包含d代表钻石,h代表红心等等。等级是以同样的方式打印出来的。现在是主要部分,甲板。deck变量将是list类型,其中每个项都是deck中的一张卡。itertools.product()遍历秩和suits,并将它们连接在变量item的元组中。.join()取下每个项目,将等级和套装连接在一起,用破折号将它们分开。你知道吗

suits = 'dhcs'
ranks = '234567890JQKA'
deck = []
for item in itertools.product(ranks, suits):
    '-'. join(item)
    deck.append(item)

要随机选择一张牌,你可以从牌堆中随机选择一个项目,并确保将其移除。你知道吗

现在是棘手的部分,整理卡片。您可以创建第二个函数,为每张卡分配一个值。你知道吗

def giveValue(card):
    if card[2] == "A":
        return 14 
    if card[2] == "K":
        return 13

您可以通过向下查找字符串并为每个列添加值来完成此函数。这将为您提供每张卡的排序数字。你知道吗

希望这是有用的。你知道吗

print只是用来展示东西,而不是用来存储东西。下面是如何将所有卡片(每个卡片由两个元素组成的元组表示)放入一个集合并检索它:

def TableHand():
    hand = set()
    for i in range(0, 5):
        card = (RandomCardDraw(), RandomHouseDraw())
        hand.add(card)
    return hand

(这是一个很好的地方,但我认为你还没有准备好)

Alex Hall提供了一个很好的答案,我想就您提到的一些特定数据类型展开讨论:

I want to sort the final print result, for example - 7 of hearts, and then the next "card" in a list / dictionary or something that will let me compare the "table" to a user hand??

列表

如果只想将元组放入列表中,请执行以下操作:

def TableHand():
    hand = []
    for i in range(0, 5):
        card = (RandomCardDraw(), RandomHouseDraw())
        hand.append(card)
    return hand

列表非常容易迭代并对其执行各种操作。正如Alex所说,你可能还没有准备好理解set,所以一个列表可能是一个更合适的开始。你知道吗

字典

将卡片作为一组存储在字典中可能是一种不好的方法。字典很适合用来表示更像单个对象而不是对象集合的事物。你真的需要知道你将要得到多少元素,并且必须有一个命名它们的标准方法,所以动态地这样做是乏味的,而不是真正为字典设计的。然而。。。你知道吗

词典列表

与其将卡存储为元组,还可以执行以下操作:

def TableHand():
    hand = []
    for i in range(0, 5):
        card = { "number": RandomCardDraw(), "house": RandomHouseDraw())
        hand.append(card)
    return hand

NB:我假设你想给这些元素取一个名字,“数字”和“房子”。

有了字典列表,你的理解和操作就更容易了,因为你要找的东西更容易获取。在本例中,您可以使用first_card = hand[0]获得返回的第一张卡片,然后使用house = first_card["house"]获得房子(或者您在字典中命名的任何东西)。你知道吗

排序和比较

有一些方法可以对列表进行排序,并将它们与其他列表进行比较——实际上,在你的案例中,这甚至可能不会那么困难。但最简单的方法可能是用集合理解,在这种情况下,你应该用亚历克斯建议的解决方案来解决问题。你知道吗

相关问题 更多 >

    热门问题