【发布时间】:2015-06-05 14:44:05
【问题描述】:
我查看了网站上发布的有关索引错误的其他问题,但我仍然不明白如何修复我自己的代码。我是 Python 的初学者。根据用户输入,我想检查该输入是否位于列表列表中每一行的第四个位置。
代码如下:
#create a list of lists from the missionPlan.txt
from __future__ import with_statement
listoflists = []
with open("missionPlan.txt", "r") as f:
results = [elem for elem in f.read().split('\n') if elem]
for result in results:
listoflists.append(result.split())
#print(listoflists)
#print(listoflists[2][3])
choice = int(input('Which command would you like to alter: '))
i = 0
for rows in listoflists:
while i < len(listoflists):
if listoflists[i][3]==choice:
print (listoflists[i][0])
i += 1
这是我不断收到的错误:
没有进入 if 语句
【问题讨论】:
-
首先,
choice已经是一个整数,所以你不再需要int(choice)。另外,你的 for 循环是错误的。每次添加一个之后,您都设置i=0,所以它始终为零。也许修复你的缩进? -
我已经做出了建议的更改,但它仍然给我同样的错误@mbomb007
-
你不需要stackoverflow;你可以自己解决这个问题。
i太大,或者3太大。放入一些打印语句,看看数据是什么,然后找出哪个数字太大。不要忘记:计数从零开始,所以如果列表包含三个项目,那么您可以使用的最大索引是 2。 -
看在 Guido 的份上,请在循环中将 listoflists[i] 替换为 num...(如果它是列表,请不要称其为 num 并删除 num+=1)另外请添加一个空白下面是代码(为了更好的 SO 格式)
-
但不要使用 list 作为变量名(你不想覆盖它)。请在 while 和 for 循环之间进行选择。
标签: list python-3.x for-loop file-io