# Практика

1. **Подсчет уникальных слов.**&#x20;

Напишите функцию, которая принимает на вход строку и возвращает словарь, в котором ключи - слова из строки, а значения - количество раз, которое каждое слово встречается.

```python
# пример входных данных
input_str = 'Python is powerful. Python is easy to learn. Python is fun.'
```

2. **Финансовая грамотность.**&#x20;

Создайте словарь, представляющий собой записную книжку с тратами по разным категорям, где ключи - названия категорий, а значения - деньги, которые были потрачены в этой категории (целые положительные числа). Напишите функцию, которая принимает два словаря (представляющих две записные книжки) и возвращает новый словарь, в котором значения трат сложены.

{% code overflow="wrap" %}

```python
# пример входных данных:
finance_plan_1 = {'Home': 150, 'Transport': 15, 'Daily Expenses': 100, 'Entertainment': 80, 'Health': 60, 'Vacation': 40}
finance_plan_2 = {'Home': 100, 'Transport': 12, 'Daily Expenses': 107, 'Entertainment': 55, 'Health': 190, 'Vacation': 150}
```

{% endcode %}

3. **Удаление элементов из словаря.**&#x20;

Напишите функцию, которая удаляет все элементы словаря, ключи которых начинаются на определенную букву.

```python
# пример входных данных
my_dict = {'apple': 1, 'banana': 2, 'orange': 3, 'grape': 4}
# пример использования функции
remove_keys_starting_with(my_dict, 'b')
```

4. **Уникальные слова.**&#x20;

Напишите функцию, которая принимает текст и возвращает множество уникальных слов в этом тексте, игнорируя регистр.

{% code overflow="wrap" %}

```python
# пример входных данных
my_text = "Python is a powerful programming language. Python is also easy to learn."
```

{% endcode %}

5. **Объединение множеств.**&#x20;

Напишите функцию, которая принимает список множеств и возвращает их объединение.

```python
# пример входных данных и использования функции
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {5, 6, 7}
sets_to_combine = [set1, set2, set3]
result_union = union_of_sets(sets_to_combine)
```

6. **Преобразование DNA в RNA**

ДНК и РНК это последовательности нуклеотидов.

Четыре нуклеотида в ДНК:

* Аденин (**A**)
* Цитозин (**C**)
* Гуанин (**G**)
* Тимин (**T**)

Четыре нуклеотида в РНК:

* Аденин (**A**)
* Цитозин (**C**)
* Гуанин (**G**)
* Урацил (**U**)

Цепь РНК составляется на основе цепи ДНК последовательной заменой каждого нуклеотида:

* `G` -> `C`
* `C` -> `G`
* `T` -> `A`
* `A` -> `U`

Напишите функцию `to_rna`, которая принимает на вход цепь ДНК и возвращает соответствующую цепь РНК (совершает транскрипцию РНК).

{% code overflow="wrap" %}

```python
# пример использования
to_rna('ACGTGGTCTTAA')
# 'UGCACCAGAAUU'
```

{% endcode %}

7. **Скрэббл**

Реализуйте функцию-предикат `scrabble`, которая принимает на вход два параметра: набор символов (строку) и слово. Функция должна проверять, можно ли из переданного набора составить это слово. В результате вызова функция возвращает True или False.

При проверке учитывается количество символов, которые нужны для составления слова, но не учитывается их регистр.

Для решения используйте встроенный инструмент — [Counter](https://docs.python.org/3/library/collections.html#collections.Counter).

```python
# примеры использования
scrabble('rkqodlw', 'world')  # True
scrabble('avj', 'java')  # False
scrabble('avjafff', 'java')  # True
scrabble('', 'top')  # False
scrabble('scriptingjava', 'JavaScript')  # True
```
