您好我想知道此代码有什么问题
f = open('test.txt', 'a+')
yourResult = [line.split(',') for line in f.readlines()]
for answer in yourResult:
print (yourResult[answer])
a = raw_input('What Was That')
Format = (answer + ' : ' + a + ', ')
f.write(Format)
print (Format)
File = open('test.txt', 'r')
答案 0 :(得分:1)
yourResult[answer]
无效,[]
期待整数。当你这样做时:
for answer in yourResult:
,answer
是列表(感谢bruno desthuilliers)。
你应该这样做:
for answer in yourResult:
print (answer)
此处,答案为yourResult[0]
,然后是yourResult[1]
等。
答案 1 :(得分:1)
Python的for
循环不会产生索引,而是序列本身的项目,因此,在循环内,answer
已经是yourResult
的元素。我想,你想:
for answer in yourResult:
print (answer)
作为旁注:
1 / a file
对象是可迭代的,因此您不需要使用readlines()
,您可以(并且应该)直接遍历文件(它将避免加载整个内容存储器):
2 / open()
是上下文管理器,负责正确关闭文件。
您的代码的干净版本将是:
with open('test.txt', 'r') as f:
yourResult = [line.split(',') for line in f]
for answer in yourResult:
print(answer)
答案 2 :(得分:0)
当您以这种方式使用a时,answer
是yourResult的元素之一,而不是此类元素的索引。
要使用索引执行所需操作,请执行以下操作:
for answer in range(len(yourResult)):
print(yourResult[answer])
在这种情况下,您将使用索引查看yourResult。
如果没有,你可以这样做:
for answer in yourResult:
print(answer)
在这种情况下,您直接循环数组内的元素,因此无需通过索引访问它们。
答案 3 :(得分:0)
您无需使用
print(yourResult[answer])
使用
print(answer)
会做我想要的。 由于您已将yourResult创建为列表,因此yourResult [x]期望x为0到len(yourResult)-1之间的数字。 通过做
for answer in yourResult
您正在迭代地为您的结果中的每个项目设置答案。