我在Python中使用while循环来执行一个操作。然而,循环并没有在我期望的时候结束(当团队变空时)。代码如下:
while teams:
if scores[0]<scores[1]:
losers.append(teams[0])
teams.remove(teams[0])
teams.remove(teams[0])
scores.remove(scores[0])
scores.remove(scores[0])
if scores[0]>scores[1]:
losers.append(teams[1])
teams.remove(teams[0])
teams.remove(teams[0])
scores.remove(scores[0])
scores.remove(scores[0])
return losers
在测试代码时,我放入print语句,发现losers数组得到了预期的结果,但是循环在我期望它停止之后继续,当我已经在循环的最后一次迭代中删除了分数[0]时,检查分数[0]。为什么我的循环没有结束?你知道吗
解决方法是将第二个
if
语句更改为elif
:问题是,当
teams
和scores
列表到达最后一对,并且第一个if
语句中的条件是True
时,最后一对被删除,两个列表都变为空。你知道吗然后计算第二个
if
条件,但是scores
列表现在是空的(由于前面的if
匹配),因此引发了一个IndexError
。你知道吗将其更改为
elif
意味着仅当第一个条件为False
时,才会计算第二个条件。现在,循环在每次迭代中只处理一对团队/分数,对空的team
的测试将成功。你知道吗您可以使用以下命令使while循环更加清晰:
如果循环没有结束是因为
teams
永远不会变空。你的假设“循环不会在[…]teams
变空时结束”是不正确的,并且可能误导了你解决问题的尝试。你知道吗仔细检查回路的状况。如果条件永远不等于
false
,循环将变为无穷大。你知道吗请参阅http://www.tutorialspoint.com/python/python_while_loop.htm的“无限循环”部分。你知道吗
相关问题 更多 >
编程相关推荐