我正在尝试编写代码来模拟囚犯,这些囚犯会转到标有他们的号码的盒子,然后转到里面的机票也将他们发送的盒子,依此类推。
我的列表索引超出范围错误,但是不确定代码是否正确
total = 0
for s in range(100):
prisoners = []
boxes = []
counter = 0
winners = 0
number = 0
for i in range(1, 101):
prisoners.append(i)
#print(prisoners)
for x in range(1, 101):
boxes.append(x)
shuffle(boxes)
#print(boxes)
while counter!=99:
for h in range(1, 51):
if prisoners[counter] == boxes[number]:
print("winner")
winners +=1
counter +=1
break
else:
number = boxes[number]
print("loser")
答案 0 :(得分:0)
问题是您将箱号存储在[1,100]范围内,但将它们用作100个长数组(0-99)的索引,因此当它运行number = boxes[number]
时,有时会将数字分配为100并导致错误。
一种解决方法是将其设置为number = boxes[number] - 1
。
另一个是在逻辑上使用0-99范围,但如果要打印它们,则加1。