--- tags: Python Advanced --- # Практика 2. Розширені можливості функцій :::info *При вирішенні завдань зверніть увагу:* - для кожного завдання спочатку створюються функції, а потім, використовуючи їх, виконується розв'язання задачі - введення та виведення даних для функції необхідно забезпечити окремо, не в функції - для кожної написаної функції слід використовувати рядки документації - при виведенні дробних результатів залиште два знаки після коми - розв'язок всіх завдань надіслати як посилання на репозиторій або папку в репозиторії ::: :::warning **Створення функцій з Copilot** ```mermaid flowchart TD A(Визначте заголовок функції) --> B(Напишіть рядки документації для функції) B --> C[Дозвольте Copilot згенерувати код функції] C --> D(Проаналізуйте код, щоб переконатися, що він підходе) D --> E(Протестуйте код, щоб переконатися в його правильності) E -->|Неправильний| G(Виправте код чи сформулюйте новий запит до Copilot) G --> C E -->|Правильний| F([Готово]) ``` ::: ## Базовий рівень ### Задача 1 Для введеного речення виведіть статистику `символ=кількість`. Реєстр букв не враховується. :::spoiler Розв'язок ![image](https://hackmd.io/_uploads/HyUX_Cioge.png) <!-- --> ::: ### Задача 2 Виведіть усі щасливі номери квитків у діапазоні від `a` до `b` (позитивні цілі числа, `a<b`), якщо відомо, що щасливим вважається номер, у якого кількість парних цифр дорівнює кількості непарних. :::spoiler Розв'язок ![image](https://hackmd.io/_uploads/SJ5hKCjsge.png) <!-- --> ::: ### Задача 3 Дата характеризується трьома натуральними числами: день, місяць та рік. З огляду на те, що рік може бути високосним, реалізуйте дві функції, які визначають вчорашню та завтрашню дату. :::spoiler Розв'язок ![image](https://hackmd.io/_uploads/rkz5qAjjxe.png) <!-- --> ::: ## Середній рівень ### Задача 4 Дано список із результатами голосування на виборах у вигляді: [1, 3, 2, 2, 2, 5, -1, ...] де номер визначає голос за партію зі списку: ``` 1. Партія №1. 2. Партія №2. 3. Партія №3. 4. Партія №4. 5. Партия №5. -1. Зіпсований бланк. ``` Підбийте підсумки виборів, вивівши на екран список партій відповідно до зменшення кількості отриманих голосів та їх відсотковим співвідношенням: ``` 1. Партія №2 | 1111 | 58.21% 2. Партія №4 | 999 | 38.14% ... ``` :::spoiler Розв'язок <!-- ![image](https://hackmd.io/_uploads/rJ31o0jjgg.png) --> ::: ### Задача 5 У вагоні-купе є кілька купе, у кожному з яких по 4 місця. Розробник зберігає інформацію про зайнятість одного купе у вигляді словника: `{1: 'ч', 2: None, 3: None, 4: 'ж'}` де: ключ визначає номер місця (непарні номери – нижні місця, парні – верхні); значення може бути одне з трьох: None, "ч" та "ж", якщо місце не зайняте, зайняте чоловіком або жінкою відповідно. Інформація про зайнятість всього вагона зберігається як перелік зазначених словників. Визначіть: - список повністю вільних купе - список вільних місць у вагоні - список вільних нижніх чи верхніх місць - список вільних місць в купе з виключно чоловічою компанією - список вільних місць в купе з виключно жіночою компанією Купе зважає на виключно чоловічу компанію, якщо: - зайнято хоча б одне місце - усі невільні місця зайняті чоловіками :::spoiler Розв'язок <!-- ![image](https://hackmd.io/_uploads/BywYoRisgl.png) --> ::: ### Задача 6 Використовуючи [шифр Цезаря](https://uk.wikipedia.org/wiki/%D0%A8%D0%B8%D1%84%D1%80_%D0%A6%D0%B5%D0%B7%D0%B0%D1%80%D1%8F) (достатньо лише букв українського алфавіту, розділові знаки не змінюються), зашифруйте, а потім розшифруйте введений рядок. :::spoiler Розв'язок <!-- ![image](https://hackmd.io/_uploads/B1cb30soxg.png) --> ::: ## Підвищений рівень ### Задача 7 Напишіть функцію, яка приймає необмежену кількість числових аргументів і повертає кортеж із двох списків: - негативних значень (відсортований за спаданням) - невід'ємних значень (відсортовано за зростанням) ### Задача 8 Складіть дві функції для зведення числа в ступінь: один із варіантів реалізуйте у рекурсивному стилі. ### Задача 9 Дано натуральне число. Напишіть рекурсивні функції для визначення: - суми цифр числа - кількості цифр у числі --- (c) Яценко Р.М., 2020-2025 [![kit](https://i.imgur.com/Kh901c1.png =10%x)](http://kit.kh.ua/)