Программа оценки текстовых файлов данных 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 в частности конец абзаца и идиома "с").

Другие вопросы по тегам