Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Усі завдання є графічними застосунками Python 3.14/PySide6. Зберігайте предметні обчислення в окремих типізованих функціях, показуйте помилки у формі, використовуйте компонування. Неправильне введення не повинно закривати програму або залишати хибний результат без пояснення. Зовнішні API не потрібні.
Варіанти
Варіант 1. Калькулятор ІМТ
1. Початковий рівень. Створити графічний застосунок PySide6 з полями QDoubleSpinBox для маси 1–300 кг і зросту 0.5–2.5 м; показати індекс m / h ** 2 з двома знаками. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Калькулятор ІМТ» з полями QDoubleSpinBox для маси 1–300 кг і зросту 0.5–2.5 м; показати індекс m / h ** 2 з двома знаками; додати миттєвий перерахунок і текстовий інтервал індексу: нижче 18.5, 18.5–25, 25–30, від 30; ліва межа включна. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Калькулятор ІМТ» з полями QDoubleSpinBox для маси 1–300 кг і зросту 0.5–2.5 м; показати індекс m / h ** 2 з двома знаками; реалізувати миттєвий перерахунок і текстовий інтервал індексу: нижче 18.5, 18.5–25, 25–30, від 30; ліва межа включна; також реалізувати історію введень у QListWidget, видалення вибраного й очищення; зберігати історію JSON. Позначити результат навчальним, не медичною рекомендацією. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 2. Конвертер валют
1. Початковий рівень. Створити графічний застосунок PySide6 з QComboBox для UAH та EUR і полем суми; використати навчальний курс 45 UAH за EUR. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Конвертер валют» з QComboBox для UAH та EUR і полем суми; використати навчальний курс 45 UAH за EUR; додати двосторонній вибір валют UAH/EUR/USD за фіксованими курсами 1/45/40 UAH, кнопку обміну напрямку та перевірку невід’ємної суми. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Конвертер валют» з QComboBox для UAH та EUR і полем суми; використати навчальний курс 45 UAH за EUR; реалізувати двосторонній вибір валют UAH/EUR/USD за фіксованими курсами 1/45/40 UAH, кнопку обміну напрямку та перевірку невід’ємної суми, а також редагування навчальних курсів, історію конвертацій і збереження JSON; обчислення виконувати Decimal з округленням до копійки; не підключати мережеві курси. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 3. Секундомір
1. Початковий рівень. Створити графічний застосунок PySide6 з кнопками старту й паузи та QLabel фактичного часу perf_counter, оновлюваним QTimer. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Секундомір» з кнопками старту й паузи та QLabel фактичного часу perf_counter, оновлюваним QTimer; додати скидання й QListWidget кіл; паузу не додавати до часу, заборонити коло на паузі. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Секундомір» з кнопками старту й паузи та QLabel фактичного часу perf_counter, оновлюваним QTimer; реалізувати скидання й QListWidget кіл; паузу не додавати до часу, заборонити коло на паузі; також реалізувати гарячі клавіші, найкраще коло та експорт кіл CSV; показати окремо тривалість кола й загальний час. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 4. Таймер Pomodoro
1. Початковий рівень. Створити графічний застосунок PySide6 з QSpinBox тривалості 1–120 хвилин, кнопкою старту і показом залишку через QTimer. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Таймер Pomodoro» з QSpinBox тривалості 1–120 хвилин, кнопкою старту і показом залишку через QTimer; додати паузу, скидання, окремі інтервали роботи й відпочинку та автоматичне перемикання станів. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Таймер Pomodoro» з QSpinBox тривалості 1–120 хвилин, кнопкою старту і показом залишку через QTimer; реалізувати паузу, скидання, окремі інтервали роботи й відпочинку та автоматичне перемикання станів, а також QMainWindow із меню налаштувань, лічильником завершених робочих циклів і історією JSON; час рахувати від монотонних моментів, а не числа timeout. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 5. Калькулятор
1. Початковий рівень. Створити графічний застосунок PySide6 з двома числовими полями й кнопками чотирьох арифметичних операцій у QGridLayout. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Калькулятор» з двома числовими полями й кнопками чотирьох арифметичних операцій у QGridLayout; додати історію результатів, очищення і повідомлення про ділення на нуль; вирази не виконувати через eval. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Калькулятор» з двома числовими полями й кнопками чотирьох арифметичних операцій у QGridLayout; реалізувати історію результатів, очищення і повідомлення про ділення на нуль; вирази не виконувати через eval; також реалізувати керування з клавіатури, повтор використаного результату й експорт історії; окремий стан операндів, операції та очікування введення. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 6. Список справ
1. Початковий рівень. Створити графічний застосунок PySide6 з QLineEdit, QListWidget та кнопкою додавання непорожнього тексту. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Список справ» з QLineEdit, QListWidget та кнопкою додавання непорожнього тексту; додати позначення виконаних, видалення вибраного та фільтр усі/активні/виконані; дані зберігати незалежно від фільтра. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Список справ» з QLineEdit, QListWidget та кнопкою додавання непорожнього тексту; реалізувати позначення виконаних, видалення вибраного та фільтр усі/активні/виконані; дані зберігати незалежно від фільтра; також реалізувати форму Designer з pyside6-uic, збереження JSON і відновлення стану; відхиляти неправильну структуру файла без втрати поточного списку. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 7. Конвертер одиниць
1. Початковий рівень. Створити графічний застосунок PySide6 з полем довжини в метрах та QLabel сантиметрів, які оновлюються сигналом. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Конвертер одиниць» з полем довжини в метрах та QLabel сантиметрів, які оновлюються сигналом; додати категорії довжина/маса, одиниці m/cm/km та kg/g, зміну напрямку без рекурсивних сигналів. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Конвертер одиниць» з полем довжини в метрах та QLabel сантиметрів, які оновлюються сигналом; реалізувати категорії довжина/маса, одиниці m/cm/km та kg/g, зміну напрямку без рекурсивних сигналів, а також історію й користувацькі додатні коефіцієнти одиниць у JSON; блокувати несумісні категорії, пояснювати одиниці в кожному полі. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 8. Генератор паролів
1. Початковий рівень. Створити графічний застосунок PySide6 з QSlider довжини 8–64 і кнопкою генерації через secrets із латинських літер та цифр. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Генератор паролів» з QSlider довжини 8–64 і кнопкою генерації через secrets із латинських літер та цифр; додати QCheckBox наборів літер/цифр/символів, заборону порожнього набору й копіювання в буфер обміну. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Генератор паролів» з QSlider довжини 8–64 і кнопкою генерації через secrets із латинських літер та цифр; реалізувати QCheckBox наборів літер/цифр/символів, заборону порожнього набору й копіювання в буфер обміну, а також гарантію хоча б одного символу кожного вибраного набору, перевірку достатньої довжини та кнопку приховування; не зберігати створені паролі у файлах. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 9. Кредитний калькулятор
1. Початковий рівень. Створити графічний застосунок PySide6 з полями суми, місячної ставки й кількості місяців; обчислити рівний платіж ануїтету, при ставці 0 суму поділити на місяці. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Кредитний калькулятор» з полями суми, місячної ставки й кількості місяців; обчислити рівний платіж ануїтету, при ставці 0 суму поділити на місяці; додати таблицю QTableWidget платежів із відсотками й погашенням боргу та перевірку додатної суми і строку. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Кредитний калькулятор» з полями суми, місячної ставки й кількості місяців; обчислити рівний платіж ануїтету, при ставці 0 суму поділити на місяці; реалізувати таблицю QTableWidget платежів із відсотками й погашенням боргу та перевірку додатної суми і строку, а також експорт CSV, останній платіж з корекцією округлення та порівняння двох навчальних сценаріїв; пояснити одиниці ставки й не трактувати модель як банківську пропозицію. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 10. Вікторина
1. Початковий рівень. Створити графічний застосунок PySide6 з одним питанням із QRadioButton та кнопкою перевірки відповіді. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Вікторина» з одним питанням із QRadioButton та кнопкою перевірки відповіді; додати щонайменше п’ять питань, QProgressBar, рахунок і неможливість двічі зарахувати відповідь. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Вікторина» з одним питанням із QRadioButton та кнопкою перевірки відповіді; реалізувати щонайменше п’ять питань, QProgressBar, рахунок і неможливість двічі зарахувати відповідь, а також завантаження перевіреного JSON набору, перемішування питань зі збереженням правильних відповідей і повторне проходження; після завершення показати помилки. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 11. Замовлення піци
1. Початковий рівень. Створити графічний застосунок PySide6 з QComboBox розміру S/M/L із цінами 100/150/200 грн і підсумком. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Замовлення піци» з QComboBox розміру S/M/L із цінами 100/150/200 грн і підсумком; додати добавки через QCheckBox, кількість 1–20 і миттєву суму в цілих копійках. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Замовлення піци» з QComboBox розміру S/M/L із цінами 100/150/200 грн і підсумком; реалізувати добавки через QCheckBox, кількість 1–20 і миттєву суму в цілих копійках, а також кошик кількох позицій у QListWidget, редагування й видалення позиції та збереження чека JSON; усі навчальні тарифи показати в інтерфейсі. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 12. Нотатник
1. Початковий рівень. Створити графічний застосунок PySide6 з QPlainTextEdit, кнопками очищення та збереження у UTF-8 файл note.txt. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Нотатник» з QPlainTextEdit, кнопками очищення та збереження у UTF-8 файл note.txt; додати QMainWindow з меню, QAction й гарячими клавішами; питати перед відкиданням незбереженого тексту. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Нотатник» з QPlainTextEdit, кнопками очищення та збереження у UTF-8 файл note.txt; реалізувати QMainWindow з меню, QAction й гарячими клавішами; питати перед відкиданням незбереженого тексту; також реалізувати пошук вперед і назад, підрахунок збігів, відкриття через поле шляху та збереження; помилка файла не повинна знищувати текст, перед перезаписом чужого файла запитати підтвердження. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 13. Світовий годинник
1. Початковий рівень. Створити графічний застосунок PySide6 з QComboBox поясів UTC, Europe/Paris, Europe/London та QLabel часу, оновлюваним QTimer. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Світовий годинник» з QComboBox поясів UTC, Europe/Paris, Europe/London та QLabel часу, оновлюваним QTimer; додати список кількох вибраних поясів і дату для кожного; використовувати zoneinfo, а не постійні зсуви. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Світовий годинник» з QComboBox поясів UTC, Europe/Paris, Europe/London та QLabel часу, оновлюваним QTimer; реалізувати список кількох вибраних поясів і дату для кожного; використовувати zoneinfo, а не постійні зсуви; також реалізувати редагування списку поясів, збереження JSON та порівняння часу у вибраний момент UTC; якщо системна база поясів відсутня, використати залежність tzdata. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 14. Міксер кольорів
1. Початковий рівень. Створити графічний застосунок PySide6 з трьома QSlider RGB 0–255 і прямокутним попереднім переглядом кольору. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Міксер кольорів» з трьома QSlider RGB 0–255 і прямокутним попереднім переглядом кольору; додати числові поля, двосторонню синхронізацію без циклу сигналів і HEX-код із копіюванням. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Міксер кольорів» з трьома QSlider RGB 0–255 і прямокутним попереднім переглядом кольору; реалізувати числові поля, двосторонню синхронізацію без циклу сигналів і HEX-код із копіюванням, а також палітру з іменованих кольорів, видалення й JSON-збереження; перевірити формат HEX і показувати колір разом із текстовими каналами. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 15. Анкета учасника
1. Початковий рівень. Створити графічний застосунок PySide6 з QFormLayout з ім’ям та віком 16–100 і кнопкою надсилання непорожньої форми. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Анкета учасника» з QFormLayout з ім’ям та віком 16–100 і кнопкою надсилання непорожньої форми; додати прапорець згоди, вибір секції QComboBox і власний Signal(str,int), який надсилається лише за коректних даних. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Анкета учасника» з QFormLayout з ім’ям та віком 16–100 і кнопкою надсилання непорожньої форми; реалізувати прапорець згоди, вибір секції QComboBox і власний Signal(str,int), який надсилається лише за коректних даних, а також кілька форм у вкладках або групах, підсумковий перегляд і JSON-збереження; всі зміни готовності повідомляти власним сигналом, без повторних підключень. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 16. Хрестики-нулики
1. Початковий рівень. Створити графічний застосунок PySide6 з сіткою 3 на 3 QPushButton для почергових X та O, блокуванням зайнятої клітинки. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Хрестики-нулики» з сіткою 3 на 3 QPushButton для почергових X та O, блокуванням зайнятої клітинки; додати визначення перемоги у рядках, стовпцях і діагоналях, нічиєї та нову гру. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Хрестики-нулики» з сіткою 3 на 3 QPushButton для почергових X та O, блокуванням зайнятої клітинки; реалізувати визначення перемоги у рядках, стовпцях і діагоналях, нічиєї та нову гру, а також рахунок серії, скасування останнього ходу й збереження історії JSON; перевірити завершення гри та відновлення коректного гравця після скасування. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 17. Калорії дня
1. Початковий рівень. Створити графічний застосунок PySide6 з полями навчальної енергетичної цінності на 100 г і маси порції, підписом результату. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Калорії дня» з полями навчальної енергетичної цінності на 100 г і маси порції, підписом результату; додати список порцій, видалення, суму й QProgressBar щодо заданої користувачем цілі; не обрізати числову суму при перевищенні. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Калорії дня» з полями навчальної енергетичної цінності на 100 г і маси порції, підписом результату; реалізувати список порцій, видалення, суму й QProgressBar щодо заданої користувачем цілі; не обрізати числову суму при перевищенні; також реалізувати JSON-каталог продуктів, вибір дати та історію; межі полів перевіряти й при завантаженні, підсумки позначити навчальними розрахунками. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 18. Клавіатурний тренажер
1. Початковий рівень. Створити графічний застосунок PySide6 з QLabel з еталоном та QLineEdit, підписом числа позиційних розбіжностей. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Клавіатурний тренажер» з QLabel з еталоном та QLineEdit, підписом числа позиційних розбіжностей; додати початок виміру на першому символі, фактичний час і швидкість символів за хвилину; порожній текст дає нуль. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Клавіатурний тренажер» з QLabel з еталоном та QLineEdit, підписом числа позиційних розбіжностей; реалізувати початок виміру на першому символі, фактичний час і швидкість символів за хвилину; порожній текст дає нуль; також реалізувати набір вправ у JSON, список завершених спроб і рейтинг; перезапуск скидає стан, виправлення символів перераховує помилки без подвійного накопичення. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 19. Системи числення
1. Початковий рівень. Створити графічний застосунок PySide6 з полем цілого десяткового числа і підписами двійкового та шістнадцяткового записів. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Системи числення» з полем цілого десяткового числа і підписами двійкового та шістнадцяткового записів; додати редаговані три поля, валідацію допустимих цифр і синхронізацію без циклу сигналів. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Системи числення» з полем цілого десяткового числа і підписами двійкового та шістнадцяткового записів; реалізувати редаговані три поля, валідацію допустимих цифр і синхронізацію без циклу сигналів, а також вибір основи 2–36, історію перетворень і JSON-експорт; окремо обробити знак та незавершений запис, не викликати eval. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 20. Ігрові кубики
1. Початковий рівень. Створити графічний застосунок PySide6 з QSpinBox кількості кубиків 1–10 та кнопкою кидання і показом значень 1–6. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Ігрові кубики» з QSpinBox кількості кубиків 1–10 та кнопкою кидання і показом значень 1–6; додати історію сум, Counter частот і скидання статистики при зміні кількості кубиків. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Ігрові кубики» з QSpinBox кількості кубиків 1–10 та кнопкою кидання і показом значень 1–6; реалізувати історію сум, Counter частот і скидання статистики при зміні кількості кубиків, а також серію до 10000 кидків короткими кроками QTimer, прогрес і скасування; тестувати обчислення з переданим генератором випадкових чисел і фіксованим seed. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 21. Рахунок і чайові
1. Початковий рівень. Створити графічний застосунок PySide6 з полями рахунку у копійках і QSlider відсотка 0–30, підписом повної суми. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Рахунок і чайові» з полями рахунку у копійках і QSlider відсотка 0–30, підписом повної суми; додати кількість людей 1–100 та рівний розподіл цілих копійок із поясненням залишку. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Рахунок і чайові» з полями рахунку у копійках і QSlider відсотка 0–30, підписом повної суми; реалізувати кількість людей 1–100 та рівний розподіл цілих копійок із поясненням залишку, а також історію рахунків, індивідуальний розподіл залишкових копійок першим учасникам та CSV-експорт; сума часток має дорівнювати сумі до сплати. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 22. Будильник
1. Початковий рівень. Створити графічний застосунок PySide6 з QTimeEdit часу і кнопкою ввімкнення, перевіркою часу раз на секунду QTimer. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Будильник» з QTimeEdit часу і кнопкою ввімкнення, перевіркою часу раз на секунду QTimer; додати кілька будильників у QListWidget, видалення і прапорці активності; кожний спрацьовує не більш як раз на дату. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Будильник» з QTimeEdit часу і кнопкою ввімкнення, перевіркою часу раз на секунду QTimer; реалізувати кілька будильників у QListWidget, видалення і прапорці активності; кожний спрацьовує не більш як раз на дату; також реалізувати відкладення на 1–30 хвилин, JSON-збереження і політику пропущеного часу: не програвати минулі сповіщення після запуску; показувати повідомлення в інтерфейсі. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 23. Конкурсний бал вступника
1. Початковий рівень. Створити графічний застосунок PySide6 з трьома оцінками QSpinBox 100–200 і середнім навчальним балом. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Конкурсний бал вступника» з трьома оцінками QSpinBox 100–200 і середнім навчальним балом; додати коефіцієнти QDoubleSpinBox із невід’ємними значеннями та сумою 1 з похибкою 1e-6; інакше вимкнути розрахунок. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Конкурсний бал вступника» з трьома оцінками QSpinBox 100–200 і середнім навчальним балом; реалізувати коефіцієнти QDoubleSpinBox із невід’ємними значеннями та сумою 1 з похибкою 1e-6; інакше вимкнути розрахунок; також реалізувати редаговані навчальні схеми ваг, порівняння сценаріїв і JSON-історію; не називати ці правила офіційними правилами вступу. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 24. Азбука Морзе
1. Початковий рівень. Створити графічний застосунок PySide6 з полем латинських літер A–Z та перекладом за заданим у коді словником Морзе. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Азбука Морзе» з полем латинських літер A–Z та перекладом за заданим у коді словником Морзе; додати двосторонній переклад літер і цифр, пробіл між кодами та / між словами; повідомляти позицію невідомого коду. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Азбука Морзе» з полем латинських літер A–Z та перекладом за заданим у коді словником Морзе; реалізувати двосторонній переклад літер і цифр, пробіл між кодами та / між словами; повідомляти позицію невідомого коду; також реалізувати історію, копіювання й JSON-словник із перевіркою унікальності кодів; невідомі символи не втрачати мовчки, тестувати обидва напрями. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 25. Витрати пального
1. Початковий рівень. Створити графічний застосунок PySide6 з полями відстані у км, витрати л/100 км та ціни за літр, підписами літрів і вартості. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Витрати пального» з полями відстані у км, витрати л/100 км та ціни за літр, підписами літрів і вартості; додати тип пального QRadioButton з навчальними цінами й власною ціною, перевірку невід’ємних значень. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Витрати пального» з полями відстані у км, витрати л/100 км та ціни за літр, підписами літрів і вартості; реалізувати тип пального QRadioButton з навчальними цінами й власною ціною, перевірку невід’ємних значень, а також маршрут із кількох ділянок, QListWidget, підсумок літрів і грошей, CSV-експорт; не усереднювати норми без ваг відстаней. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 26. Вгадай число
1. Початковий рівень. Створити графічний застосунок PySide6 з діапазоном 1–100, QSpinBox припущення та підказкою більше/менше/вгадано. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Вгадай число» з діапазоном 1–100, QSpinBox припущення та підказкою більше/менше/вгадано; додати вибір меж, історію спроб, лічильник та нову гру; після перемоги нові спроби заблокувати. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Вгадай число» з діапазоном 1–100, QSpinBox припущення та підказкою більше/менше/вгадано; реалізувати вибір меж, історію спроб, лічильник та нову гру; після перемоги нові спроби заблокувати; також реалізувати рівні складності, обмеження спроб і статистику JSON; для тестів передавати секретне число явно, перевірити межі діапазону. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 27. Квиток на рейс
1. Початковий рівень. Створити графічний застосунок PySide6 з QDateEdit дати не раніше сьогодні, QComboBox класу та кнопкою показу вибору. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Квиток на рейс» з QDateEdit дати не раніше сьогодні, QComboBox класу та кнопкою показу вибору; додати ім’я пасажира, кількість 1–9, навчальні тарифи економ/бізнес і підтвердження замовлення. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Квиток на рейс» з QDateEdit дати не раніше сьогодні, QComboBox класу та кнопкою показу вибору; реалізувати ім’я пасажира, кількість 1–9, навчальні тарифи економ/бізнес і підтвердження замовлення, а також кошик квитків, редагування й JSON-збереження; відхиляти порожні імена та минулі дати також при імпорті, кошти рахувати копійками. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 28. Трекер води
1. Початковий рівень. Створити графічний застосунок PySide6 з кнопками порцій 100, 200, 300 мл, загальним обсягом і QProgressBar щодо введеної цілі. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Трекер води» з кнопками порцій 100, 200, 300 мл, загальним обсягом і QProgressBar щодо введеної цілі; додати скасування останньої порції, скидання дня та історію прийомів; перевищення цілі показати числом. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Трекер води» з кнопками порцій 100, 200, 300 мл, загальним обсягом і QProgressBar щодо введеної цілі; реалізувати скасування останньої порції, скидання дня та історію прийомів; перевищення цілі показати числом; також реалізувати історію за датами в JSON, ручне введення порції й підтвердження очищення; ціль задає користувач, застосунок не визначає медичну норму. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 29. Галерея
1. Початковий рівень. Створити графічний застосунок PySide6 з полем шляху до локального зображення, QLabel для показу й повідомленням, якщо QPixmap порожній. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Галерея» з полем шляху до локального зображення, QLabel для показу й повідомленням, якщо QPixmap порожній; додати список PNG/JPEG із каталогу, кнопки попереднє/наступне та повзунок масштабу; зберігати пропорції. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Галерея» з полем шляху до локального зображення, QLabel для показу й повідомленням, якщо QPixmap порожній; реалізувати список PNG/JPEG із каталогу, кнопки попереднє/наступне та повзунок масштабу; зберігати пропорції; також реалізувати пошук за назвою, список обраних JSON і коректну поведінку після зникнення файла; великі зображення не дублювати без потреби в історії. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Варіант 30. Мікшерний пульт
1. Початковий рівень. Створити графічний застосунок PySide6 з трьома QSlider каналів 0–100 та підписом середнього рівня; це модель без відтворення аудіо. Використати компонування й зрозумілі підписи одиниць.
2. Базовий рівень. Створити графічний застосунок PySide6 «Мікшерний пульт» з трьома QSlider каналів 0–100 та підписом середнього рівня; це модель без відтворення аудіо; додати прапорці mute, власний Signal(int) сумарного рівня й індикатор; загальний рівень є середнім нем’ютованих або 0, якщо таких немає. Помилки показувати у формі, перевірити крайні значення.
3. Високий рівень. Створити графічний застосунок PySide6 «Мікшерний пульт» з трьома QSlider каналів 0–100 та підписом середнього рівня; це модель без відтворення аудіо; реалізувати прапорці mute, власний Signal(int) сумарного рівня й індикатор; загальний рівень є середнім нем’ютованих або 0, якщо таких немає; також реалізувати пресети каналів JSON, загальний множник 0–100 відсотків і скидання; блокувати зайві сигнали під час пакетного відновлення та надсилати один підсумковий сигнал. Відокремити типізовану логіку від віджетів, додати pytest-перевірки обчислень і сценарій перевірки сигналів; помилки не завершують застосунок.
Порядок виконання та захисту роботи
- Підготуйте
.venv, зафіксуйте версію PySide6 і перевірте вибраний інтерпретатор PyCharm. - Намалюйте ескіз форми, визначте типи полів, одиниці, межі та стан кнопок для порожнього введення.
- Реалізуйте й перевірте чисті функції обчислень до підключення інтерфейсу. Додайте анотації методів і слотів.
- Побудуйте форму, підключіть сигнали один раз, додайте зрозумілі повідомлення валідації й клавіатурний доступ.
- Перевірте звичайний випадок, межі, неправильне введення, повторні натискання, скидання та зміну розміру вікна. Для таймерів перевірте паузу й повторний старт.
- Збережіть код,
.ui, ресурси та README із запуском і фактичними результатами. Додайте pytest-перевірки обчислень для високого рівня та справжній скриншот Windows зі світлою темою. - На захисті поясніть дерево володіння, цикл подій, сигнатури сигналів, валідацію й спосіб уникнення блокування вікна.