Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
У цій роботі основний інтерфейс – консольне введення та меню. Використовуйте Python 3.14, PyCharm і стандартну бібліотеку. Створіть .venv, як у роботі 1; додаткові пакети не потрібні. Класи, спискові включення та власні універсальні функції перевірки не є обов’язковими: їх буде розглянуто в наступних темах. Для кожної програми явно задайте формат введення. Для додатних цілих перевіряйте довжину, ASCII-цифри й допустимі межі перед int. Для цілих зі знаком можна окремо відокремити один початковий мінус; рядок лише зі знаком неправильний. Для дійсних даних допускається контракт «коректний числовий запис із крапкою», але перевірки скінченності та предметної області обов’язкові. try/except не потрібні до теми 4. Усі тарифи, ставки й курси нижче навчальні.
Варіанти
Варіант 1. Високосний рік
1. Початковий рівень. Створити консольну програму Python. Ввести рік 1..9999. Визначити високосність: кратний 400 або кратний 4, але не 100. Вивести відповідь і кількість днів року.
2. Базовий рівень. Створити консольну програму Python. Ввести рік 1..9999 і місяць 1..12. Вивести кількість днів місяця з урахуванням високосності. Повторювати запит до року 0.
3. Високий рівень. Створити консольну програму Python. Створити меню: перевірка високосності, календар місяця, вихід. Для календаря ввести рік 1..9999, місяць 1..12 і номер дня тижня першого числа 1..7 (понеділок..неділя). Надрукувати сітку на сім стовпців із правильними відступами; календар будувати циклами, без модуля calendar.
Варіант 2. Прості числа
1. Початковий рівень. Створити консольну програму Python. Ввести ціле n від 2 до 100000. Перевірити простоту пошуком дільника до isqrt(n) включно; вивести пояснення результату.
2. Базовий рівень. Створити консольну програму Python. Ввести межі 0 <= a <= b <= 100000 з шириною до 1000. Вивести прості числа включно з межами, їх кількість і суму. 0 та 1 не вважати простими.
3. Високий рівень. Створити консольну програму Python. Створити меню перевірки простоти, розкладання на прості множники та пошуку простих у діапазоні. Числа 2..100000, ширина діапазону до 1000. Множники друкувати з повтореннями, наприклад 12 = 2 * 2 * 3; після операції повертатися до меню.
Варіант 3. Вгадай число
1. Початковий рівень. Створити консольну програму Python. Задати секрет 7. Запросити одне ціле число 1..20 та вивести, чи воно дорівнює секрету, менше або більше за нього.
2. Базовий рівень. Створити консольну програму Python. Обрати секрет randint(1, 100). Надати сім допустимих спроб, друкувати підказки більше/менше. Неправильний формат і значення поза 1..100 не витрачають спробу. Після завершення показати секрет і кількість спроб.
3. Високий рівень. Створити консольну програму Python. Створити меню гри з рівнями: 1..20 і 5 спроб, 1..100 і 7 спроб. Після кожної партії пропонувати нову або вихід. Рахувати перемоги, поразки й загальну кількість допустимих спроб. Неправильне введення спроб не витрачає. Передбачити контрольний режим із заданим секретом у межах рівня.
Варіант 4. Кредитний калькулятор
1. Початковий рівень. Створити консольну програму Python. Ввести суму P від 1 до 1000000 грн та строк n від 1 до 60 місяців. Для нульової ставки вивести платіж P/n з двома знаками.
2. Базовий рівень. Створити консольну програму Python. Ввести P=1..1000000 грн, річну ставку r=0..50 відсотків та n=1..60 місяців. Обчислити i=r/1200 і платіж A=P*i/(1-(1+i)**(-n)); при i=0 використати P/n. Вивести A та переплату A*n-P без проміжного округлення.
3. Високий рівень. Створити консольну програму Python. Для P=1..1000000 грн, r=0..50 відсотків та n=1..60 побудувати таблицю ануїтетних платежів: місяць, відсотки, погашення, залишок. i=r/1200, A=P*i/(1-(1+i)**(-n)), при i=0 A=P/n. Округляти відсотки й звичайний платіж до копійок Decimal ROUND_HALF_UP; останній платіж дорівнює залишку плюс відсотки. Вивести суму платежів і переплату; залишок після останнього має бути нуль.
Варіант 5. Шкала ECTS
1. Початковий рівень. Створити консольну програму Python. Ввести цілий бал 0..100. Вивести A для 90..100, B для 82..89, C для 74..81, D для 64..73, E для 60..63, FX для 35..59, F для 0..34.
2. Базовий рівень. Створити консольну програму Python. Ввести кількість студентів 1..50, потім бали 0..100. Перевести кожний бал за шкалою A:90..100, B:82..89, C:74..81, D:64..73, E:60..63, FX:35..59, F:0..34. Вивести оцінки, середній бал і кількість балів нижче 60.
3. Високий рівень. Створити консольну програму Python. Створити меню введення групи з 1..50 балів, звіту та виходу. Шкала: A від 90, B від 82, C від 74, D від 64, E від 60, FX від 35, F нижче 35; допустимо 0..100. Звіт містить кількість і відсоток кожної оцінки, мінімум, максимум і середнє. Нове введення групи скидає попередні підсумки; звіт до введення не ділить на нуль.
Варіант 6. Тарифи таксі
1. Початковий рівень. Створити консольну програму Python. Ввести додатну відстань до 500 км. Навчальна вартість дорівнює 60 грн посадки плюс 12 грн за кілометр. Вивести суму з двома знаками.
2. Базовий рівень. Створити консольну програму Python. Ввести відстань 0..500 км, тариф economy або comfort та годину 0..23. Посадка й кілометр: 60 і 12 грн або 90 і 18 грн. З 22:00 до 05:59 всю суму множити на 1.2. Вивести деталізацію.
3. Високий рівень. Створити консольну програму Python. Обробити зміну з 1..100 поїздок: відстань 0..500 км, година 0..23, economy/comfort. Тарифи 60+12*d або 90+18*d грн, ніч 22..23 і 0..5 дає множник 1.2. Друкувати рядок кожної поїздки, рахувати дохід, кілометри та нічні поїздки. Грошові підсумки складати з округлених до копійок рядків.
Варіант 7. Подільність чисел
1. Початковий рівень. Створити консольну програму Python. Ввести два додатні цілі числа до 1000000. Алгоритмом Евкліда обчислити НСД та вивести результат.
2. Базовий рівень. Створити консольну програму Python. Ввести два додатні цілі числа до 1000000. Обчислити НСД і НСК за формулою a//gcd*b; вивести всі додатні дільники меншого числа циклом.
3. Високий рівень. Створити консольну програму Python. Створити меню НСД/НСК двох чисел, дільників числа та перевірки досконалості. Аргументи 1..100000. Досконалим вважати число, рівне сумі своїх додатних дільників, менших за нього; 1 не є досконалим. Для кожної операції друкувати дані й результат, 0 у меню завершує роботу.
Варіант 8. Класифікація трикутника
1. Початковий рівень. Створити консольну програму Python. Ввести три додатні цілі сторони до 1000. Перевірити строгі нерівності трикутника й визначити рівносторонній, рівнобедрений або різносторонній тип.
2. Базовий рівень. Створити консольну програму Python. Ввести три додатні цілі сторони до 1000. Перевірити існування, визначити тип за сторонами, обчислити периметр і площу Герона sqrt(p*(p-a)*(p-b)*(p-c)), де p=(a+b+c)/2.
3. Високий рівень. Створити консольну програму Python. Для 1..20 наборів цілих сторін 1..1000 перевірити існування трикутника. Для допустимих обчислити площу Герона, кути в градусах через теорему косинусів та тип за кутами. Порівнювати квадрати цілих сторін точно; аргумент acos обмежувати інтервалом [-1,1]. Вивести таблицю й кількість відхилених наборів.
Варіант 9. Банкомат
1. Початковий рівень. Створити консольну програму Python. Ввести додатну суму до 10000 грн, кратну 100. Необмежені купюри 1000, 500, 200, 100 грн. Жадібним діленням вивести кількість кожного номіналу.
2. Базовий рівень. Створити консольну програму Python. Для суми 100..10000 грн, кратної 100, та початкового балансу 0..100000 грн перевірити достатність коштів. За необмежених купюр 1000, 500, 200, 100 видати мінімальну кількість купюр і показати новий баланс; при відмові баланс не змінювати.
3. Високий рівень. Створити консольну програму Python. Створити меню балансу, зняття та виходу. Початковий баланс 20000 грн, ліміт одного зняття 10000 грн, загальний ліміт сеансу 15000 грн. Купюри 1000, 500, 200, 100 необмежені; сума кратна 100. Показувати склад видачі, журнал як текст із номерами успішних операцій, підсумок виданої суми; відмови не змінюють баланс і ліміт.
Варіант 10. Комунальні платежі
1. Початковий рівень. Створити консольну програму Python. Ввести попередній і поточний невід’ємні цілі показники до 1000000. Поточний не менший за попередній. За ставкою 4 грн за одиницю обчислити споживання і суму.
2. Базовий рівень. Створити консольну програму Python. Для показників 0..1000000 із неспадним порядком обчислити споживання. Перші 100 одиниць коштують 3 грн кожна, решта 5 грн кожна. Вивести суму за кожною сходинкою й загальну суму.
3. Високий рівень. Створити консольну програму Python. Обробити 1..50 квартир із попереднім і поточним показниками 0..1000000. Перші 100 спожитих одиниць коштують 3 грн, наступні 5 грн. Надрукувати таблицю номер/споживання/сума, загальне споживання, дохід та кількість квартир зі споживанням понад 100. Некоректну пару запросити повторно.
Варіант 11. Шахова дошка
1. Початковий рівень. Створити консольну програму Python. Ввести рядок і стовпець двох клітинок цілими 1..8. Визначити, чи мають вони однаковий колір за парністю суми координат.
2. Базовий рівень. Створити консольну програму Python. Ввести дві різні клітинки координатами 1..8. Визначити, чи може кінь перейти з першої в другу одним ходом: модулі різниць координат 1 і 2 у довільному порядку.
3. Високий рівень. Створити консольну програму Python. Створити меню дошки атак коня або ферзя. Ввести позицію фігури координатами 1..8; надрукувати 8 рядків по 8 символів: K/Q для фігури, * для атакованих клітинок, . для решти. Інших фігур немає. Для ферзя використовувати спільний рядок, стовпець або діагональ; порахувати атаковані клітинки.
Варіант 12. Числа Армстронга
1. Початковий рівень. Створити консольну програму Python. Ввести ціле трицифрове число 100..999. Виділити цифри через // і %, перевірити рівність числа сумі кубів його цифр.
2. Базовий рівень. Створити консольну програму Python. Ввести межі 0 <= a <= b <= 9999. Вивести числа, рівні сумі своїх цифр у степені кількості цифр. Число 0 має одну цифру. Порахувати знайдені числа.
3. Високий рівень. Створити консольну програму Python. Створити меню перевірки числа 0..999999, пошуку в діапазоні шириною до 10000 та виходу. Число Армстронга дорівнює сумі цифр у степені їх кількості; 0 має одну цифру. Для пошуку вивести числа й окремі лічильники результатів із 1, 2, 3, 4, 5, 6 цифрами.
Варіант 13. Температури тижня
1. Початковий рівень. Створити консольну програму Python. Ввести сім скінченних температур від -60 до 60 градусів. Циклом обчислити середнє й вивести його з одним знаком після крапки.
2. Базовий рівень. Створити консольну програму Python. Ввести сім температур -60..60. Без зберігання всієї серії знайти середнє, мінімум, максимум і кількість температур нижче нуля. Перший вимір використати для ініціалізації екстремумів.
3. Високий рівень. Створити консольну програму Python. Ввести сім температур -60..60. Вивести номер дня і температуру, середнє, мінімум/максимум та дні їх першої появи. Порахувати підвищення, зниження та рівність відносно попереднього дня, а також найдовшу послідовність днів із температурою нижче нуля. Перший день не має попереднього порівняння.
Варіант 14. Системи числення
1. Початковий рівень. Створити консольну програму Python. Ввести ціле 0..65535. Перетворити його в двійковий запис повторним діленням на 2, без bin і format; для нуля вивести 0.
2. Базовий рівень. Створити консольну програму Python. Ввести ціле 0..65535 і основу 2..16. Повторним діленням отримати запис із цифрами 0123456789ABCDEF, без вбудованого перетворення систем числення.
3. Високий рівень. Створити консольну програму Python. Створити меню: десяткове 0..1000000 в основу 2..16 та запис довжиною 1..16 символів із заданої основи в десяткове. Допустимі цифри 0123456789ABCDEF без знака; приймати нижній регістр після upper. Перевіряти кожну цифру, значення накопичувати як value*base+digit. Не використовувати int(text, base), bin, oct, hex.
Варіант 15. Римські цифри
1. Початковий рівень. Створити консольну програму Python. Ввести ціле 1..10 і через match вивести римський запис I..X; решту значень відхилити.
2. Базовий рівень. Створити консольну програму Python. Ввести ціле 1..3999. Побудувати канонічний римський запис, послідовно віднімаючи 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 та додаючи M, CM, D, CD, C, XC, L, XL, X, IX, V, IV, I. Реалізація може використовувати послідовні while без колекцій.
3. Високий рівень. Створити консольну програму Python. Створити меню перетворення 1..3999 у римський запис та римського рядка довжиною до 15 символів у число. Дозволені IVXLCDM, пари віднімання IV, IX, XL, XC, CD, CM. Перевіряти канонічність зворотним перетворенням отриманого числа в римський запис і точним порівнянням після upper; відхиляти IIII, IC та порожній ввід.
Варіант 16. Прогресивний податок
1. Початковий рівень. Створити консольну програму Python. Для навчального доходу 0..1000000 грн обчислити податок 10 відсотків, показати податок і залишок із двома знаками.
2. Базовий рівень. Створити консольну програму Python. Ввести місячний дохід 0..1000000 грн. Навчальні граничні ставки: перші 10000 грн 0 відсотків, наступні 20000 грн 10 відсотків, решта 20 відсотків. Вивести податок за сходинками й чистий дохід.
3. Високий рівень. Створити консольну програму Python. Для 12 доходів по 0..1000000 грн застосувати до кожного місяця шкалу: перші 10000 без податку, наступні 20000 під 10 відсотків, решта під 20. Надрукувати місячний звіт, річний дохід, податок і чисту суму. Ефективна ставка дорівнює загальному податку/доходу*100; нульовий річний дохід обробити окремо. Це навчальні ставки.
Варіант 17. Штрафи за швидкість
1. Початковий рівень. Створити консольну програму Python. Ввести невід’ємну швидкість до 300 км/год і ліміт 1..130. Визначити величину перевищення або відсутність порушення.
2. Базовий рівень. Створити консольну програму Python. За швидкістю 0..300 і лімітом 1..130 обчислити навчальний штраф: перевищення до 10 включно 0 грн, понад 10 до 30 включно 500 грн, понад 30 1500 грн. Вивести перевищення і суму.
3. Високий рівень. Створити консольну програму Python. Опрацювати 1..100 замірів швидкості 0..300 км/год за спільного ліміту 1..130. Навчальні штрафи: перевищення <=10 дає 0, 10..30 із відкритою нижньою межею дає 500 грн, понад 30 дає 1500 грн. Вивести рядки замірів, кількість перевищень ліміту, кількість ненульових штрафів, їх суму й найбільше перевищення.
Варіант 18. Бігові тренування
1. Початковий рівень. Створити консольну програму Python. Ввести дистанцію 0.1..100 км і тривалість 1..1440 хв. Вивести середню швидкість у км/год та темп у хв/км.
2. Базовий рівень. Створити консольну програму Python. Для семи тренувань ввести дистанцію 0.1..100 км та час 1..1440 хв. Вивести темп кожного у хвилинах і секундах на кілометр, сумарну дистанцію й час. Секунди темпу округлити один раз перед divmod.
3. Високий рівень. Створити консольну програму Python. Для 1..30 тренувань із дистанцією 0.1..100 км та часом 1..1440 хв побудувати таблицю темпу, знайти найкращий (найменший) темп і номер першого тренування з ним. Загальний темп визначити як сумарний час/сумарна дистанція, а не середнє темпів. Вивести найдовшу дистанцію і сумарні показники.
Варіант 19. Кавовий автомат
1. Початковий рівень. Створити консольну програму Python. За командою espresso, americano або latte вивести навчальну ціну 30, 35 або 45 грн через match; іншу команду відхилити.
2. Базовий рівень. Створити консольну програму Python. Прийняти один напій espresso/americano/latte за 30/35/45 грн і цілу оплату 0..1000 грн. За достатньої оплати вивести решту мінімальною кількістю необмежених монет 10, 5, 2, 1 грн; за недостатньої повідомити нестачу.
3. Високий рівень. Створити консольну програму Python. Створити меню продажу: espresso 30 грн (10 г кави, 30 мл води), americano 35 (10 г, 150 мл), latte 45 (10 г, 30 мл, 150 мл молока). Початково 100 г кави, 1000 мл води, 1000 мл молока. Оплата цілими 0..1000 грн, решта монетами 10, 5, 2, 1 необмежена. Лише успішний продаж зменшує запаси; вивести дохід, кількість продажів і залишки перед виходом.
Варіант 20. Гіпотеза Колатца
1. Початковий рівень. Створити консольну програму Python. Ввести n=1..1000000. Виконати один крок: для парного n/2 цілочисельно, для непарного 3*n+1. Вивести нове число.
2. Базовий рівень. Створити консольну програму Python. Для n=1..1000000 друкувати послідовність Колатца до 1 або 1000 переходів. Парне ділити на 2, непарне замінювати 3*n+1. Вивести кількість переходів і максимум; досягнення ліміту відрізняти від досягнення 1.
3. Високий рівень. Створити консольну програму Python. Для 1 <= a <= b <= 10000 з шириною до 1000 обчислити кількість переходів Колатца для кожного старту з лімітом 1000. Вивести таблицю старт/кроки/статус і найменший старт із найбільшою кількістю кроків серед завершених. Лімітовані послідовності не вважати доведеним спростуванням гіпотези.
Варіант 21. Фігури із символів
1. Початковий рівень. Створити консольну програму Python. Ввести n=1..20. Вкладеними циклами надрукувати прямокутний трикутник із зірочок: у рядку i від 1 до n рівно i символів.
2. Базовий рівень. Створити консольну програму Python. Ввести ширину й висоту 2..30. Надрукувати порожню прямокутну рамку із *: символ лише на межі, пробіли всередині. Порахувати надруковані зірочки.
3. Високий рівень. Створити консольну програму Python. Створити меню трикутника, рамки та ромба. Трикутник має висоту 1..20, рамка розміри 2..30, ромб непарну висоту 1..19. Ромб центрований, ширини рядків 1, 3, …, n, …, 3, 1. Будувати вкладеними циклами, виводити кількість зірочок і після кожної фігури повертатися до меню.
Варіант 22. Щасливі квитки
1. Початковий рівень. Створити консольну програму Python. Ввести номер 0..999999, трактуючи його як шість цифр із початковими нулями. Через // і % порівняти суму перших трьох і останніх трьох цифр, вивести шестизначний номер і ознаку щасливості.
2. Базовий рівень. Створити консольну програму Python. Ввести 0 <= a <= b <= 999999 з шириною до 10000. Номери трактувати як шість цифр із початковими нулями. Порахувати номери з рівними сумами двох трійок цифр, вивести кількість і перший знайдений або повідомлення про відсутність.
3. Високий рівень. Створити консольну програму Python. Створити меню перевірки шестизначного квитка та пошуку найближчого щасливого номера у 0..999999. Початкові нулі враховувати. Щасливість означає рівність сум перших і останніх трьох цифр. Шукати за зростанням відстані, при однаковій відстані обирати менший номер, вихід за межі пропускати.
Варіант 23. Камінь, ножиці, папір
1. Початковий рівень. Створити консольну програму Python. Ввести два ходи з набору rock, scissors, paper. Вивести нічию або переможця за правилами: камінь б’є ножиці, ножиці папір, папір камінь.
2. Базовий рівень. Створити консольну програму Python. Провести п’ять раундів проти комп’ютера, який обирає random.randint(1,3): камінь, ножиці, папір. Неправильний хід не зараховувати як раунд. Вивести ходи, результати, кількість перемог, поразок і нічиїх.
3. Високий рівень. Створити консольну програму Python. Провести матч проти випадкового суперника до N перемог однієї зі сторін, N=1..10. Ходи 1=камінь, 2=ножиці, 3=папір; нічия не змінює рахунок. Передбачити q для дострокового виходу й запобіжний ліміт 100 раундів. Вивести рахунок і розрізняти перемогу, вихід та ліміт; неправильний хід раунд не витрачає.
Варіант 24. Парковка
1. Початковий рівень. Створити консольну програму Python. Ввести тривалість 0..1440 хвилин. Кожна розпочата година коштує 30 грн, нульова тривалість безкоштовна. Вивести кількість оплачуваних годин і суму.
2. Базовий рівень. Створити консольну програму Python. Ввести години й хвилини в’їзду та виїзду в межах однієї доби; виїзд не раніше в’їзду. Перші 15 хв безкоштовні, далі кожна розпочата година 30 грн: ceil((minutes-15)/60). Вивести тривалість і суму.
3. Високий рівень. Створити консольну програму Python. Обробити 1..50 стоянок: в’їзд і виїзд 00:00..23:59, ознака виїзду наступного дня 0/1, пільга 0/1. Тривалість 0..1440 хв, перші 15 безкоштовні, решта по 30 грн за розпочату годину; пільга зменшує суму вдвічі. Вивести таблицю тривалостей, сум та загальний дохід; неможливі інтервали запросити повторно.
Варіант 25. Депозит із поповненням
1. Початковий рівень. Створити консольну програму Python. Ввести початкову суму 0..1000000 грн і річну ставку 0..30 відсотків. Обчислити баланс після одного місяця за ставкою r/1200 без поповнення.
2. Базовий рівень. Створити консольну програму Python. Ввести суму 0..1000000 грн, річну ставку 0..30, щомісячне поповнення 0..100000 грн і строк 1..120 місяців. Щомісяця спочатку нараховувати відсотки, потім поповнювати. Вивести таблицю балансів; відсотки округляти до копійок Decimal ROUND_HALF_UP.
3. Високий рівень. Створити консольну програму Python. Ввести старт 0..1000000 грн, ціль 1..2000000 грн, ставку 0..30 і поповнення 0..100000 грн. Циклом визначити місяць досягнення цілі з лімітом 600 місяців; старт уже не менший за ціль означає 0 місяців. Щомісяця нараховувати округлені Decimal ROUND_HALF_UP відсотки, потім поповнення. Показати внески та відсотки окремо; повідомити про відсутність зростання або недосягнення за ліміт.
Варіант 26. Серія квадратних рівнянь
1. Початковий рівень. Створити консольну програму Python. Ввести цілі a, b, c від -100 до 100, a ненульове. Обчислити дискримінант та кількість різних дійсних коренів: 0, 1, 2.
2. Базовий рівень. Створити консольну програму Python. Ввести 1..20 рівнянь із цілими a, b, c від -100 до 100. Розв’язати всі дійсні випадки включно з a=0; відрізняти відсутність і безліч розв’язків. Вивести коефіцієнти та корені кожного.
3. Високий рівень. Створити консольну програму Python. Для 1..20 наборів цілих коефіцієнтів -100..100 розв’язати квадратні та вироджені рівняння. За від’ємного дискримінанта використовувати cmath.sqrt і друкувати дійсну й уявну частини. Порахувати рівняння з двома різними дійсними, одним дійсним, двома комплексними коренями, лінійні, без розв’язків і з безліччю; категорії взаємовиключні.
Варіант 27. Тренажер усного рахунку
1. Початковий рівень. Створити консольну програму Python. Обрати два випадкові цілі 1..10. Запропонувати їх суму, прийняти цілу відповідь і повідомити правильність та правильний результат.
2. Базовий рівень. Створити консольну програму Python. Поставити десять випадкових прикладів додавання чисел 1..20. Перевіряти відповіді, рахувати правильні, показувати відсоток успіху й помилки. Для перевірки дозволити фіксований seed.
3. Високий рівень. Створити консольну програму Python. Поставити N=1..30 випадкових прикладів додавання, віднімання або множення чисел 1..20. Вимірювати час відповіді time.perf_counter; допустити від’ємні відповіді. Вивести кількість правильних, відсоток, загальний і середній час, найповільніший номер. Порожній рядок завершує достроково; середнє рахувати лише за завершеними відповідями.
Варіант 28. Знижки магазину
1. Початковий рівень. Створити консольну програму Python. Ввести суму покупки 0..100000 грн. Від 1000 грн включно діє знижка 5 відсотків. Вивести знижку та суму до сплати.
2. Базовий рівень. Створити консольну програму Python. Ввести суму 0..100000 грн. Навчальна знижка на всю суму: менше 1000 – 0 відсотків, від 1000 до 5000 – 5, від 5000 – 10. Вивести початкову суму, знижку та підсумок із двома знаками.
3. Високий рівень. Створити консольну програму Python. Ввести 1..20 позицій: ціна у цілих копійках 1..1000000 і кількість 1..100. За сумою чека знижка 0 відсотків до 1000 грн, 5 від 1000, 10 від 5000. Промокод NONE/SAVE5 через match дає ще 0/5 відсотків від суми після основної знижки. Округляти після кожної знижки Decimal ROUND_HALF_UP; вивести позиції, обидві знижки та підсумок.
Варіант 29. Ряд Тейлора
1. Початковий рівень. Створити консольну програму Python. Ввести x від -1 до 1. Обчислити наближення exp(x) першими п’ятьма членами 1+x+x²/2!+x³/3!+x⁴/4!, використовуючи цикл і рекурентний член term*=x/k. Вивести наближення та math.exp(x).
2. Базовий рівень. Створити консольну програму Python. Ввести x від -3 до 3 та epsilon від 1e-12 до 1e-3. Для exp(x) почати sum=term=1; новий член term*=x/k додавати, доки його модуль не стане меншим за epsilon. Малий член не додавати. Ліміт 1000 членів; вивести суму, кількість доданих членів та абсолютну різницю з math.exp.
3. Високий рівень. Створити консольну програму Python. Створити меню exp(x) або sin(x), x у [-3,3] радіанах, epsilon=1e-12..1e-3. Для exp почати з 1, term*=x/k; для sin почати з x, term*=-x*x/((2*k)*(2*k+1)), k від 1. Початковий член врахувати, наступні додавати лише при abs(term)>=epsilon. Ліміт 1000 членів. Вивести кількість, наближення, значення math та абсолютну похибку; epsilon не називати гарантованою похибкою всієї суми.
Варіант 30. Розклад дзвінків
1. Початковий рівень. Створити консольну програму Python. Ввести годину 0..23 і хвилину 0..59 початку та тривалість 1..180 хв. Вивести час завершення HH:MM та ознаку переходу на наступну добу.
2. Базовий рівень. Створити консольну програму Python. Ввести початок HH:MM окремими цілими, кількість пар 1..8, тривалість пари 30..120 хв і перерву 0..60 хв. Циклом надрукувати початок і кінець кожної пари; при переході доби показувати +1 день.
3. Високий рівень. Створити консольну програму Python. Побудувати розклад 1..8 пар від заданого HH:MM. Тривалість 30..120 хв, звичайна перерва 0..60 хв, після обраної пари 1..N-1 велика перерва 0..120 хв замість звичайної; для N=1 її немає. Вивести таблицю з переходом доби та сумарні хвилини навчання і перерв. Після останньої пари перерву не додавати.
Порядок виконання та захисту роботи
- Запишіть номер варіанта, рівень, вхідні дані, їх одиниці й межі. Складіть формули та визначте, які гілки й цикли потрібні.
- Реалізуйте програму в окремому каталозі локального Git-репозиторію. Додайте зрозумілі запрошення введення та підписи результатів.
- Перевірте щонайменше п’ять наборів: звичайний, граничний, недопустимий за областю, одну ітерацію та завершення/порожній результат, якщо вони мають зміст для задачі. Для кожної гілки, не покритої цими наборами, додайте окремий тест.
- Обчисліть хоча б один результат вручну. Укажіть правило округлення та допустиму похибку, якщо використовуєте дійсні числа.
- Запустіть файл у PyCharm і терміналі: у Windows
.\.venv\Scripts\python.exe main.py, у Linux/macOS./.venv/bin/python main.py. Порівняйте результати. - Збережіть код, README з інструкцією запуску, таблицю перевірок і змістовні коміти. Не додавайте
.venvта__pycache__. Подайте локальний репозиторій; GitHub залишається необов’язковим. - На захисті поясніть типи, порядок перевірок, умову завершення циклу та один граничний випадок. Покажіть, що зміниться після заміни
elifна незалежнийifабо перенесенняelseциклу.