我输入这个简单的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)
答案 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()