"列出索引超出范围"简单的随机循环

时间:2018-01-09 17:20:54

标签: python python-3.x loops random

我输入这个简单的while循环,但由于某种原因,它有时会给我一个列表索引超出范围错误。奇怪的是,它有时只会给我错误而且更多" Dice"我补充说,错误的可能性越大。它出现在Dice_total = Dice_Total + (dice[random.randint(1,6)])

import random

Dice = [1, 2, 3, 4, 5, 6]
Dice_Count = int(input())
Dice_Total = 0

while Dice_Count > 0:
    Dice_Total = Dice_Total + (Dice[random.randint(1,6)])
    print (Dice_Total)
    Dice_Count = Dice_Count - 1

print(Dice_Total)

3 个答案:

答案 0 :(得分:1)

列表索引从零开始,因此您需要选择0到5(含)之间的随机值,而不是1和6:

Dice_Total = Dice_Total + (Dice[random.randint(0, 5)])

答案 1 :(得分:1)

正如其他人所说的那样,问题是你正在调用超出范围的第7个索引Dice[6]。 Python上的索引是基于0的,即Dice[0]是第1项,Dice[5]是第6项(最后一项)。

我不明白为什么要根本定义骰子?如果你更新了这行

Dice_Total = Dice_Total + (Dice[random.randint(0,5)])

Dice_Total = Dice_Total + random.randint(1,6)

它会产生同样的效果,你不会遇到这个问题。

答案 2 :(得分:0)

您的问题是列表使用零索引。 Dice[6]返回列表中的 2 nd 项,而不是第一项。因此,random.randint(1, 6)将尝试访问 7 th 项目,该项目不存在。

因此,您的random.randint(0, 5)应为import random Dice = [1, 2, 3, 4, 5, 6] Dice_Count = int(input()) Dice_Total = 0 while Dice_Count > 0: Dice_Total = Dice_Total + (Dice[random.randint(0,5)]) print (Dice_Total) Dice_Count = Dice_Count - 1 print(Dice_Total)

.serialize()