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

Python扑克配对检测函数报错:list indices需为整数/切片而非元组

扑克牌对子检测函数修复方案

错误原因

你的for循环逻辑有误:for i in cards 遍历的是cards中的每个元组元素(比如(1, 'd')),而非索引值。用元组作为列表索引会触发TypeError,因为列表仅接受整数或切片作为索引。另外代码中未初始化ranks列表,运行时还会触发NameError。

修正后的代码

def check_pair(cards):
    ranks = []  # 初始化空列表存储牌面
    for card in cards:
        ranks.append(card[0])  # 直接取每个元组的第一个元素(牌面)
    # 统计每个牌面的出现次数
    rank_counts = {k: ranks.count(k) for k in ranks}
    # 过滤出出现次数>=2的对子,返回更直观的结果
    pairs = {rank: count for rank, count in rank_counts.items() if count >= 2}
    return pairs

community_cards = [(1, 'd'), (2, 'h'), (1, 'h')]
print(f'Checking pair: {check_pair(community_cards)}')

代码优化(更简洁的写法)

可以用列表推导式直接生成ranks,减少代码行数:

def check_pair(cards):
    ranks = [card[0] for card in cards]
    rank_counts = {k: ranks.count(k) for k in ranks}
    pairs = {rank: count for rank, count in rank_counts.items() if count >= 2}
    return pairs

运行结果:

Checking pair: {1: 2}

内容的提问来源于stack exchange,提问作者João Schultz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:58:12