寻求我的计划方面的帮助。有一个文本文件,其中包含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()
如果有人能够指出我犯错误的地方,我们将不胜感激。
答案 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,特别是段落的结尾和“带有”成语。