You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术问题:get_deck函数仅返回16张红桃,如何生成完整52张牌组

解决扑克牌组只生成红桃牌的问题

嘿,我来帮你搞定这个问题!你的get_deck()函数只返回16张红桃牌,问题出在两个地方:一是只遍历了红桃这一种花色,没包含方块、黑桃、梅花;二是牌面数量不对——标准扑克牌每个花色只有13张(A到K),不是16张哦。

修改思路

要生成完整的52张牌组,你需要:

  • 定义所有4种扑克牌花色
  • 定义每个花色对应的13种牌面值(A、2-10、J、Q、K)
  • 通过嵌套循环,把每个花色和每个牌面值组合起来,生成所有牌

完整修改后的代码

def get_deck():
    # 定义所有花色和标准牌面
    suits = ['Hearts', 'Diamonds', 'Spades', 'Clubs']
    ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
    
    deck = []
    # 嵌套循环生成每一张牌
    for suit in suits:
        for rank in ranks:
            # 组合成"X of 花色"的格式,你也可以用元组比如(rank, suit)
            deck.append(f"{rank} of {suit}")
    
    return deck

验证与洗牌

生成牌组后,你可以用random模块的shuffle()方法随机洗牌,示例如下:

import random

# 获取完整牌组
full_deck = get_deck()
# 确认牌数:应该输出52
print(len(full_deck))
# 洗牌
random.shuffle(full_deck)
# 打印前5张看看洗牌效果
print("洗牌后的部分牌:", full_deck[:5])

为什么之前的代码只返回红桃?

大概率是你之前的代码只针对Hearts写了单循环,而且错误地生成了16个牌面(比如从1到16)。现在替换成上面的嵌套循环,就能覆盖所有4种花色的13张牌,刚好52张。

内容的提问来源于stack exchange,提问作者Christina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:57:19