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

Python列表重复统计问题:骰子游戏实现结果不符求助

嘿,我来帮你搞定这个骰子游戏的统计问题!

先说说你代码里的问题

你现在的统计逻辑有两个小问题:

  1. 你遍历的是range(6),也就是0到5,但骰子的点数是1到6,这就漏掉了对6的统计;
  2. 每次循环都会把count直接覆盖成当前数字的出现次数,最后count只会保留最后一次循环(也就是数字5的出现次数),这显然不是你要的结果。而且你说输出是列表长度,估计是不小心写错了循环逻辑,但没关系,我们重新梳理一下。

两种解决方法,适合不同场景

方法1:基于你现有代码修改,新手友好

这种方法完全用你已经学过的列表和循环知识,容易理解:

import random

# 初始化空列表存骰子结果
dice = []
# 掷5次骰子,把结果加入列表
for _ in range(5):
    roll_result = random.randint(1, 6)
    dice.append(roll_result)

max_occurrence = 0
# 遍历1到6的所有可能点数
for num in range(1, 7):
    current_count = dice.count(num)
    # 如果当前点数的出现次数比记录的最大值大,就更新最大值
    if current_count > max_occurrence:
        max_occurrence = current_count

print("Player rolled:", dice)
print("重复次数最多的数字出现了", max_occurrence, "次")

方法2:用Python内置工具,简洁高效

如果你想更简洁,可以用Python标准库的Counter类,它专门用来统计元素出现次数,一行就能搞定统计:

import random
from collections import Counter

# 用列表推导式简化掷骰子的代码,一行生成结果列表
dice = [random.randint(1, 6) for _ in range(5)]

# 统计每个数字的出现次数
counts = Counter(dice)
# most_common(1)返回出现次数最多的元组(比如(3,4)),取第二个值就是次数
max_occurrence = counts.most_common(1)[0][1]

print("Player rolled:", dice)
print("重复次数最多的数字出现了", max_occurrence, "次")

测试一下

用你给出的两个测试案例验证:

  • 当结果是[3, 3, 3, 1, 3]时,两种方法都会输出4;
  • 当结果是[2, 6, 5, 6, 6]时,都会输出3,完全符合你的期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:33:18