Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Усі дані синтетичні; кожен CSV має заданий у задачі контракт, а показники – явні одиниці.
Варіанти
Варіант 1. Температури аудиторій
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає температури від -40 до 60 °C; для 1–1000 записів обчислює середнє, мінімум і максимум та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою room,date,value; дата ISO, value у °C від -40 до 60; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує середні температури за аудиторіями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою room,date,value; дата ISO, value у °C від -40 до 60. Перевірити контракт і реалізувати добовий профіль кожної аудиторії, дні поза заданим через --limit порогом і лінійний графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 2. Добові опади
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає невід’ємні добові опади до 500 мм; для 1–1000 записів обчислює суму опадів і число сухих днів та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою station,date,value; дата ISO, опади 0–500 мм; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує суми й кількість сухих днів за станціями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою station,date,value; дата ISO, опади 0–500 мм. Перевірити контракт і реалізувати місячні суми з явною позначкою пропущених днів, найбільшу триденну суму лише за повними вікнами та стовпчиковий графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 3. Енергія приміщень
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає енергію за незалежні інтервали від 0 до 1000 кВт·год; для 1–1000 записів обчислює суму й частку кожного інтервалу, для нульової суми частки нульові та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою room,date,value; дата ISO, інтервальна енергія 0–1000 кВт·год; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує сумарне споживання за приміщеннями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою room,date,value; дата ISO, інтервальна енергія 0–1000 кВт·год. Перевірити контракт і реалізувати з’єднання з довідником room,area з додатною площею, перевірку many_to_one, кВт·год на квадратний метр і графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 4. Позики бібліотеки
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі тривалості позик від 0 до 365 днів; для 1–1000 записів обчислює медіану й кількість позик довше 14 днів та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою category,date,value; дата ISO, цілі тривалості 0–365 днів; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує медіани й частки позик довше 14 днів за категоріями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою category,date,value; дата ISO, цілі тривалості 0–365 днів. Перевірити контракт і реалізувати поріг --days від 1 до 365, таблицю часток і гістограму тривалості з явно підписаними інтервалами. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 5. Навчальні продажі
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає невід’ємні цілі суми позицій до 1000000 копійок; для 1–1000 записів обчислює загальну суму та найбільшу позицію в гривнях і копійках та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою category,date,qty,price; дата ISO, qty ціле 1–1000, price ціле 0–100000 копійок; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує виручку за категоріями без float-грошової арифметики. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою category,date,qty,price; дата ISO, qty ціле 1–1000, price ціле 0–100000 копійок. Перевірити контракт і реалізувати добову виручку, частки категорій і графік; контроль рівності загальної суми до й після групування. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 6. Відвідування занять
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає кількості присутніх і загальні кількості, цілі 0≤present≤total≤100 з total>0; для 1–1000 записів обчислює зважену частку присутніх та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою group,date,present,total; дата ISO, цілі 0≤present≤total≤100, total>0; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує частки sum(present)/sum(total) за групами. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою group,date,present,total; дата ISO, цілі 0≤present≤total≤100, total>0. Перевірити контракт і реалізувати порівняння груп і тижнів, перевірку повторів group,date, стовпчиковий графік часток 0–100 відсотків. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 7. Велопрокат
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає тривалості поїздок від 1 до 1440 хвилин; для 1–1000 записів обчислює середню тривалість і 90-й процентиль та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою station,date,value; дата ISO, тривалості 1–1440 хвилин; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує кількість і середню тривалість за станціями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою station,date,value; дата ISO, тривалості 1–1440 хвилин. Перевірити контракт і реалізувати порівняння робочих і вихідних днів, процентилі з явно заданим методом linear і гістограму. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 8. Вологість теплиці
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає показання вологості від 0 до 100 відсотків; для 1–1000 записів обчислює середнє та кількість значень поза 40–70 та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою zone,date,value; дата ISO, вологість 0–100 відсотків; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує частки показань поза 40–70 за зонами. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою zone,date,value; дата ISO, вологість 0–100 відсотків. Перевірити контракт і реалізувати налаштовувані --low і --high у 0–100, добові мінімум/максимум і графік з лініями порогів. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 9. Затримки автобуса
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає затримки від -30 до 180 хвилин, від’ємні означають раннє прибуття; для 1–1000 записів обчислює медіану і частку прибуттів у межах ±5 хвилин та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою route,date,value; дата ISO, затримки -30–180 хвилин; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує медіани й частки прибуттів у межах ±5 хвилин за маршрутами. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою route,date,value; дата ISO, затримки -30–180 хвилин. Перевірити контракт і реалізувати порівняння дня тижня, кількість ранніх прибуттів окремо від запізнень і гістограму. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 10. Замовлення їдальні
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі кількості страв від 0 до 500; для 1–1000 записів обчислює суму і частку ненульових замовлень та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою dish,date,value; дата ISO, цілі кількості 0–500; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує суми й рейтинг страв з алфавітним порядком за рівних сум. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою dish,date,value; дата ISO, цілі кількості 0–500. Перевірити контракт і реалізувати матрицю dish×date через pivot_table, пропущені дні як невідомі, рейтинг --top і стовпчиковий графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 11. Залишки складу
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі залишки від 0 до 100000 одиниць; для 1–1000 записів обчислює мінімум і кількість залишків нижче 10 та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою item,date,value; дата ISO, цілі залишки 0–100000; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує останній за датою залишок кожного товару, не суму залишків. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою item,date,value; дата ISO, цілі залишки 0–100000. Перевірити контракт і реалізувати довідник item,min_stock, перевірку унікальності ключа й порівняння останнього залишку з нормою та графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 12. Тренування друку
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає швидкості від 0 до 500 символів за хвилину; для 1–1000 записів обчислює середнє і стандартне відхилення з ddof=0 та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою student,date,speed,errors; дата ISO, speed 0–500, errors ціле 0–100; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує середню швидкість і суму помилок за учасником. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою student,date,speed,errors; дата ISO, speed 0–500, errors ціле 0–100. Перевірити контракт і реалізувати зміну між першим і останнім тренуванням, явно обробивши випадок одного виміру, діаграму розсіювання speed/errors. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 13. Витрата води
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає невід’ємні об’єми за інтервали до 10000 літрів; для 1–1000 записів обчислює суму і середнє, не трактуючи їх як накопичені показники, та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою meter,date,value; дата ISO, накопичені показання 0–1000000 літрів; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує різниці сусідніх впорядкованих показань; зменшення відхиляти. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою meter,date,value; дата ISO, накопичені показання 0–1000000 літрів. Перевірити контракт і реалізувати перевірку повторів meter,date, звіт відхилених скидань лічильника й графік інтервальної витрати. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 14. Швидкість мережі
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає невід’ємні швидкості до 10000 Мбіт/с; для 1–1000 записів обчислює медіану, мінімум і максимум та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою provider,date,download,upload; дата ISO, швидкості 0–10000 Мбіт/с; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує медіани обох швидкостей за провайдером. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою provider,date,download,upload; дата ISO, швидкості 0–10000 Мбіт/с. Перевірити контракт і реалізувати довідник тарифних download-limit, перевірку many_to_one, частку досягнення 80 відсотків заявленої швидкості та графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 15. Завантаження CPU
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає відсотки використання від 0 до 100; для 1–1000 записів обчислює середнє та частку показань понад 80 та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою host,time,value; ISO-час YYYY-MM-DD HH:MM, CPU 0–100 відсотків; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує годинні середні за вузлами. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою host,time,value; ISO-час YYYY-MM-DD HH:MM, CPU 0–100 відсотків. Перевірити контракт і реалізувати перевірку повторних host,time, годинну кількість показань поряд із середнім і лінійний графік без заповнення пропусків нулями. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 16. Сонячні панелі
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає енергію окремих інтервалів від 0 до 100 кВт·год; для 1–1000 записів обчислює суму і номер найбільш продуктивного інтервалу та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою panel,date,value; дата ISO, інтервальна енергія 0–100 кВт·год; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує добові суми за панелями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою panel,date,value; дата ISO, інтервальна енергія 0–100 кВт·год. Перевірити контракт і реалізувати з’єднання з довідником panel,power з додатними кВт, нормалізований вихід кВт·год/кВт і графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 17. Навчальний контроль якості
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі кількості виробів і дефектів, 0≤defects≤total≤100000 з total>0; для 1–1000 записів обчислює загальну частку дефектів як відношення сум та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою line,date,defects,total; дата ISO, цілі 0≤defects≤total≤100000, total>0; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує зважені частки дефектів за лініями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою line,date,defects,total; дата ISO, цілі 0≤defects≤total≤100000, total>0. Перевірити контракт і реалізувати тижневі частки, кількість перевірених виробів і графік; не підмінювати зважування середнім денних відсотків. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 18. Час очікування
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає невід’ємні тривалості до 240 хвилин; для 1–1000 записів обчислює медіану, 90-й процентиль і число нульових очікувань та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою service,date,value; дата ISO, очікування 0–240 хвилин; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує медіани й 90-ті процентилі за послугами. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою service,date,value; дата ISO, очікування 0–240 хвилин. Перевірити контракт і реалізувати порівняння днів тижня та гістограму з однаковими межами інтервалів для всіх послуг. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 19. Навчальні тренування
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає тривалості від 1 до 300 хвилин; для 1–1000 записів обчислює суму й середню тривалість та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою activity,date,minutes; дата ISO, тривалість 1–300 хвилин; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує тижневі суми за активностями без медичних висновків. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою activity,date,minutes; дата ISO, тривалість 1–300 хвилин. Перевірити контракт і реалізувати календарну таблицю за ISO-тижнем і роком, перевірку меж року та стовпчиковий графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 20. Заряд батареї
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає рівні заряду від 0 до 100 відсотків; для 1–1000 записів обчислює різниці сусідніх рівнів та число збільшень та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою device,time,value; ISO-час YYYY-MM-DD HH:MM, заряд 0–100 відсотків; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує різниці рівнів у часовому порядку за пристроями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою device,time,value; ISO-час YYYY-MM-DD HH:MM, заряд 0–100 відсотків. Перевірити контракт і реалізувати темп зміни відсотків за годину лише для додатних часових інтервалів, повторні часові мітки відхиляти, лінійний графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 21. Послуги друку
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі обсяги від 1 до 10000 сторінок; для 1–1000 записів обчислює загальну кількість сторінок і середній розмір замовлення та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою mode,date,pages,price; дата ISO, pages ціле 1–10000, price ціле 0–10000 копійок за сторінку; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує сторінки й виручку за режимами без float-грошей. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою mode,date,pages,price; дата ISO, pages ціле 1–10000, price ціле 0–10000 копійок за сторінку. Перевірити контракт і реалізувати частку режимів у сторінках і виручці, два узгоджені стовпчикові графіки та перевірку сум. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 22. Зайнятість аудиторій
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає кількості зайнятих місць і місткості, цілі 0≤used≤capacity≤1000, capacity>0; для 1–1000 записів обчислює відношення сум зайнятих місць до місткостей та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою room,date,used,capacity; дата ISO, цілі 0≤used≤capacity≤1000, capacity>0; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує середню частку зайнятості за аудиторіями за сталих місткостей. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою room,date,used,capacity; дата ISO, цілі 0≤used≤capacity≤1000, capacity>0. Перевірити контракт і реалізувати виявлення суперечливих місткостей однієї аудиторії, рейтинг завантаження та графік часток. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 23. Доставка посилок
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі тривалості від 0 до 60 днів; для 1–1000 записів обчислює медіану й частку доставок не довше трьох днів та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою region,sent,delivered; обидві дати ISO, delivered не раніше sent, тривалість до 60 днів; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує медіану тривалості та кількість доставок за регіоном. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою region,sent,delivered; обидві дати ISO, delivered не раніше sent, тривалість до 60 днів. Перевірити контракт і реалізувати поріг --days 0–60, частку вчасних доставок і графік, записи без delivered показати окремо як незавершені. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 24. Настільні ігри
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі результати від 0 до 1000 балів; для 1–1000 записів обчислює середнє й місця за спаданням, рівні бали мають однакове місце та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою player,date,score; дата ISO, цілі бали 0–1000; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує середні бали та кількість партій за гравцем. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою player,date,score; дата ISO, цілі бали 0–1000. Перевірити контракт і реалізувати рейтинг з мінімальною кількістю партій через --min-games, окремий список виключених і стовпчиковий графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 25. Навчальні збори внесків
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі невід’ємні суми до 1000000 копійок; для 1–1000 записів обчислює суму, медіану та кількість нульових внесків та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою campaign,date,cents; дата ISO, цілі суми 0–1000000 копійок, лише штучні записи; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує суми внесків за кампаніями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою campaign,date,cents; дата ISO, цілі суми 0–1000000 копійок, лише штучні записи. Перевірити контракт і реалізувати накопичені добові підсумки, відсутність персональних даних, графік суми у часі та перевірку монотонності. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 26. Ріст дерев
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає висоти від 0 до 10000 см; для 1–1000 записів обчислює середню висоту та розмах та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою tree,date,height; дата ISO, висота 0–10000 см; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує приріст між першим і останнім вимірюванням кожного дерева. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою tree,date,height; дата ISO, висота 0–10000 см. Перевірити контракт і реалізувати перевірку повторів tree,date, темп приросту за день лише для додатного інтервалу, одиничні вимірювання окремо та графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 27. Освітленість
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає значення від 0 до 200000 люкс; для 1–1000 записів обчислює мінімум, максимум і частку нижче 300 та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою room,time,value; ISO-час YYYY-MM-DD HH:MM, освітленість 0–200000 люкс; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує годинні медіани за приміщеннями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою room,time,value; ISO-час YYYY-MM-DD HH:MM, освітленість 0–200000 люкс. Перевірити контракт і реалізувати поріг --limit у межах діапазону, кількість показань нижче порога, графік з пороговою лінією без нормативних висновків. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 28. Навчальні датчики повітря
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає умовні показання від 0 до 1000 одиниць; для 1–1000 записів обчислює медіану й кількість пропусків, переданих як NaN, середнє лише скінченних; без скінченних значень повідомити відсутність даних та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою sensor,date,value; дата ISO, умовна величина 0–1000; пропуски дозволені й обліковуються; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує середні та кількості наявних і пропущених показань за датчиками. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою sensor,date,value; дата ISO, умовна величина 0–1000; пропуски дозволені й обліковуються. Перевірити контракт і реалізувати частку пропусків, фільтр --max-missing від 0 до 1, графік і явний звіт виключених датчиків без висновків про здоров’я. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 29. Синтетичні відвідування сайту
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає цілі кількості відвідувань від 0 до 1000000; для 1–1000 записів обчислює суму та найбільший денний показник та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою page,date,visits; дата ISO, visits ціле 0–1000000, лише синтетичні лічильники; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує суми за сторінками і днями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою page,date,visits; дата ISO, visits ціле 0–1000000, лише синтетичні лічильники. Перевірити контракт і реалізувати перевірку повторів page,date, семиденне ковзне середнє лише повних календарних вікон і лінійний графік. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Варіант 30. Повтори лабораторного досліду
1. Початковий рівень. Створити консольну програму з NumPy, яка з клавіатури читає скінченні виміри в межах ±1000000 умовних одиниць; для 1–1000 записів обчислює середнє, std з ddof=0 і відхилення від середнього та друкує результат. Перевірити розміри й допустимість введення.
2. Базовий рівень. Створити програму pandas, яка приймає шлях UTF-8 CSV зі схемою series,repeat,value; repeat додатне ціле, value скінченне в межах ±1000000, ключ series,repeat унікальний; перевіряє стовпці, діапазони й непорожні текстові ключі, повідомляє причини відхилення та друкує середні, std з ddof=0 та кількості повторів за серіями. Для порожнього коректного набору вивести повідомлення замість хибного підсумку.
3. Високий рівень. Створити застосунок NumPy/pandas/Matplotlib для локального CSV зі схемою series,repeat,value; repeat додатне ціле, value скінченне в межах ±1000000, ключ series,repeat унікальний. Перевірити контракт і реалізувати допуск --tolerance ≥ 0, частку відхилень від середнього понад допуск, гістограму й таблицю; не трактувати std як похибку середнього. Додати --help, шлях CSV і каталог результатів через аргументи, явну політику пропусків, звіт помилкових рядків, CSV-підсумок і PNG із підписами та одиницями. Не перезаписувати наявні файли без опції --overwrite. Помилки виводити в stderr, коди: 0 успіх, 2 неправильний вхід. Додати щонайменше п’ять тестів pytest для нормального, порожнього, граничного, пропущеного та некоректного випадків; функції анотувати.
Порядок виконання та захисту роботи
- Створіть проєкт Python 3.14 із NumPy, pandas, Matplotlib і pytest; зафіксуйте версії та збережіть невеликий синтетичний набір даних.
- Запишіть схему CSV, одиниці, допустимі межі, правила пропусків, повторів і порожнього результату; відокремте перевірку від аналізу.
- Реалізуйте функції з анотаціями; поясніть форму масивів і вибір axis, ключі групування та спосіб з’єднання довідників.
- Зіставте підсумок із ручним обчисленням. Перевірте баланс прийнятих і відхилених записів, граничний та неправильний вхід.
- Побудуйте графік із підписами й одиницями, придатний до монохромного друку. Переконайтеся, що всі підписи видно в збереженому PNG.
- Для високого рівня додайте pytest,
--help, контроль перезапису вихідних файлів,stderrі коди завершення; продемонструйте CLI. - У звіті наведіть код, дані, таблицю тестів, графік і висновок про межі навчальної моделі. Зробіть коміт із відтворюваними матеріалами.