Python: чтение CSV-файла с оценками

11 класс 1 просмотр задан 27.05.2026 📚 редакторский

Дан CSV-файл grades.csv с заголовком: name,subject,grade. Прочитайте файл и выведите среднюю оценку по каждому ученику.

1 ответ

Принятый ответ
Ответ

Используем модуль csv + словарь

Как это получилось
import csv
from collections import defaultdict

sums = defaultdict(int)
counts = defaultdict(int)

with open("grades.csv", "r", encoding="utf-8", newline="") as f:
    reader = csv.DictReader(f)
    for row in reader:
        name = row["name"]
        grade = int(row["grade"])
        sums[name] += grade
        counts[name] += 1

for name in sums:
    avg = sums[name] / counts[name]
    print(f"{name}: {avg:.2f}")

Разбор:

  • csv.DictReader читает CSV, возвращая каждую строку как словарь, где ключи — имена столбцов из заголовка.
  • defaultdict(int) — словарь с дефолтным значением 0; не нужно проверять, есть ли ключ.
  • f"{avg:.2f}" — форматирование с двумя знаками после запятой.
  • newline="" — рекомендация для модуля csv, чтобы корректно работать на разных ОС.

Пример CSV:

name,subject,grade
Иванов,Математика,5
Иванов,Физика,4
Петрова,Математика,5

Вывод:

Иванов: 4.50
Петрова: 5.00

Для сложной обработки CSV обычно используют pandas: pd.read_csv("grades.csv").groupby("name")["grade"].mean().

🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти