
5_Проверка_условий_Циклы_Jupyter_Notebook
.pdf
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 |