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

Python字典作业疑问:生成1000次两骰子点数和的字典为何错误?

分析你的骰子统计代码问题

Hey Romina! Let's break down why your code didn't pass the assignment check.

你的当前代码做了什么

你的代码创建了一个字典,其中每个键是掷骰子的次数序号(从1到1000),对应的值是该次掷两个骰子的点数和。简单来说,它是按掷骰子的顺序记录每一次的结果——但这并不是作业要求的目标。

作业实际要求的是什么

题目要求生成的字典需要包含1000次掷骰子的点数和结果,意思是你需要统计每个可能的点数和(2到12)在1000次投掷中出现的次数。正确的字典结构应该是:键为点数和(2、3……12),值为该点数和出现的次数。

修正后的代码示例

这里提供两种可行的修正方案:

1. 手动统计(无需额外库)

from random import randrange
dosdados = {sum_val: 0 for sum_val in range(2, 13)}  # 初始化2-12每个点数和的计数为0

for _ in range(1000):  # 不需要记录次数序号,用_作为占位符即可
    dado1 = randrange(1,7)
    dado2 = randrange(1,7)
    total = dado1 + dado2
    dosdados[total] += 1  # 对应点数和的计数加1

print(dosdados)

2. 使用collections.Counter(更简洁的写法)

如果老师允许使用标准库模块,这种方式会更简洁:

from random import randrange
from collections import Counter

roll_sums = []
for _ in range(1000):
    roll_sums.append(randrange(1,7) + randrange(1,7))

dosdados = Counter(roll_sums)
# 如果你想确保2-12的所有点数和都在字典里(哪怕次数为0),可以合并初始字典:
dosdados = {**{sum_val:0 for sum_val in range(2,13)}, **dosdados}

print(dosdados)

核心错误点总结

你误解了字典的用途:作业需要的是每个点数和的出现次数统计,而不是按投掷顺序记录每一次的结果。这就是你的代码被判定错误的原因!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:20