Карточки · Шаг 3 из 4
Колода из файла
Колода живёт в обычном текстовом файле: Лёша дописывает в него слова руками, по строке на карточку, а программа сама дописывает коробку и дату следующего показа. Раз файл правят руками — в нём будут и опечатки, и важно сказать, где именно.
Что сделать
Прочитайте колоду из текста файла; на кривой строке остановитесь и скажите её номер.
Что приходит
tekst— содержимое файла колоды целиком, строкой
Что вернуть
Список карточек — словарей с ключами "vopros", "otvet", "korobka", "data"; кривая строка — ValueError с текстом «строка N: что не так».
Допишите функцию prochitat_kolodu в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Программа читает колоду этой функцией при каждом запуске. На ValueError она печатает ваш текст как есть и не начинает занятие — чтобы не испортить файл. Решите шаг — и колоду можно писать руками.
Две новые карточки: «apple | яблоко» и «pear | груша». Обе ещё ни разу не показывались — коробка 1, дата None. Строка, которую программа уже дописала, выглядит так: «plum | слива | 3 | 2026-11-02» — карточка в третьей коробке, показать 2 ноября.
prochitat_kolodu("apple | яблоко\npear | груша")
[{'vopros': 'apple', 'otvet': 'яблоко', 'korobka': 1, 'data': None}, {'vopros': 'pear', 'otvet': 'груша', 'korobka': 1, 'data': None}]
Каждая строка, без пробелов по краям:
- пустая или начинается с
#— пропускается (это комментарий); - иначе делится по
|на части, у каждой части пробелы по краям отбрасываются. Частей должно быть две или четыре.
Две части — новая карточка: вопрос | ответ, коробка 1, дата None. Четыре — вопрос | ответ | коробка | дата: коробка — одна цифра от 1 до 5 (в ответе — число), дата — ровно ГГГГ-ММ-ДД и такая, что бывает в календаре.
Вопрос и ответ не пустые. Если строка нарушает правило, поднимите ValueError с текстом, который начинается с строка N: — номер строки в файле, считая с единицы и вместе с пустыми и комментариями. Пустой файл — пустая колода.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.