Как мне подойти дальше к следующей проблеме?
Информация о курсах
Формат строки: код курса~название курса~семестр~год~преподаватель
Информация о студентах
Формат строки: номер рулона~полное имя
Информация об оценках
Формат строки: код курса~семестр~Год~Номер рулона~класс
Возможные оценки: A, AB, B, BC, C, CD, D с соответствующими оценочными баллами 10, 9, 8, 7, 6, 5 и 4. Средний балл студента - это сумма его баллов, деленная на количество курсов. Например, если студент прошел два курса с оценками а и С, средний балл оценки равен 8.50 = (10+7)÷2. Если студент не закончил ни одного курса, средний балл определяется как 0.
Можно предположить, что данные внутренне непротиворечивы. Для каждого класса во входных данных есть соответствующий код курса и номер рулона.
Каждый раздел ввода начинается со строки, содержащей одно ключевое слово. Первый раздел начинается со строки, содержащей курсы. Второй раздел начинается со строки, содержащей студентов. Третий раздел начинается со строки, содержащей оценки. Конец ввода обозначается строкой, содержащей EndOfInput.
Напишите программу на Python для чтения данных, как описано выше, и распечатайте строку со средним баллом оценки для каждого ученика в следующем формате:
Номер Рулона~Полное Имя~Средний Балл Оценки
Ваш вывод должен быть отсортирован по номеру рулона. Средний балл оценки должен быть округлен до 2 цифр после десятичной точки. Используйте встроенную функцию round().
Вот пример ввода и соответствующий ему вывод.
Пример Ввода
Courses TRAN~Transfiguration~1~2011-2012~Minerva McGonagall CHAR~Charms~1~2011-2012~Filius Flitwick Students SLY2301~Hannah Abbott SLY2302~Euan Abercrombie SLY2303~Stewart Ackerley SLY2304~Bertram Aubrey SLY2305~Avery SLY2306~Malcolm Baddock SLY2307~Marcus Belby SLY2308~Katie Bell SLY2309~Sirius Orion Black Grades TRAN~1~2011-2012~SLY2301~AB TRAN~1~2011-2012~SLY2302~B TRAN~1~2011-2012~SLY2303~B TRAN~1~2011-2012~SLY2305~A TRAN~1~2011-2012~SLY2306~BC TRAN~1~2011-2012~SLY2308~A TRAN~1~2011-2012~SLY2309~AB CHAR~1~2011-2012~SLY2301~A CHAR~1~2011-2012~SLY2302~BC CHAR~1~2011-2012~SLY2303~B CHAR~1~2011-2012~SLY2305~BC CHAR~1~2011-2012~SLY2306~C CHAR~1~2011-2012~SLY2307~B CHAR~1~2011-2012~SLY2308~AB EndOfInput Sample Input SLY2301~Hannah Abbott~9.5 SLY2302~Euan Abercrombie~7.5 SLY2303~Stewart Ackerley~8.0 SLY2304~Bertram Aubrey~0 SLY2305~Avery~8.5 SLY2306~Malcolm Baddock~6.5 SLY2307~Marcus Belby~8.0 SLY2308~Katie Bell~9.5 SLY2309~Sirius Orion Black~9.0
Что я уже пробовал:
(lis1, lis2, lis3)= ([], [], []) a = input() while True: if a == 'Courses': a =input() while a != 'Students': lis1.append(a.split('~')) a = input() elif a == 'Students': a =input() while a!= 'Grades': a.split(' ') lis2.append(a.split('~')) a = input() elif a == 'Grades': a =input() while a != 'EndOfInput': lis3.append(a.split('~')) a = input() elif a == 'EndOfInput': break else: break
мне удалось составить отдельный список курсов (lis1), студентов(lis2), классов(lis3), но я не знаю, что делать дальше и как подойти к дальнейшей помощи plz!!. Наверное, мне тоже нужны словари. кроме того, как я могу вычислить градацию по буквам и как, наконец, соединить все конкретные значения. Я предполагаю, что метод Join python будет полезен, но я не понимаю, как расположить все параметры