【问题标题】:Extract 2 groups(lists) of N number of cards each out of a 52 card deck从 52 张卡片组中提取 2 组(列表),每组 N 张卡片
【发布时间】:2020-11-27 06:25:46
【问题描述】:

我正在开发这个纸牌游戏,在下面的代码中,我试图从 52 张纸牌中提取 2 组 N 张纸牌。第一个列表是玩家的“已知牌”,它们应该是洗牌后的前 N ​​张牌,然后第二个列表是“未知”牌,它们应该是相同数量的 N。

def shuffle_deck():
    shuffled_list = random.sample(create_deck(), 52)
    return shuffled_list

def draw_card(N, card_list):
    list_N = []
       for i in range(N):
           extract = card_list.pop(0)
           list_N.append(extract)
       return tuple([list_N, card_list])
print(draw_card(2, shuffled_list()))

使用上面的代码,我得到了 2 个这样的列表:

([<__main__.Cartas object at 0x0364D520>, <__main__.Cartas object at 0x0364D040>], [<__main__.Cartas object at 0x0352DFE8>, <__main__.Cartas object at 0x0364D340>... and so on until the card object #52])

如何使第二个列表的大小/长度与“N”相同? 例如,如果 N = 4 结果应该是 2 个列表,每个列表有 4 张卡片:

   ([<__main__.Cartas object at 0x0364D520>, <__main__.Cartas object at 0x0364D040>, <__main__.Cartas object at 0x0352DFE8>, <__main__.Cartas object at 0x0364D340>], [<__main__.Cartas object at 0x0364D520>, <__main__.Cartas object at 0x0364D040>, <__main__.Cartas object at 0x0352DFE8>, <__main__.Cartas object at 0x0364D340>])

【问题讨论】:

  • 用另一个变量名重复“list_N”的代码。
  • 我还建议实现 repr 或 str 以便调试输出更具可读性。
  • 谢谢@MichaelButscher :)

标签: python python-3.x


【解决方案1】:

我只是按照 Michael Butscher 的建议做了,为另一个空列表重复了代码,现在可以正常工作了:

def draw_card(N, card_list):
    list_N = []
    list2_N = []

    for i in range(N):
        extract = card_list.pop(0)
        list_N.append(extract)

    for i in range(N):
        extract2 = card_list.pop(0)
        list2_N.append(extract2)
    return tuple([list2_N, card_list])
print(draw_card(2, shuffled_list()))

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 2021-07-21
    • 1970-01-01
    • 2021-03-01
    • 2018-12-29
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多