【发布时间】:2017-12-17 20:39:50
【问题描述】:
所以我现在正在做一个项目并不断收到此错误,但我不知道问题是什么。
第 92 行,正在播放中 playerOne.append(堆[0]) IndexError: 列表索引超出范围
我不明白是什么导致它超出范围。这是我的代码。我用于 startHand 和 pile 的所有列表都已在上面定义。
def play(startHand, pile):
playerOne = []
playerTwo = []
for i in range(0, 5):
playerOne.append(startHand[i])
i += 1
for i in range(5, 10):
playerTwo.append(startHand[i])
i += 1
initPoints = pile[0]
del pile[0]
if median(playerOne) == 9:
scoreOne = initPoints
else:
scoreOne = initPoints + median(playerOne)
if median(playerTwo) == 9:
scoreTwo = initPoints
else:
scoreTwo = initPoints + median(playerTwo)
playerOne.remove(median(playerOne))
playerTwo.remove(median(playerTwo))
playerOne.append(pile[0])
playerTwo.append(pile[1])
del pile[0]
del pile[0]
while scoreOne or scoreTwo < 99 or len(pile) > 0:
if median(playerOne) == 9:
scoreOne = scoreOne
else:
scoreOne = scoreOne + median(playerOne)
if median(playerTwo) == 9:
scoreTwo = scoreTwo
else:
scoreTwo = scoreTwo + median(playerTwo)
playerOne.remove(median(playerOne))
playerTwo.remove(median(playerTwo))
playerOne.append(pile[0])
playerTwo.append(pile[1])
del pile[0]
del pile[0]
如果有人能解释导致错误的原因,我将不胜感激。提前致谢。
【问题讨论】:
-
TL;DR 但
pile为空。 -
pile必须为空,如果这是导致它的行。您无法获取空列表的第 0 个元素。 -
while len(pile) > 0 不会阻止运行吗?
-
scoreOne or scoreTwo < 99 or len(pile) > 0:这是一个 OR 条件,而不是 AND...顺便说一句,这是错误的,因为您并没有真正将两个分数都与 99 进行比较... -
你想要
while scoreOne < 99 and scoreTwo < 99 and pile: