{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "0a39e911",
   "metadata": {},
   "source": [
    "# Множества. Пример программы #"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f399fcc2",
   "metadata": {},
   "source": [
    "Итак, мы с вами разобрали множества, давайте попробуем решить задачу на их применение.\n",
    "\n",
    "В качестве примера попробуем выяснить, через сколько итераций функция `random.randint` выдаст повтор. Как вы уже знаете, `randint` возвращает какое-то значение случайное в переданном ему интервале. Давайте импортируем наш модуль `random`, который мы будем использовать, и определим наш `random_set`, в который мы будем складывать наши уникальные числа."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f34fe0ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "\n",
    "random_set = set()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8367c37e",
   "metadata": {},
   "source": [
    "Теперь воспользуемся циклом `while True` — бесконечным циклом, и в цикле попробуем класть элементы в наше множество. Итак, получим уникальный, какой-то случайный номер, `random.randint(1, 10)`. От одного до десяти. Теперь попробуем проверить, есть ли наш новый номер в множестве. Делаем мы это с помощью оператора `in`. И если этот номер уже содержится в множестве, нам нужно просто выйти, потому что очевидно, именно это мы и хотели выяснить. Если номера нет, мы добавляем наш новый номер в `random_set`. Делаем мы это с помощью знакомого вам метода `add`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "47385363",
   "metadata": {},
   "outputs": [],
   "source": [
    "while True:\n",
    "    new_number = random.randint(1, 10)\n",
    "    \n",
    "    if new_number in random_set:\n",
    "        break\n",
    "        \n",
    "    random_set.add(new_number)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d81a9e34",
   "metadata": {},
   "source": [
    "И что же теперь происходит? У нас произошло какое-то количество итераций, и в `random_set`'е содержится какой-то набор уникальных объектов. Нашим ответом будет число уникальных объектов в `random_set`'е. Число объектов в `random_set`'е можно получить с помощью знакомой вам встроенной функции `len`. И какая-то еще одна итерация, потому что мы успели выйти до того, как добавили номер повторный. Давайте выведем."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bb40c926",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n"
     ]
    }
   ],
   "source": [
    "print(len(random_set) + 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cf5abb51",
   "metadata": {},
   "source": [
    "Оказалось, что уже спустя четыре итерации у нас произошел повтор, то есть `random` не такой уж и рандомный. Попробуем запустить еще раз. Да, результат получше. 6 уже больше похоже на то, что мы хотели ожидать. Итак, мы разобрали с вами задачку на множества."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
