Python数据文本文件成绩计划

时间:2014-10-03 08:29:33

标签: python list file text-files

寻求我的计划方面的帮助。有一个文本文件,其中包含5个名字和姓氏以及与每个人相对应的数字等级。任务是创建用户名并将数字等级更改为字母等级。我遇到的问题是该程序只从文本文件中输出一行(或用户名)而不是所有5行(用户名)。

def main():

    inFile = open("grades.txt", "r")
    aList = inFile.readlines()
    grades = ["F","E","D","C","B","A"]
修改

以便程序运行

    for lines in aList:
        n = lines.split()

        print(n[0][0].lower()+ n[1][0:4].lower()+ "001 "+ grades[eval(n[2])])

    inFile.close()


main()

如果有人能够指出我犯错误的地方,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

好的......试着不要在这里给你明显的答案。想想你想做什么:你想为“aList的每一行”做一些事情。这就是:

的含义
for lines in aList:

换句话说,“for”块中的所有内容,在此行之后,将对aList内的每个元素执行...只要它在块中,所以正确缩进。

例如:

for a in [1,2,3]:
   print(a)

将显示1,2,3。 “print(a)”位于for块中,因为它正确缩进。

但是:

for a in [1,2,3]:
   x = a

print(x)

这里,“print(x)”不在块中。那么这里会发生什么? x将接收值1,然后是2,然后是3.并且只有在此之后将打印x,并且接收到最后一个值。

考虑到这一点,您应该能够发现代码出了什么问题。

(顺便说一下,为了更安全地阅读你的文件而且更“py”,你应该看看这个:https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects,特别是段落的结尾和“带有”成语。