Загрузка данных


Разработать программу для оценки показателей успеваемости студентов образовательных организаций

Порядок отладки:

Запустить программу и ввести данные для 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Программа завершена.")
```