Как узнать, какой ожидается диплом (при помощи Python)

Хороший студент часто задаётся вопросом: хватит ли его "четвёрок" и "пятёрок" для получения "красного диплома", т.е. документа о высшем образовании с отличием? Для ответа на этот вопрос можно воспользоваться приводимой в настоящей заметке программой на языке Python. Всё, что нужно — это вооружиться собственной зачётной книжкой и внести в программу все оценки, полученные за период обучения.
Диплом с отличием выдается при следующих условиях (Порядок выдачи документов государственного образца о высшем профессиональном образовании, заполнения, хранения и учета соответствующих бланков документов):
- все оценки, указанные в приложении к диплому (оценки по дисциплинам (модулям), разделам образовательной программы, оценки за курсовые работы (проекты), являются оценками "отлично" и "хорошо";
- все оценки по результатам государственной (итоговой) аттестации являются оценками "отлично";
- количество оценок "отлично", включая оценки по результатам государственной (итоговой) аттестации, составляет не менее 75% от общего количество оценок, указанных в приложении к диплому.
Таким образом, средний балл по диплому должен быть не менее 4,75; при этом выпускник не может иметь ни одной "тройки". Вузы также могут выдавать значки "Отличник учёбы" тем выпускникам, которые учились на одни "пятёрки" (их средний балл составляет 5,00). Программа позволяет определить, может ли выпускник рассчитывать на данную награду своим трудам.
Главная функция

Следуя методу нисходящей разработки, алгоритм программы
разбит на серию подзадач, которые реализованы в отдельных функциях.
Главная функция main
содержит стержневую логику
программы
и поочерёдно передаёт поток управления 4 другим функциям:
get_marks
(получить от пользователя все оценки);calc_average
(рассчитать средний балл диплома);determine_grade
(определить, получит ли выпускник диплом с отличием и значок "Отличник учёбы");show_grade
(показать пользователю результаты расчёта).
Получение оценок

Функция get_marks
получает от пользователя входные данные
— все оценки за период обучения. Получение оценок реализовано
в виде цикла while
, который повторяется, пока
сигнальная метка flag
имеет значение True
,
т.е. пока не введено число 0.
В случае, если пользователь ввёл данные, не соответствующие целому
числу, данная функция ловит исключение ValueError
, а
также уведомляет пользователя, что введено целочисленное значение,
не относящееся к диапазону оценок (3-5) и не являющееся
сигнальной меткой окончания ввода данных (0).
Функция возвращает значения total
(сумма всех оценок),
quantity
(количество всех оценок) и
satisfactory
(количество оценок
"удовлетворительно"), которые передаются для обработки в
другие функции.
Расчёт среднего балла

Функция calc_average
получает для обработки данные из
переменных total
и quantity
и рассчитывает
средний балл (результат деления суммы всех оценок на их количество).
Возвращаемое значение — average
(средний балл).
Поскольку пользователь мог не ввести ни одной оценки, функция
отслеживает случаи, когда переменная quantity
равна
0, и перехватывает исключение
ZeroDivisionError
(деление на ноль). В этом случае
средний балл считается равным 0, а пользователь
уведомляется о том, что введённых данных недостаточно для расчёта.
Определение уровня диплома

Функция determine_grade
получает аргументы
average
и satisfactory
для определения того,
какой документ об образовании (с отличием, без отличия) положен
пользователю, а также может ли он рассчитывать на значок
"Отличник учёбы". Если satisfactory
больше
нуля, то пользователь сразу же лишается права на "красный
диплом"...
Возвращаемое значение — grade
(уровень диплома). Для
случая, когда средний балл пользователя равен 0,
предусмотрено специальное значение переменной grade.
Показ уровня диплома

Функция show_grade
использует параметрическую переменную
grade
для вывода сообщения о том, какой диплом получит
пользователь (и получит ли он значок "Отличник учёбы").
Если для расчёта grade
использовался средний балл, равный
0, то пользователю сообщается, что уровень документа об
образовании в данном сеансе не может быть определён.
Полный код программы
Полный код программы представлен на скриншоте.

Также программу можно скачать и запустить у себя на компьютере: average_mark.py. Но для этого у вас должен быть установлен интерпретатор Python 3-й версии. Если вы хотите потестировать код онлайн, можно это сделать в своём браузере при помощи онлайнового IDE repl.it: average_mark.
Пользователю программы не обязательно быть выпускником: вы сможете проверить, насколько ваши претензии соответствуют требованиям к получению диплома с отличием, на любом курсе обучения. Но дальше вам придётся подтверждать своё желание получить "красный диплом" новыми оценками, а также, при необходимости, корректировать процесс подготовки к промежуточным аттестациям и государственной итоговой аттестации, чтобы повысить уровень получаемого диплома. Помните самое главное правило: никаких "троек"!