Python字典值修改失败:循环更新骰子点数统计值无效
问题分析与修正
你的代码存在两个关键错误,导致无法正确统计骰子点数和的出现次数:
错误1:骰子点数生成范围错误
random.randrange(0,7)会生成0到6的整数,但标准骰子的点数是1-6,这会出现和为0、1的无效情况,这些值不在pairs字典的键中,直接跳过统计,同时也不符合真实掷骰子的逻辑。
错误2:字典值更新逻辑错误
内层循环里的k[v] +=1是完全错误的写法:
k是字典的键(比如2、3…12),v是对应的值(初始为0)- 你想用这个语句更新字典对应键的值,但
k[v]是试图用v作为索引访问k,完全不符合字典的操作逻辑。而且根本没必要遍历字典,直接用summ作为键去更新pairs即可。
修正后的代码
import random pairs = {2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0} for _ in range(1001): # 生成1-6的标准骰子点数 d1 = random.randrange(1, 7) d2 = random.randrange(1, 7) summ = d1 + d2 # 直接用点数和作为键更新统计值,无需遍历字典 pairs[summ] += 1 # 打印结果验证 for k, v in pairs.items(): print(f"点数和{k}出现了{v}次")
内容的提问来源于stack exchange,提问作者Argishti89
相关产品推荐
相关产品推荐

