---
# System prepended metadata

title: Практика 2. Розширені можливості функцій
tags: [Python Advanced]

---

---
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/)
