Сделал 2 задание
This commit is contained in:
parent
b20446f866
commit
60711c6c9f
106
lesson.2.py
Normal file
106
lesson.2.py
Normal 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("Во введённых данных ошибка")
|
||||
Loading…
Reference in a new issue