Обзор проекта
Менеджер записей студентов управляет данными студентов с помощью словарей и множеств. Каждая запись о студенте включает его имя, возраст, оценки и курсы. Основные операции включают добавление студентов, обновление оценок, проверку зачисления на курсы, расчет средних баллов, составление списков студентов по курсам и фильтрацию лучших студентов на основе пороговых значений оценок.
Задание № 1
Инициализируйте пустой словарь с именем student_records для хранения данных обо всех студентах. Этот словарь послужит основой для проекта, где имя каждого студента будет ключом, а его данные (возраст, оценки и курсы) будут храниться в виде вложенного словаря.
Задание № 2
Добавить студента
Создайте функцию с именем add_student, которая принимает три аргумента: name (строка), age (целое число) и courses (список строк). Функция должна:
Проверить, существует ли имя студента уже в словаре student_records. Если да, выведите "Student '' already exists.". Если имя не существует, добавьте его в student_records с age, пустым множеством для grades и множеством courses. Выведите "Student '' added successfully.". Добавьте следующий блок кода в конец вашего кода:
add_student("Alice", 20, ["Math", "Physics"]) add_student("Bob", 22, ["Biology", "Chemistry"]) print(student_records)
Задание № 3
Добавить оценку
Создайте функцию с именем add_grade, которая принимает два аргумента: name (строка) и grade (целое число). Функция должна:
Проверить, существует ли имя студента в словаре student_records. Если оно не существует, вывести "Student '' not found.". Если имя существует, добавить grade в набор (set) grades этого студента. Вывести "Grade added for student ''.". Добавьте (замените) следующий блок кода в нижней части вашего кода:
add_student("Alice", 20, ["Math", "Physics"]) add_student("Bob", 22, ["Biology", "Chemistry"]) add_grade("Alice", 90) add_grade("Alice", 85) add_grade("Bob", 75) add_grade("Charlie", 80) # Non-existent student print(student_records)
Задание № 4
Проверка зачисления
Создайте функцию с именем is_enrolled, которая принимает два аргумента: name (строка) и course (строка). Функция должна:
Проверить, существует ли имя студента в словаре student_records. Если оно не существует, вывести "Student '' not found." и вернуть False. Если имя существует, проверить, входит ли course в набор (set) courses студента. Если да, вернуть True. Если нет, вернуть False.
Добавьте (замените) следующий блок кода в конец вашего кода: add_student("Alice", 20, ["Math", "Physics"]) add_student("Bob", 22, ["Biology", "Chemistry"]) add_grade("Alice", 90) add_grade("Alice", 85) add_grade("Bob", 75) add_grade("Charlie", 80) # Несуществующий студент print(is_enrolled("Alice", "Math")) # Должно вернуть True print(is_enrolled("Alice", "Biology")) # Должно вернуть False print(is_enrolled("Bob", "Biology")) # Должно вернуть True print(is_enrolled("Charlie", "Math")) # Несуществующий студент, должен вывести сообщение и вернуть False
Задание № 5
Средний балл
Создайте функцию с именем calculate_average_grade, которая принимает один аргумент: name (строка). Функция должна:
Проверить, существует ли имя студента в словаре student_records. Если оно не существует, вывести "Student '' not found." и вернуть None. Если имя существует, вычислить среднее значение оценок в наборе grades этого студента. Если набор grades пуст, вернуть 0. В противном случае вычислить и вернуть средний балл в виде числа с плавающей точкой (float). Добавьте (замените) следующий блок кода в нижней части вашего кода: add_student("Alice", 20, ["Math", "Physics"]) add_student("Bob", 22, ["Biology", "Chemistry"]) add_grade("Alice", 90) add_grade("Alice", 85) add_grade("Bob", 75) print(calculate_average_grade("Alice")) # Should return 87.5 print(calculate_average_grade("Bob")) # Should return 75.0 print(calculate_average_grade("Charlie")) # Non-existent student, should print message and return None print(calculate_average_grade("Alice")) # Should return 87.5 again
Задание № 6
Список по курсам
Создайте функцию с именем list_students_by_course, которая принимает один аргумент: course (строка). Функция должна:
Перебрать словарь student_records и найти всех студентов, записанных на указанный course. Вернуть список имен студентов, которые записаны на этот курс. Если на курс не записан ни один студент, вернуть пустой список. Добавьте (замените) следующий блок кода в нижней части вашего кода: add_student("Alice", 20, ["Math", "Physics"]) add_student("Bob", 22, ["Math", "Biology"]) add_student("Diana", 23, ["Chemistry", "Physics"]) print(list_students_by_course("Math")) # Должно вернуть ["Alice", "Bob"] print(list_students_by_course("Physics")) # Должно вернуть ["Alice", "Diana"] print(list_students_by_course("Biology")) # Должно вернуть ["Bob"] print(list_students_by_course("History")) # Должно вернуть пустой список
Задание № 7
Лучшие студенты
Создайте функцию с именем filter_top_students, которая принимает один аргумент: threshold (float). Функция должна:
Пройти в цикле по словарю student_records и найти всех студентов, чей средний балл выше указанного порога threshold. Использовать функцию calculate_average_grade для получения среднего балла каждого студента. Вернуть список имен лучших студентов. Если ни один студент не соответствует критериям, вернуть пустой список. Добавьте (замените) следующий блок кода в нижней части вашего кода: add_student("Alice", 20, ["Math", "Physics"]) add_student("Bob", 22, ["Math", "Biology"]) add_student("Diana", 23, ["Chemistry", "Physics"]) add_grade("Alice", 90) add_grade("Alice", 85) add_grade("Bob", 75) add_grade("Diana", 95) print(filter_top_students(80)) # Должно вернуть ["Alice", "Diana"] print(filter_top_students(90)) # Должно вернуть ["Diana"] print(filter_top_students(100)) # Должно вернуть пустой список
Найдите минутку, чтобы поразмышлять о том, как вы объединили словари, множества и принятие решений для создания полнофункциональной программы. Отличная работа!