我是编程新手,所以我不明白为什么我的这部分代码不能工作。n = 30,而它应该等于n = 35。所以错误是 "list index out of range",尽管我已经设置了一个范围和count6.Why?我怎么解决这个问题呢?
当这部分代码单独运行时,它不持有任何问题。但是当它与我的其他代码一起运行时,它出现了 "list index out of bounds "的错误... ... 这是我的全部代码中唯一会产生任何错误的部分。
count6 = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
freq = 10
dice = random.randrange(1,7)
print('\nProbability for 6 dices:')
for n in range(5, 36):
percentage_6 = (count6[n - 5] / freq) * 100
procent_6 = str(percentage_6)
print('this is n:', n)
print(n + 1, ':', procent_6, '%')
你发布的代码并没有产生索引外的错误,所以我认为你在代码中的某个地方使用了count6[n].你使用索引而不是值本身来访问一个列表的值。
count6 =[6, 7, 8, 9, ... 35, 36]
#index 0 1 2 3 ... 29 30
所以当你的n达到 count6[31]
你试图找到列表中的第32个元素(因为索引从0开始),而这个元素并不存在,因为列表只有31个元素(索引0的元素是第一个元素),如上图所示。
即使不是这种情况,你也应该尽可能地使用index进行循环,而不是使用更多的pythonic选项。
for i in count6:
percentage_6 = (i / freq) * 100
...
或者你可以简单地使用
for i in range(6, 37):
percentage_6 = (i / freq) * 100
...
如果你必须使用这样的列表,我建议使用列表理解。
count6 = [number for number in range(6, 37)]
列表中只包含31个数字,你可以从0到30:应该是选择。
for n in range(0, 30):
或者(更好):
for n in range(0, len(count6)):
这些数字是索引,而不是值本身。
我解决了这个问题。错误是我在代码后面调用count6,停在rolled6.count(30)的时候(rolled6是我的6个骰子的rolled和的列表)。
count6 = [rolled6.count(6), rolled6.count(7), rolled6.count(8), rolled6.count(9), rolled6.count(10), rolled6.count(11),
rolled6.count(12), rolled6.count(13), rolled6.count(14), rolled6.count(15), rolled6.count(16),
rolled6.count(17), rolled6.count(18), rolled6.count(19), rolled6.count(20), rolled6.count(21),
rolled6.count(22), rolled6.count(23), rolled6.count(24), rolled6.count(25), rolled6.count(26),
rolled6.count(27), rolled6.count(28), rolled6.count(29), rolled6.count(30),]
我把它改成31、32... 36了
count6 = [rolled6.count(6), rolled6.count(7), rolled6.count(8), rolled6.count(9), rolled6.count(10), rolled6.count(11),
rolled6.count(12), rolled6.count(13), rolled6.count(14), rolled6.count(15), rolled6.count(16),
rolled6.count(17), rolled6.count(18), rolled6.count(19), rolled6.count(20), rolled6.count(21),
rolled6.count(22), rolled6.count(23), rolled6.count(24), rolled6.count(25), rolled6.count(26),
rolled6.count(27), rolled6.count(28), rolled6.count(29), rolled6.count(30), rolled6.count(31), rolled6.count(32), rolled6.count(33), rolled6.count(34), rolled6.count(35), rolled6.count(36)]