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

生成52张不重复牌组时,拼接列表为何出现多余的's'?

问题分析与修正

你的代码生成混乱结果的核心原因是错误地将整个values列表转为字符串:str(values)会把列表变成类似"[2, 3, 4, ..., 13]"的字符串,遍历这个字符串时会逐个取字符(包括括号、逗号、空格),自然生成的牌面完全不符合预期。

修正方案1:简化的列表推导式写法(推荐)

直接通过双重循环生成完整牌组,不需要单独维护四个花色的列表:

# 定义四种花色
suits = ['s', 'c', 'h', 'd']
# 生成2到13的点数范围
values = range(2, 14)
# 先遍历花色,再遍历点数,拼接成牌面
deck = [f"{val}{suit}" for suit in suits for val in values]
print(deck)

修正方案2:保留你原有思路的修改版

如果你想沿用原来的分支逻辑,只需把str(values)改为遍历每个点数并转字符串:

s = 0
values = list(range(2, 14))
sDeck = []
cDeck = []
hDeck = []
dDeck = []

while s <= 3:
    if s == 0:
        # 遍历每个点数,转成字符串后加花色
        sDeck = [str(x) + 's' for x in values]
    elif s == 1:
        cDeck = [str(x) + 'c' for x in values]
    elif s == 2:
        hDeck = [str(x) + 'h' for x in values]
    elif s == 3:
        dDeck = [str(x) + 'd' for x in values]
    s += 1
Deck = sDeck + cDeck + hDeck + dDeck
print(Deck)

两种方案都会生成你期望的格式:[2s, 3s, ..., 13s, 2c, 3c, ..., 13d]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:45:56