{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Функции и коллекции — Урок 3\n",
    "## Практические задания\n",
    "\n",
    "**Темы:** кортежи, множества, словари, `def`, `return`, параметры по умолчанию, `*args` / `**kwargs`, область видимости, `lambda`\n",
    "\n",
    "Замените `pass` на ваш код и запустите ячейку (Shift + Enter)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 1. Площадь прямоугольника\n",
    "\n",
    "Написать функцию `area(width, height)`, возвращающую площадь прямоугольника. Проверить на `area(5, 3)`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 2. Min, Max, Avg через функцию\n",
    "\n",
    "Написать функцию `summary(numbers)`, которая принимает список и возвращает кортеж `(min, max, avg)`. Распаковать результат в три переменные.\n",
    "\n",
    "```python\n",
    "data = [12, 7, 23, 9, 31, 4, 18]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = [12, 7, 23, 9, 31, 4, 18]\n",
    "\n",
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 3. Уникальные слова\n",
    "\n",
    "Дана строка. С помощью `set` посчитать количество уникальных слов (без учёта регистра).\n",
    "\n",
    "```python\n",
    "text = \"Python is great Python is fun and Python is fast\"\n",
    "```\n",
    "\n",
    "Ожидаемый результат: 7."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "text = \"Python is great Python is fun and Python is fast\"\n",
    "\n",
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 4. Частота букв\n",
    "\n",
    "Дана строка. Построить словарь `{буква: количество}` для всех букв, кроме пробелов. Регистр не учитывать.\n",
    "\n",
    "```python\n",
    "word = \"programming\"\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "word = \"programming\"\n",
    "\n",
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 5. Слияние словарей\n",
    "\n",
    "Написать функцию `merge(d1, d2)`, которая объединяет два словаря. Если ключ есть в обоих — значение из `d2` побеждает. Не использовать оператор `|`.\n",
    "\n",
    "```python\n",
    "a = {\"x\": 1, \"y\": 2}\n",
    "b = {\"y\": 99, \"z\": 3}\n",
    "# merge(a, b) → {\"x\": 1, \"y\": 99, \"z\": 3}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 6. Параметры по умолчанию\n",
    "\n",
    "Написать функцию `power(base, exp=2)`, возвращающую `base ** exp`. Проверить вызовы `power(5)` и `power(2, 10)`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 7. *args — произведение\n",
    "\n",
    "Написать функцию `product(*nums)`, возвращающую произведение всех аргументов. Если аргументов нет — вернуть 1.\n",
    "\n",
    "```python\n",
    "product(2, 3, 4)   # → 24\n",
    "product()          # → 1\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 8. **kwargs — построитель URL\n",
    "\n",
    "Написать функцию `build_url(base, **params)`, которая возвращает строку вида `base?key1=val1&key2=val2`.\n",
    "\n",
    "```python\n",
    "build_url(\"https://api.example.com\", lang=\"ru\", page=2)\n",
    "# → \"https://api.example.com?lang=ru&page=2\"\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 9. Сортировка через lambda\n",
    "\n",
    "Дан список словарей с товарами. Отсортировать по цене по убыванию с помощью `sorted` и `lambda`.\n",
    "\n",
    "```python\n",
    "products = [\n",
    "    {\"name\": \"book\", \"price\": 12},\n",
    "    {\"name\": \"phone\", \"price\": 599},\n",
    "    {\"name\": \"pen\", \"price\": 3},\n",
    "    {\"name\": \"laptop\", \"price\": 1200},\n",
    "]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "products = [\n",
    "    {\"name\": \"book\", \"price\": 12},\n",
    "    {\"name\": \"phone\", \"price\": 599},\n",
    "    {\"name\": \"pen\", \"price\": 3},\n",
    "    {\"name\": \"laptop\", \"price\": 1200},\n",
    "]\n",
    "\n",
    "# Ваш код здесь\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Задание 10. Группировка слов по длине\n",
    "\n",
    "Написать функцию `group_by_len(words)`, которая возвращает словарь `{длина: [слова данной длины]}`.\n",
    "\n",
    "```python\n",
    "words = [\"sun\", \"moon\", \"sky\", \"star\", \"cloud\", \"rain\", \"snow\"]\n",
    "# → {3: [\"sun\", \"sky\"], 4: [\"moon\", \"star\", \"rain\", \"snow\"], 5: [\"cloud\"]}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "words = [\"sun\", \"moon\", \"sky\", \"star\", \"cloud\", \"rain\", \"snow\"]\n",
    "\n",
    "# Ваш код здесь\n",
    "pass"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
