---
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 Розв'язок

<!--
-->
:::
### Задача 2
Виведіть усі щасливі номери квитків у діапазоні від `a` до `b` (позитивні цілі числа, `a<b`), якщо відомо, що щасливим вважається номер, у якого кількість парних цифр дорівнює кількості непарних.
:::spoiler Розв'язок

<!--
-->
:::
### Задача 3
Дата характеризується трьома натуральними числами: день, місяць та рік. З огляду на те, що рік може бути високосним, реалізуйте дві функції, які визначають вчорашню та завтрашню дату.
:::spoiler Розв'язок

<!--
-->
:::
## Середній рівень
### Задача 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 Розв'язок
<!--

-->
:::
### Задача 5
У вагоні-купе є кілька купе, у кожному з яких по 4 місця. Розробник зберігає інформацію про зайнятість одного купе у вигляді словника:
`{1: 'ч', 2: None, 3: None, 4: 'ж'}`
де:
ключ визначає номер місця (непарні номери – нижні місця, парні – верхні);
значення може бути одне з трьох: None, "ч" та "ж", якщо місце не зайняте, зайняте чоловіком або жінкою відповідно.
Інформація про зайнятість всього вагона зберігається як перелік зазначених словників.
Визначіть:
- список повністю вільних купе
- список вільних місць у вагоні
- список вільних нижніх чи верхніх місць
- список вільних місць в купе з виключно чоловічою компанією
- список вільних місць в купе з виключно жіночою компанією
Купе зважає на виключно чоловічу компанію, якщо:
- зайнято хоча б одне місце
- усі невільні місця зайняті чоловіками
:::spoiler Розв'язок
<!--

-->
:::
### Задача 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 Розв'язок
<!--

-->
:::
## Підвищений рівень
### Задача 7
Напишіть функцію, яка приймає необмежену кількість числових аргументів і повертає кортеж із двох списків:
- негативних значень (відсортований за спаданням)
- невід'ємних значень (відсортовано за зростанням)
### Задача 8
Складіть дві функції для зведення числа в ступінь: один із варіантів реалізуйте у рекурсивному стилі.
### Задача 9
Дано натуральне число. Напишіть рекурсивні функції для визначення:
- суми цифр числа
- кількості цифр у числі
---
(c) Яценко Р.М., 2020-2025 [](http://kit.kh.ua/)