range()不包含末尾值是否可用+1解决?die.num_sides+1作用是什么?
你对+1作用的猜测完全正确,就是为了适配Python range()函数左闭右开的特性。
原理说明
Python 内置的 range() 函数生成的整数序列是左闭右开区间,只会包含起始值,不会包含结束值:
- 如果你写
range(1, 6),生成的序列是[1,2,3,4,5],正好缺了6面骰子的最大面值6 - 加1后变成
range(1, 6+1)=range(1,7),生成的序列就是[1,2,3,4,5,6],刚好覆盖6面骰子所有可能的投掷结果
额外验证
你可以注意到代码里统计投掷频率的循环也用了完全相同的写法:
for value in range(1, die.num_sides+1):
这是为了遍历所有面值统计每个的出现次数,最终得到的frequencies列表长度是6,和x_values的长度完全对应,保证直方图的x轴刻度和频率值一一匹配,不会出现缺刻度、数据错位的问题。
内容的提问来源于stack exchange,提问作者mrm
相关产品推荐
相关产品推荐

