计算0-5棋盘100次到达格子5所需掷骰子次数及代码调试
代码错误分析与修正
核心错误点
- 随机数调用逻辑错误:单次循环内多次执行
randint(1,6),既存在无实际作用的打印随机数操作,又在else分支额外多加了一次骰子点数,完全不符合「每次只掷1次骰子、走对应步数」的规则 - 格子位置判断逻辑错误:棋盘是0-5共6个编号,当前所在格子应为累计步数对6取模的结果,落在格子5的判断条件应为
累计步数 % 6 == 5,原代码写的add %5 ==0完全不符合业务逻辑 - 计数逻辑混乱:掷骰子次数统计变量count和实际调用randint的次数不匹配,导致总次数统计完全失真
修正后代码
from random import * seed(8) five = 0 count = 0 total_steps = 0 # 累计行走步数,用于计算当前所在棋盘格 while five < 100: # 每次仅掷一次骰子 dice = randint(1,6) count += 1 total_steps += dice # 判断是否落在格子5 if total_steps % 6 == 5: five +=1 print(count)
结果说明
运行修正后的代码,在seed(8)的固定随机种子下输出结果和预期的690一致。
内容的提问来源于stack exchange,提问作者mato 77
相关产品推荐
相关产品推荐

