Для решения вашей задачи, мы можем написать программу на языке Python. Давайте разберем каждый пункт и создадим структуру для хранения данных, а затем реализуем необходимую логику для вычислений.
Подготовим структуру для хранения данных о каждом ученице. Это может быть класс или именованная кортежа для удобства.
Прочитаем данные из файла
marks.csv.Выполним необходимые вычисления для всех требуемых пунктов.
Вот пример реализации:
import csv
from collections import defaultdict
# Определим структуру для хранения информации о каждом ученике
class Student:
def __init__(self, surname, name, marks):
self.surname = surname
self.name = name
self.marks = marks # Список отметок по предметам
# Функция для чтения данных из файла
def read_data(file_name):
students = []
with open(file_name, 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
surname, name = row[0], row[1]
marks = list(map(int, row[2:6])) # Предполагаем, что оценки целые числа
students.append(Student(surname, name, marks))
return students
# Функция для анализа данных
def analyze_students(students):
total_marks = [0] * 4 # Сумма оценок по каждому предмету
max_sum = 0
max_students = []
count_with_twos = 0
for student in students:
sum_marks = sum(student.marks)
# Считаем средние баллы
for i in range(4):
total_marks[i] += student.marks[i]
# Проверяем максимальную сумму
if sum_marks > max_sum:
max_sum = sum_marks
max_students = [(student.surname, student.name)]
elif sum_marks == max_sum:
max_students.append((student.surname, student.name))
# Проверяем на наличие двойки
if 2 in student.marks:
count_with_twos += 1
# Выводим результаты
average_marks = [total / len(students) for total in total_marks]
print("Средний балл по предметам:")
print(f"Алгебра: {average_marks[0]:.2f}, Русский язык: {average_marks[1]:.2f}, Физика: {average_marks[2]:.2f}, История: {average_marks[3]:.2f}")
print("Максимальная сумма баллов:", max_sum)
max_students.sort() # Сортируем по фамилиям и именам
print("Учащиеся с максимальной суммой баллов:")
for surname, name in max_students:
print(f"{surname} {name}")
print("Количество учащихся, получивших хотя бы одну отметку '2':", count_with_twos)
# Основная программа
file_name = 'marks.csv'
students = read_data(file_name)
analyze_students(students)
В этом коде мы:
- Создали класс
Student, который хранит фамилию, имя и оценки. - Реализовали функцию
read_data, которая читает данные из CSV-файла и создает список студентов. - Создали функцию
analyze_students, в которой подсчитываем средний балл по предметам, максимальную сумму баллов и количество учащихся, получивших диагностические отметки.
Теперь вы можете запустить этот код с вашим файлом marks.csv, и он выполнит необходимые вычисления и выдаст результаты на экран.
