Сделал 2 задание

This commit is contained in:
parent b20446f866
commit 60711c6c9f

106
lesson.2.py Normal file
View file

@ -0,0 +1,106 @@
''' ****** Задание 2 из 3 *********
* Что нужно сделать
Ваша задача — проанализировать вовлечённость ученика и вычислить его рейтинг. А если входные данные окажутся неверными — указать это.
Формат ввода
Одна строчка, в которой через пробел подаются следующие данные:
N M Q cw sw hw tw
N (num_students) — число учеников на курсе
M (num_lessons) — количество занятий в курсе
Q (max_rating) — максимальный рейтинг
cw (classwork_coefficient) — коэффициент для активности на занятии
sw (selfwork_coefficient) — коэффициент для практики
hw (homework_coefficient) — коэффициент для домашней работы
tw (testwork_coefficient) — коэффициент для контрольной работы
Далее идёт фамилия ученика и несколько строчек (M) с оценками ученика на занятиях в формате:
Иванов
a₁,b₁,c₁,d₁
a₂,b₂,c₂,d₂
a₃,b₃,c₃,d₃
⋮
aₘ,bₘ,cₘ,dₘ
Где aᵢ,bᵢ,cᵢ,dᵢ — это оценки за i-ое занятие:
aᵢ (classwork_grade) — оценка за активность на занятии
bᵢ (selfwork_grade) — оценка за практику на занятии
cᵢ (homework_grade) — оценка за домашнюю работу на занятии
dᵢ (testwork_grade) — оценка за контрольную работу на занятии
Если не было активности, ученик отсутствовал либо не проявил себя на занятии — значение за активность будет 0.
Формат вывода
Фамилия и процент от максимального рейтинга, округленный до целого числа с помощью функции round(). Через пробел.
Иванов x%
Также сделайте проверку на верность вводных данных. Если условие не выполняется, то необходимо вывести строку «Во введённых данных ошибка»
M > 0 (количество проведённых занятий равно 1 и больше)
cw, sw, hm, tw > 0 (все активности учитываются в рейтинге)
Рассчитанный максимальный рейтинг ученика на программе не должен превышать Q.
Во введённых данных ошибка
Формула для расчёта рейтинга
Про работу функции round() подробнее можете почитать в подсказках.
Пример 1
Ввод
4 5 190 1 2 4 6
Сергеев
0,0,2,0
3,3,2,2
3,1,3,1
3,0,1,2
0,3,3,1
Вывод
Сергеев 54%
'''
if __name__ == "__main__"
import sys
data = sys.stdin.read().splitlines()
if not data:
print("Во введённых данных ошибка")
sys.exit()
try:
header = list(map(int, data[0].split()))
N, M, Q, cw, sw, hw, tw = header
if M <= 0 or cw <= 0 or sw <= 0 or hw <= 0 or tw <= 0:
print("Во введённых данных ошибка")
sys.exit()
surname = data[1]
grades = []
for line in data[2:2 + M]:
row = list(map(int, line.split(',')))
if len(row) != 4:
print("Во введённых данных ошибка")
sys.exit()
grades.append(row)
total = 0
for a, b, c, d in grades:
total += a * cw + b * sw + c * hw + d * tw
if total > Q:
print("Во введённых данных ошибка")
sys.exit()
percent = round((total / Q) * 100)
print(f"{surname} {percent}%")
except (ValueError, IndexError):
print("Во введённых данных ошибка")