Разработать программу для оценки показателей успеваемости студентов образовательных организаций
Порядок отладки:
Запустить программу и ввести данные для 3 студентов с разными оценками. Проверить расчёт среднего балла группы. Ввести студента с одной оценкой 2 — программа должна выдать предупреждение о неуспевающем. Проверить что при пустом списке оценок программа не падает и выводит сообщение об ошибке.
Фрагменты кода:
```python
def calculate_average(grades):
if not grades:
return 0
return sum(grades) / len(grades)
def get_performance_level(avg):
if avg >= 4.5: return "Отличная"
elif avg >= 3.5: return "Хорошая"
elif avg >= 2.5: return "Удовлетворительная"
else: return "Низкая"
```
Полный код:
```python
print("=== Программа для оценки показателей успеваемости студентов ===\n")
students = []
n = int(input("Введите количество студентов: "))
for i in range(n):
print(f"\nСтудент {i+1}:")
name = input(" ФИО: ")
grades_str = input(" Оценки (через пробел, по 5-балльной шкале): ")
if grades_str.strip():
grades = [int(x) for x in grades_str.split()]
else:
grades = []
students.append({
'name': name,
'grades': grades
})
print("\n" + "="*50)
print("РЕЗУЛЬТАТЫ УСПЕВАЕМОСТИ")
print("="*50)
group_averages = []
for student in students:
grades = student['grades']
name = student['name']
if not grades:
print(f"\n{name}: НЕТ ОЦЕНОК")
continue
avg = sum(grades) / len(grades)
group_averages.append(avg)
# Определение уровня
if avg >= 4.5:
level = "Отличник"
elif avg >= 3.5:
level = "Хорошист"
elif avg >= 2.5:
level = "Троечник"
else:
level = "НЕУСПЕВАЮЩИЙ"
print(f"\n{name}:")
print(f" Оценки: {grades}")
print(f" Средний балл: {avg:.2f}")
print(f" Уровень: {level}")
# Проверка на двойки
if 2 in grades:
print(f" ВНИМАНИЕ: Есть неудовлетворительные оценки!")
print("\n" + "-"*50)
print("СТАТИСТИКА ПО ГРУППЕ:")
if group_averages:
group_avg = sum(group_averages) / len(group_averages)
excellent = sum(1 for s in students if s['grades'] and sum(s['grades'])/len(s['grades']) >= 4.5)
good = sum(1 for s in students if s['grades'] and 3.5 <= sum(s['grades'])/len(s['grades']) < 4.5)
satisfactory = sum(1 for s in students if s['grades'] and 2.5 <= sum(s['grades'])/len(s['grades']) < 3.5)
poor = sum(1 for s in students if s['grades'] and sum(s['grades'])/len(s['grades']) < 2.5)
no_grades = sum(1 for s in students if not s['grades'])
print(f" Средний балл группы: {group_avg:.2f}")
print(f" Отличников: {excellent}")
print(f" Хорошистов: {good}")
print(f" Троечников: {satisfactory}")
print(f" Неуспевающих: {poor}")
print(f" Без оценок: {no_grades}")
# Оценка успеваемости группы
if group_avg >= 4.0:
performance = "ВЫСОКАЯ"
elif group_avg >= 3.0:
performance = "СРЕДНЯЯ"
else:
performance = "НИЗКАЯ"
print(f"\n Общая успеваемость группы: {performance}")
else:
print(" Нет данных для анализа")
print("\nПрограмма завершена.")
```