Добавил:
хачю сдать сессию Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5_Проверка_условий_Циклы_Jupyter_Notebook

.pdf
Скачиваний:
2
Добавлен:
09.07.2025
Размер:
671.42 Кб
Скачать

01.10.2022, 14:14 5. Проверка условий. Циклы - Jupyter Notebook

In [40]:

1 numbers = [1, 1, 0, 2, 4, 3, 3] # 7 элементов

In [41]:

1 set(numbers) # в множестве осталось 5 элементов + отсортированы по возрастанию

Out[41]:

{0, 1, 2, 3, 4}

Множества из строк тоже существуют (вообще их можно создавать из любых объектов):

In [43]:

1 words = ["one", "one", "two", "three"] # пока список

In [44]:

1 set(words) # множество

Out[44]:

{'one', 'three', 'two'}

А теперь превратим два числовых списка в множества A и B и попробуем произвести некоторые операции.

In [45]:

1 A = set([0, 2, 4, 7]) 2 B = set([0, 1, 4, 5])

In [47]:

1 print(A)

2 print(B)

{0, 2, 4, 7} {0, 1, 4, 5}

Пересечение множеств A и B ‒ общие элементы этих двух множеств:

In [48]:

1 B.intersection(A) # метод intersection

Out[48]:

{0, 4}

Объединение множеств A и B ‒ все элементы множества A и множества B (но, конечно, без повторений):

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/5. Проверка условий. Циклы.ipynb

11/14

01.10.2022, 14:14

5. Проверка условий. Циклы - Jupyter Notebook

In [48]:

1 A.union(B) # метод union

Out[48]:

{0, 1, 2, 4, 5, 7}

Разность множеств B и A ‒ все элементы множества B, которых нет в A.

In [50]:

1 B.difference(A) # метод difference

Out[50]:

{1, 5}

Обратите внимание: результат, полученный после использования методов для множеств, тоже является множеством ‒ элементы перечислены в фигурных скобках. Но при желании результат можно превратить в список:

In [68]:

1 list(A.difference(B))

Out[68]:

[2, 7]

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

Цикл while

С циклом for мы уже знакомы. Сейчас мы познакомимся с циклом while , логика которого отличается от for . Конструкции с циклом while устроены следующим образом: действия, которые указаны в теле цикла, должны выполняться до тех пор, пока верно условие, прописанное после while (отсюда и название). Если в цикле for мы указывали некоторый промежуток, по которому в ходе цикла мы будем "пробегаться", то в случае с циклом while мы просто фиксируем стартовую точку, а конечную точку никак не указываем: программа сама остановится, когда условие в цикле перестанет выполняться.

In [51]:

1 nums = [1, 0, 9, 10, -1, 8]

Давайте, используя цикл while , будем выводить на экран элементы списка nums до тех пор, пока не столкнемся с отрицательным значением.

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/5. Проверка условий. Циклы.ipynb

12/14

01.10.2022, 14:14

5. Проверка условий. Циклы - Jupyter Notebook

In [30]:

1 i = 0 # начинаем с индекса i=0

2

3 while nums[i] >= 0: # пока элемент nums[i] >= 0

4 print(nums[i]) # выводим элемент на экран 5 i = i + 1 # переходим к следующему элементу

1

0

9

10

На значении 10 мы остановились: за ним идет значение -1, для которого условие nums[i] > = 0 не выполняется.

Давайте теперь попробуем переписать код так, чтобы он работал точно так же, но только чтобы в нем использовался цикл for , а не while . Вообще почти любой код с while можно переписать через for , и иногда это полезно: код с циклом while обычно более медленный, плюс, склонен к зацикливанию.

In [52]:

1 for n in nums:

2if n >= 0:

3print(n)

4else:

5 break # выходим из цикла

1

0

9

10

В коде выше мы использовали оператор break , который позволяет выйти из цикла, то есть закончить исполнение строк кода в теле цикла и перейти к коду дальше.

А теперь напишем маленькую игру-угадайку. Программа будет загадывать целое число от 1 до 100, а пользователь его угадывать. Как программа будет загадывать число? Выбирать случайным образом из интервала [1, 100] (на самом деле псевдослучайным образом, так как абсолютной случайности не получится, генерирование чисел происходит по фиксированным алгоритмам).

In [53]:

1 from random import randrange # импортируем модуль для функии randrange

In [54]:

1 n = randrange(1, 101) # n и есть загаданное число

Осталось написать цикл. До тех пор, пока пользователь не угадает число, программа не будет останавливаться, но зато она будет давать подсказки: если введенное пользователем число больше загаданного, то будет выводиться сообщение "Вы ввели слишком большое число.", если меньше ‒ "Вы ввели слишком маленькое число."

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/5. Проверка условий. Циклы.ipynb

13/14

01.10.2022, 14:14 5. Проверка условий. Циклы - Jupyter Notebook

In [55]:

1

while True:

 

2

guess =

int(input("Ваша попытка:"))

3if guess == n:

4print("Вы выиграли!")

5break

6elif guess > n:

7print("Вы ввели слишком большое число.")

8else:

9print("Вы ввели слишком маленькое число.")

Ваша попытка:23 Вы ввели слишком большое число. Ваша попытка:11

Вы ввели слишком маленькое число. Ваша попытка:15 Вы ввели слишком маленькое число. Ваша попытка:20

Вы ввели слишком большое число. Ваша попытка:18 Вы ввели слишком большое число. Ваша попытка:17

Вы ввели слишком большое число. Ваша попытка:16 Вы выиграли!

В коде выше в while мы не написали никакого условия явно, вместо этого мы написали while True . Это выражение означает "до тех пор, пока мы не вышли из цикла". В нашем случае это равносильно "до тех пор, пока не столкнулись с break , пока наш ответ не совпал с загаданным числом.

localhost:8888/notebooks/EXONTOOLS/2/Доп. занятия/5. Проверка условий. Циклы.ipynb

14/14