【问题标题】:Storing all the results from a FOR LOOP in an array将 FOR LOOP 的所有结果存储在数组中
【发布时间】:2019-03-22 14:31:45
【问题描述】:

我创建了一个名为 Player1_Cards 的数组。 每张卡片都需要有一个数字和颜色。 Player1 应该有 15 张牌,编号从 1 到 30。

我使用了一个 for 循环来做到这一点:

使用random.randint(1,30),我找到了卡号。

使用 random.randint(1,3),我将数字 1,2 或 3 分配给红色、黄色或黑色。

如何将 for 循环中的所有结果存储为数组?

这是我的代码:

Player1_Cards = [0]

import random
for i in range(1,16):
    i = random.randint(1,30)
    i_colour = random.randint(1,3)
    i_colour = str(i_colour)

    if i_colour == "1":
        i_colour = "RED"

    if i_colour == "2":
        i_colour = "YELLOW"

    if i_colour == "3":
        i_colour = "BLACK"



    Player1_Cards[i,i_colour]

如果我打印(i,i_colour),忽略数组,它可能执行的示例是:

6 YELLOW
28 YELLOW
8 RED
3 BLACK
22 RED
2 BLACK
26 RED
25 YELLOW
8 RED
20 RED
16 BLACK
12 YELLOW
4 RED
20 BLACK
1 YELLOW

【问题讨论】:

    标签: python function loops for-loop random


    【解决方案1】:

    实现这一点的更简单方法是使用列表推导:

    import random
    
    colours = ['RED', 'BLUE', 'YEllOW']
    player_hand = [(random.randint(1, 30), random.choice(colours)) for _ in range(15)]
    
    Output:
    # 21 BLUE
    # 22 BLUE
    # 25 YEllOW
    # 11 BLUE
    # 4 RED
    ...
    

    【讨论】:

    • 只是有点吹毛求疵:因为i 没有被使用,也许for _ in range(1, 16) 会更好(另外,请注意range(1, 16) 而不是range(16),这不是一回事!)。
    【解决方案2】:

    试试这个:

    Player1_Cards = []
    

    在一开始。然后在循环结束时:

    Player1_Cards.append((i, i_colour))
    

    在循环之后:

    print(Player1_Cards)
    

    您的代码中也有错误:

    for i in range(1,16):
        i = random.randint(1,30)
    

    两者都会将变量i 设置为一个值。这种方式没有意义。如果您只想循环执行 15 次,最好使用 _

    for _ in range(1,16):
    

    【讨论】:

    • 啊,谢谢,非常感谢。还有,怎么保证player1的卡和player2的卡不一样?
    • 我建议在抽 player2 之前将 player1 的卡从牌库中取出。像在现实生活中那样做:创建一个包含所有纸牌的牌组,洗牌,然后为玩家 1 取出顶部的 n,然后为玩家取出顶部的 m 2.
    • deck = list(range(52))(用于扑克牌组)、random.shuffle(deck)player1cards = deck[0:12]player2cards = deck[12:24]。然后,您必须将单纯的数字解释为卡片,例如。 G。像这样:suit = card % 4value = card / 4VALUE_NAMES = [ '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A' ] 并使用VALUE_NAMES[value] 来获取卡的值的名称。
    猜你喜欢
    • 2022-08-03
    • 2013-08-02
    • 2018-04-04
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多