Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Python 3.14; усі функції мають анотації. Формати файлів, кодування, розділювач CSV, поля та одиниці запишіть у README. Помилка вхідних даних не повинна мовчки створювати правдоподібний неповний результат. Тести виконують файлові зміни тільки в tmp_path.
Варіанти
Варіант 1. Облік витрат
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: category,date,cents. Перевірити: дата ISO, непорожня категорія, додатні цілі копійки. Обчислити й вивести суму копійок за категоріями. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: category,date,cents. Перевірити: дата ISO, непорожня категорія, додатні цілі копійки. Обчислити й вивести суму копійок за категоріями. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: category,date,cents. Перевірити: дата ISO, непорожня категорія, додатні цілі копійки. Обчислити й вивести суму копійок за категоріями. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 2. Тренажерна зала
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,until. Перевірити: непорожнє ім’я, дата завершення ISO. Обчислити й вивести імена прострочених на дату ISO, передану аргументом. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,until. Перевірити: непорожнє ім’я, дата завершення ISO. Обчислити й вивести імена прострочених на дату ISO, передану аргументом. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,until. Перевірити: непорожнє ім’я, дата завершення ISO. Обчислити й вивести імена прострочених на дату ISO, передану аргументом. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 3. Фотоархів
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: path,bytes. Перевірити: відносний шлях JPG або PNG, невід’ємний цілий розмір. Обчислити й вивести кількість і байти за розширеннями; вхід сформувати обходом переданої папки без зміни зображень. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: path,bytes. Перевірити: відносний шлях JPG або PNG, невід’ємний цілий розмір. Обчислити й вивести кількість і байти за розширеннями; вхід сформувати обходом переданої папки без зміни зображень. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: path,bytes. Перевірити: відносний шлях JPG або PNG, невід’ємний цілий розмір. Обчислити й вивести кількість і байти за розширеннями; вхід сформувати обходом переданої папки без зміни зображень. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 4. Полив рослин
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: plant,last,days. Перевірити: непорожня назва, дата ISO, інтервал цілий 1..30. Обчислити й вивести наступну дату поливу як last плюс days днів. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: plant,last,days. Перевірити: непорожня назва, дата ISO, інтервал цілий 1..30. Обчислити й вивести наступну дату поливу як last плюс days днів. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: plant,last,days. Перевірити: непорожня назва, дата ISO, інтервал цілий 1..30. Обчислити й вивести наступну дату поливу як last плюс days днів. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 5. Службовий автопарк
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: car,km,last_service. Перевірити: код авто, невід’ємні цілі показники, km не менше last_service. Обчислити й вивести авто, які проїхали від останнього ТО щонайменше 10000 км. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: car,km,last_service. Перевірити: код авто, невід’ємні цілі показники, km не менше last_service. Обчислити й вивести авто, які проїхали від останнього ТО щонайменше 10000 км. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: car,km,last_service. Перевірити: код авто, невід’ємні цілі показники, km не менше last_service. Обчислити й вивести авто, які проїхали від останнього ТО щонайменше 10000 км. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 6. Журнал оцінок
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: student,score. Перевірити: непорожнє ім’я, цілий бал 0..100. Обчислити й вивести середній бал кожного студента, сортування за спаданням бала й іменем. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: student,score. Перевірити: непорожнє ім’я, цілий бал 0..100. Обчислити й вивести середній бал кожного студента, сортування за спаданням бала й іменем. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: student,score. Перевірити: непорожнє ім’я, цілий бал 0..100. Обчислити й вивести середній бал кожного студента, сортування за спаданням бала й іменем. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 7. Збірка рецептів
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: dish,ingredient,grams. Перевірити: непорожні назви, додатна ціла маса. Обчислити й вивести страви, що містять інгредієнт, переданий аргументом. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: dish,ingredient,grams. Перевірити: непорожні назви, додатна ціла маса. Обчислити й вивести страви, що містять інгредієнт, переданий аргументом. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: dish,ingredient,grams. Перевірити: непорожні назви, додатна ціла маса. Обчислити й вивести страви, що містять інгредієнт, переданий аргументом. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 8. Конвертер CSV і JSON
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,quantity. Перевірити: непорожня назва, невід’ємна ціла кількість. Обчислити й вивести еквівалентний файл іншого формату зі збереженням числового типу quantity. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,quantity. Перевірити: непорожня назва, невід’ємна ціла кількість. Обчислити й вивести еквівалентний файл іншого формату зі збереженням числового типу quantity. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,quantity. Перевірити: непорожня назва, невід’ємна ціла кількість. Обчислити й вивести еквівалентний файл іншого формату зі збереженням числового типу quantity. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 9. Фільмотека
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: title,year,rating. Перевірити: назва, рік 1888..2100, скінченний рейтинг 0..10. Обчислити й вивести фільми року, заданого аргументом, за спаданням рейтингу. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: title,year,rating. Перевірити: назва, рік 1888..2100, скінченний рейтинг 0..10. Обчислити й вивести фільми року, заданого аргументом, за спаданням рейтингу. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: title,year,rating. Перевірити: назва, рік 1888..2100, скінченний рейтинг 0..10. Обчислити й вивести фільми року, заданого аргументом, за спаданням рейтингу. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 10. Метеодані станцій
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: station,date,temp. Перевірити: код станції, дата ISO, скінченна температура -100..100. Обчислити й вивести середню температуру за станціями для всіх вхідних файлів обраного формату в переданій папці. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: station,date,temp. Перевірити: код станції, дата ISO, скінченна температура -100..100. Обчислити й вивести середню температуру за станціями для всіх вхідних файлів обраного формату в переданій папці. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: station,date,temp. Перевірити: код станції, дата ISO, скінченна температура -100..100. Обчислити й вивести середню температуру за станціями для всіх вхідних файлів обраного формату в переданій папці. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 11. Інвентаризація офісу
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: code,expected,actual. Перевірити: унікальний код, невід’ємні цілі кількості. Обчислити й вивести додатні нестачі expected мінус actual. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: code,expected,actual. Перевірити: унікальний код, невід’ємні цілі кількості. Обчислити й вивести додатні нестачі expected мінус actual. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: code,expected,actual. Перевірити: унікальний код, невід’ємні цілі кількості. Обчислити й вивести додатні нестачі expected мінус actual. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 12. Резервне копіювання
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: source,target. Перевірити: дві різні папки; ціль не всередині джерела. Обчислити й вивести копії звичайних файлів джерела в цілі та JSON-журнал відносних шляхів; посилання пропускати, нічого не видаляти. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: source,target. Перевірити: дві різні папки; ціль не всередині джерела. Обчислити й вивести копії звичайних файлів джерела в цілі та JSON-журнал відносних шляхів; посилання пропускати, нічого не видаляти. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: source,target. Перевірити: дві різні папки; ціль не всередині джерела. Обчислити й вивести копії звичайних файлів джерела в цілі та JSON-журнал відносних шляхів; посилання пропускати, нічого не видаляти. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 13. Турнірна таблиця
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: team,win,draw,loss. Перевірити: назва, невід’ємні цілі кількості. Обчислити й вивести очки 3*win+draw і рейтинг за спаданням очок, потім за назвою. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: team,win,draw,loss. Перевірити: назва, невід’ємні цілі кількості. Обчислити й вивести очки 3*win+draw і рейтинг за спаданням очок, потім за назвою. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: team,win,draw,loss. Перевірити: назва, невід’ємні цілі кількості. Обчислити й вивести очки 3*win+draw і рейтинг за спаданням очок, потім за назвою. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 14. Глосарій
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: term,definition. Перевірити: непорожні терміни й пояснення, унікальні терміни без урахування регістру. Обчислити й вивести терміни з підрядком, переданим аргументом, без урахування регістру. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: term,definition. Перевірити: непорожні терміни й пояснення, унікальні терміни без урахування регістру. Обчислити й вивести терміни з підрядком, переданим аргументом, без урахування регістру. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: term,definition. Перевірити: непорожні терміни й пояснення, унікальні терміни без урахування регістру. Обчислити й вивести терміни з підрядком, переданим аргументом, без урахування регістру. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 15. Трекер звичок
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: habit,date. Перевірити: непорожня назва й дата ISO, повтори пари заборонені. Обчислити й вивести найдовшу послідовність календарних днів для кожної звички. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: habit,date. Перевірити: непорожня назва й дата ISO, повтори пари заборонені. Обчислити й вивести найдовшу послідовність календарних днів для кожної звички. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: habit,date. Перевірити: непорожня назва й дата ISO, повтори пари заборонені. Обчислити й вивести найдовшу послідовність календарних днів для кожної звички. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 16. Прийоми лікаря
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: doctor,date,time. Перевірити: вигадане ім’я, дата ISO, час HH:MM; медичних рекомендацій немає. Обчислити й вивести конфлікти однакового лікаря, дати й часу; не включати персональні дані пацієнтів. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: doctor,date,time. Перевірити: вигадане ім’я, дата ISO, час HH:MM; медичних рекомендацій немає. Обчислити й вивести конфлікти однакового лікаря, дати й часу; не включати персональні дані пацієнтів. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: doctor,date,time. Перевірити: вигадане ім’я, дата ISO, час HH:MM; медичних рекомендацій немає. Обчислити й вивести конфлікти однакового лікаря, дати й часу; не включати персональні дані пацієнтів. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 17. Дублікати файлів
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: folder. Перевірити: наявний каталог для читання; посилання пропускати. Обчислити й вивести групи однакових SHA-256 звичайних файлів із відносними шляхами, жодних файлів не видаляти. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: folder. Перевірити: наявний каталог для читання; посилання пропускати. Обчислити й вивести групи однакових SHA-256 звичайних файлів із відносними шляхами, жодних файлів не видаляти. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: folder. Перевірити: наявний каталог для читання; посилання пропускати. Обчислити й вивести групи однакових SHA-256 звичайних файлів із відносними шляхами, жодних файлів не видаляти. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 18. Розклад аудиторій
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: room,date,start,end. Перевірити: аудиторія, дата ISO, хвилини 0..1440, start<end. Обчислити й вивести пари перетинів напіввідкритих інтервалів однієї аудиторії й дати. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: room,date,start,end. Перевірити: аудиторія, дата ISO, хвилини 0..1440, start<end. Обчислити й вивести пари перетинів напіввідкритих інтервалів однієї аудиторії й дати. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: room,date,start,end. Перевірити: аудиторія, дата ISO, хвилини 0..1440, start<end. Обчислити й вивести пари перетинів напіввідкритих інтервалів однієї аудиторії й дати. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 19. Каса кінотеатру
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: session,ticket,cents. Перевірити: код сеансу, унікальний квиток, додатні цілі копійки. Обчислити й вивести кількість проданих квитків і виручку кожного сеансу. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: session,ticket,cents. Перевірити: код сеансу, унікальний квиток, додатні цілі копійки. Обчислити й вивести кількість проданих квитків і виручку кожного сеансу. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: session,ticket,cents. Перевірити: код сеансу, унікальний квиток, додатні цілі копійки. Обчислити й вивести кількість проданих квитків і виручку кожного сеансу. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 20. Адресна книга
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,email. Перевірити: непорожнє ім’я, email із одним символом @ і непорожніми частинами. Обчислити й вивести групи повторних email без урахування регістру; не видаляти автоматично. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,email. Перевірити: непорожнє ім’я, email із одним символом @ і непорожніми частинами. Обчислити й вивести групи повторних email без урахування регістру; не видаляти автоматично. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: name,email. Перевірити: непорожнє ім’я, email із одним символом @ і непорожніми частинами. Обчислити й вивести групи повторних email без урахування регістру; не видаляти автоматично. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 21. Лічильники енергії
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: meter,date,kwh. Перевірити: код, дата ISO, невід’ємне ціле накопичене показання. Обчислити й вивести різницю останнього й першого показання за кожним лічильником і місяцем; спадання показань відхиляти. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: meter,date,kwh. Перевірити: код, дата ISO, невід’ємне ціле накопичене показання. Обчислити й вивести різницю останнього й першого показання за кожним лічильником і місяцем; спадання показань відхиляти. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: meter,date,kwh. Перевірити: код, дата ISO, невід’ємне ціле накопичене показання. Обчислити й вивести різницю останнього й першого показання за кожним лічильником і місяцем; спадання показань відхиляти. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 22. Складські накладні
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: product,delta. Перевірити: назва, ціла зміна кількості зі знаком, початковий залишок нуль. Обчислити й вивести поточні залишки послідовним застосуванням рядків; від’ємний залишок відхиляти. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: product,delta. Перевірити: назва, ціла зміна кількості зі знаком, початковий залишок нуль. Обчислити й вивести поточні залишки послідовним застосуванням рядків; від’ємний залишок відхиляти. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: product,delta. Перевірити: назва, ціла зміна кількості зі знаком, початковий залишок нуль. Обчислити й вивести поточні залишки послідовним застосуванням рядків; від’ємний залишок відхиляти. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 23. Сортувальник завантажень
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: source,target. Перевірити: різні папки, ціль поза джерелом. Обчислити й вивести копії файлів у підпапки за розширенням і JSON-журнал; не переміщувати, конфлікт імен відхиляти. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: source,target. Перевірити: різні папки, ціль поза джерелом. Обчислити й вивести копії файлів у підпапки за розширенням і JSON-журнал; не переміщувати, конфлікт імен відхиляти. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: source,target. Перевірити: різні папки, ціль поза джерелом. Обчислити й вивести копії файлів у підпапки за розширенням і JSON-журнал; не переміщувати, конфлікт імен відхиляти. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 24. Журнал пробіжок
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: date,meters,seconds. Перевірити: дата ISO, додатні цілі метри й секунди. Обчислити й вивести найшвидшу середню швидкість meters/seconds та загальну дистанцію. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: date,meters,seconds. Перевірити: дата ISO, додатні цілі метри й секунди. Обчислити й вивести найшвидшу середню швидкість meters/seconds та загальну дистанцію. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: date,meters,seconds. Перевірити: дата ISO, додатні цілі метри й секунди. Обчислити й вивести найшвидшу середню швидкість meters/seconds та загальну дистанцію. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 25. Сімейний бюджет
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: category,kind,cents. Перевірити: категорія, kind income або expense, додатні копійки. Обчислити й вивести доходи, витрати й різницю за категоріями. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: category,kind,cents. Перевірити: категорія, kind income або expense, додатні копійки. Обчислити й вивести доходи, витрати й різницю за категоріями. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: category,kind,cents. Перевірити: категорія, kind income або expense, додатні копійки. Обчислити й вивести доходи, витрати й різницю за категоріями. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 26. Екзаменаційні білети
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: id,text. Перевірити: унікальний цілий id та непорожній текст. Обчислити й вивести три білети по два різні питання без повторів між білетами; щонайменше шість питань, seed передати аргументом. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: id,text. Перевірити: унікальний цілий id та непорожній текст. Обчислити й вивести три білети по два різні питання без повторів між білетами; щонайменше шість питань, seed передати аргументом. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: id,text. Перевірити: унікальний цілий id та непорожній текст. Обчислити й вивести три білети по два різні питання без повторів між білетами; щонайменше шість питань, seed передати аргументом. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 27. Аналізатор журналів
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: level,message. Перевірити: рівень INFO, WARNING або ERROR, текст повідомлення. Обчислити й вивести кількість записів за рівнями та окремий перелік ERROR. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: level,message. Перевірити: рівень INFO, WARNING або ERROR, текст повідомлення. Обчислити й вивести кількість записів за рівнями та окремий перелік ERROR. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: level,message. Перевірити: рівень INFO, WARNING або ERROR, текст повідомлення. Обчислити й вивести кількість записів за рівнями та окремий перелік ERROR. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 28. Прокат авто
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: car,start,end. Перевірити: код, дати ISO, start<end. Обчислити й вивести пари конфліктних бронювань одного авто для напіввідкритих інтервалів. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: car,start,end. Перевірити: код, дати ISO, start<end. Обчислити й вивести пари конфліктних бронювань одного авто для напіввідкритих інтервалів. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: car,start,end. Перевірити: код, дати ISO, start<end. Обчислити й вивести пари конфліктних бронювань одного авто для напіввідкритих інтервалів. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 29. Опитування
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: question,answer. Перевірити: код питання, відповідь A, B або C. Обчислити й вивести кількості та відсотки відповідей для кожного питання, порожню групу не ділити на нуль. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: question,answer. Перевірити: код питання, відповідь A, B або C. Обчислити й вивести кількості та відсотки відповідей для кожного питання, порожню групу не ділити на нуль. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: question,answer. Перевірити: код питання, відповідь A, B або C. Обчислити й вивести кількості та відсотки відповідей для кожного питання, порожню групу не ділити на нуль. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Варіант 30. Меню їдальні
1. Початковий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: day,dish,kcal. Перевірити: день 1..7, назва, невід’ємна ціла умовна калорійність. Обчислити й вивести сумарну калорійність за днем; показники навчальні, не рекомендації харчування. Для табличних даних читати UTF-8 CSV із розділювачем ;, для папок виконати описаний обхід. Подати два pytest-тести обчислення.
2. Базовий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: day,dish,kcal. Перевірити: день 1..7, назва, невід’ємна ціла умовна калорійність. Обчислити й вивести сумарну калорійність за днем; показники навчальні, не рекомендації харчування. Організувати код у пакет із точкою входу -m та argparse. Для табличних даних читати JSON-масив об’єктів; файлові задачі приймають шляхи. Зберегти результат у JSON за окремим шляхом. Додати pytest-тести успіху, порожніх даних і помилки.
3. Високий рівень. Створити консольну програму з анотованими функціями. Вхід передавати шляхом у командному рядку; поля або параметри: day,dish,kcal. Перевірити: день 1..7, назва, невід’ємна ціла умовна калорійність. Обчислити й вивести сумарну калорійність за днем; показники навчальні, не рекомендації харчування. Організувати пакет із argparse та --help; табличний вхід CSV або JSON обирати опцією. Зберегти результат у JSON та CSV; для складних груп CSV містить один рядок на елемент. Перевіряти весь вхід до запису, зберігати старий вихід при помилці даних. Обов’язкові pytest із tmp_path, параметризацією та raises; щонайменше п’ять випадків.
Порядок виконання та захисту роботи
- Визначте структуру пакета, контракт кожної функції та схему файлів із прикладами правильного й неправильного запису.
- Реалізуйте чисті обчислення окремо від читання, запису та CLI. Використовуйте явне кодування й
withдля ресурсів. - Додайте pytest-тести нормальних, порожніх, граничних і неправильних даних. Для файлових сценаріїв застосуйте
tmp_path. - Перевірте точний результат, типи після відновлення та збереження старого виходу при помилці вхідних даних.
- Запустіть однаковий набір із термінала й PyCharm, поясніть параметризований випадок і повідомлення навмисно зламаного тесту.
- Подайте локальний Git-репозиторій із кодом, README, прикладами даних та залежностями; виключіть середовище й кеші. GitHub необов’язковий. На захисті продемонструйте запуск
-mі--help.