为什么它会给我一个无索引错误?当我的所有索引在python中都很好时?
每当我运行它时,输出都是“范围的列表索引put” 我需要将每个字段存储到它们自己的列表中。所以我应该有三个字段,一个表示等级,一个表示权力,还有一个表示这些卡的数量 这是名为“ranks.dat”的文件: 这是我的密码:为什么它会给我一个无索引错误?当我的所有索引在python中都很好时?,python,Python,每当我运行它时,输出都是“范围的列表索引put” 我需要将每个字段存储到它们自己的列表中。所以我应该有三个字段,一个表示等级,一个表示权力,还有一个表示这些卡的数量 这是名为“ranks.dat”的文件: 这是我的密码: numFile = open("ranks.dat", "r") rankList = [] skillList = [] powerList = [] while True: text = numFile.readline() text = text.rs
numFile = open("ranks.dat", "r")
rankList = []
skillList = []
powerList = []
while True:
text = numFile.readline()
text = text.rstrip("\n")
if text=="":
break
info = text.split(" ")
rankList.append(info[0])
skillList.append(int(info[1]))
powerList.append(int(info[2]))
numFile.close()
print("Admiral\tGeneral\tColonel\tMajor\tCaptain\tLieutenant\tSergeant\tCorporal\tPrivate")
为什么不工作?假设您的数据每行有一个条目:
rankList = []
skillList = []
powerList = []
# recommended way to open and close a file
with open("ranks.dat", "r") as file:
# iterate over every lines in the file
for line in file.readlines():
# unpack each lines
rank, skill, power = line.split(',')
rankList.append(rank)
skillList.append(skill)
powerList.append(power)
代码中包含一些错误 首先,它不应该在
while
循环中,而是(如果有的话)在中,用于文本中的行
其次,当您拆分(“”
)时,您会得到一个列表,其中的每个项目都包含字符串,格式为“等级、技能、力量”
。您应该将其拆分为每个逗号,然后将项目附加到列表中
最后,我强烈建议检查输入的有效性(比如检查拆分的信息中是否有三项)
诸如此类:
rankList = []
skillList = []
powerList = []
fil = open("ranks.dat", "r")
data = fil.read()
fil.close()
for item in data.split():
info = item.split(',')
if len(info) != 3:
continue
rankList.append(info[0])
skillList.append(int(info[1]))
powerList.append(int(info[2]))
# and do whatever you want
这取决于文件的来源,但完整正确的代码将首先检查文件是否存在,等级、技能和权限的值是否有效请更新您的问题,并说明其不起作用的确切原因。如果输出错误,请使用实际和预期更新。如果有错误,请使用完整的错误回溯进行更新。如果输入是单行,则必须按空格分隔以获得记录列表,然后必须按逗号分隔每个记录以获得三个字段。@quamrana ok,我现在已经更改了。@mkam如果可能的话,你能帮我写出来吗?@quamrana的意思是复制并粘贴实际的错误信息到你的问题中,包括所有的回溯信息。你的编辑没有帮助。
rankList = []
skillList = []
powerList = []
fil = open("ranks.dat", "r")
data = fil.read()
fil.close()
for item in data.split():
info = item.split(',')
if len(info) != 3:
continue
rankList.append(info[0])
skillList.append(int(info[1]))
powerList.append(int(info[2]))
# and do whatever you want