Найти тему
Будни питониста

Цикл while.

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

while :

<тело цикла>

[else:

<блок, который будет выполнен, если не использовался оператор break>

]

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

# Условие неизменно и всегда истинно.

while True:

рrint("Привет")

# В теле цикла значение n не изменяется, следовательно,

# n всегда будет < 10 и цикл будет выполняться бесконечно

n = 0

while n < 10

рrint("Привет")

Прервать выполнение бесконечного цикла можно с помощью комбинации клавиш Ctrl + С, после чего вы увидите такой вывод:

Traceback (most recent call last): File "", line 2, in рrint("Привет")

File “<pyshell#21>”, line 2, in <module>

File "E:\Python39\lib\idlelib\PyShell.py", line 1352,

in write

return self.shell.write(s, self.tags)

Keyboardinterrupt

Цикл for более безопасен - он будет закончен тогда, когда будут перебраны все элементы последовательности. Бесконечных последовательностей не бывает, поэтому рано или поздно цикл будет закончен ( если, конечно, в цикле не происходит изменения последовательности). А вот за телом цикла while нужно следить. Чтобы не допустить бесконечного цикла нужно или предусмотреть условие выхода из цикла или предусмотреть изменение условия. Перепишем два наших проблемных цикла так, чтобы они стали "конечными":

# Предусматриваем условие выхода

# Тело будет выполнено 5 раз

n = 0

while True:

рrint("Привет")

n += 1

if n == 5: break

# В теле цикла значение n увеличивается, следовательно

# как только оно достигнет 10, цикл будет прерван

n = 0

while n < 10

рrint("Привет")

n += 1