Программа оценки текстовых файлов данных Python
Ищу помощь по моей программе. Существует текстовый файл с 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 ответ
Хорошо... пытаюсь не дать вам очевидный ответ, здесь. Подумайте о том, что вы хотите сделать: вы хотите сделать что-то "для каждой строки 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 с последним полученным значением.
Имея это в виду, вы должны быть в состоянии определить, что не так с вашим кодом.
(Кстати, чтобы читать ваш файл более безопасно и более "питонически", вы должны взглянуть на это: https://docs.python.org/2/tutorial/inputoutput.html в частности конец абзаца и идиома "с").