Задача Задача №1996872
А
А
Для решения вашей задачи необходимо выполнить следующие шаги:
- Прочитать данные из файла
marks.csv. - Разобрать строки и создать массив структур для хранения информации о каждом учащемся.
- Вычислить средний балл по каждому предмету.
- Найти максимальную сумму баллов и список учащихся с этой суммой.
- Подсчитать количество учащихся, получивших хотя бы одну отметку "2".
Давайте реализуем это на языке Python. Вот пример кода, который выполняет все описанные задачи:
import csv
# Определяем структуру для хранения информации об учениках
class Student:
def __init__(self, last_name, first_name, algebra, russian, physics, history):
self.last_name = last_name
self.first_name = first_name
self.scores = [algebra, russian, physics, history]
def total_score(self):
return sum(self.scores)
# Чтение данных из файла
students = []
with open('marks.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
last_name = row[0]
first_name = row[1]
scores = list(map(int, row[2:])) # Преобразуем отметки в целые числа
student = Student(last_name, first_name, *scores)
students.append(student)
# a) Средний балл в районе по каждому предмету
total_scores = [0] * 4
for student in students:
total_scores = [total + score for total, score in zip(total_scores, student.scores)]
average_scores = [total / len(students) for total in total_scores]
print(f"Средний балл по каждому предмету: Алгебра: {average_scores[0]}, Русский: {average_scores[1]}, Физика: {average_scores[2]}, История: {average_scores[3]}")
# b) Максимальная сумма баллов
max_score = max(student.total_score() for student in students)
print(f"Максимальная сумма баллов: {max_score}")
# c) Список учащихся с максимальной суммой баллов в алфавитном порядке
top_students = [f"{student.last_name} {student.first_name}" for student in students if student.total_score() == max_score]
top_students.sort()
print("Учащиеся с максимальной суммой баллов:")
for student in top_students:
print(student)
# d) Количество учащихся, получивших хотя бы одну отметку «2»
count_with_failing = sum(1 for student in students if 2 in student.scores)
print(f"Количество учащихся с хотя бы одной отметкой '2': {count_with_failing}")
Объяснение кода:
- Импортируем библиотеку
csv, которая позволяет удобно работать с CSV файлами. - Создаем класс
Student, чтобы удобно хранить информацию о каждом ученице: фамилия, имя и оценки по предметам. - Читаем данные из файла и заполняем список
studentsэкземплярами классаStudent. - Вычисляем средние баллы по каждому предмету путем суммирования оценок и деления на количество студентов.
- Находим максимальную сумму баллов и создаем список студентов, у которых эта сумма равна максимальной, затем сортируем этот список.
- Считаем количество студентов с оценками "2" с помощью генераторного выражения.
Это базовый пример программы, который можно дополнительно улучшить и настраивать под ваши конкретные требования. Удачи с вашим проектом!
