Решение 1. Типы JSON
json.dumps(...) возвращает str.
json.loads(...) возвращает dict.
Решение 2. Найдите ошибку
Используется json.dumps (для строки) вместо json.dump (для файла).
import json
data = {"name": "Alice", "age": 25}
with open("user.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
Решение 3. JSONDecodeError
Возникнет json.JSONDecodeError, потому что JSON требует двойные кавычки.
Решение 4. Фильтрация низких оценок
# solution_04_grades.py
import json
from datetime import datetime
from pathlib import Path
def parse_date(date_str: str) -> datetime:
return datetime.strptime(date_str, "%d-%m-%Y")
def filter_low_scores(threshold: int, start_date: str, end_date: str) -> None:
start = parse_date(start_date)
end = parse_date(end_date)
grades = json.loads(Path("grades.json").read_text(encoding="utf-8"))
filtered = [
record for record in grades
if record["grade"] < threshold
and start <= parse_date(record["date"]) <= end
]
Path("filtered_low_scores.json").write_text(
json.dumps(filtered, ensure_ascii=False, indent=2),
encoding="utf-8"
)
if __name__ == "__main__":
filter_low_scores(70, "01-01-2025", "31-03-2025")