{ "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 }