Python с нуля — часть 5: циклы – цикл while

 

PythonPython – цикл while

Цикл while в Python будет выполнять заданное выражение или блок кода до тех пор, пока заданное условие будет считаться истиной (true).

Синтаксис

Синтаксис цикла while в Python такой:

while условие:
   действие(я)

Тут действие(я) могут быть либо одним выражением, или набором выражений – блоком кода. Условие можно быть любым выражением, а условие будет считаться истиной (true), если результат не равен нулю или не пустой. Цикл будет выполняться пока условие будет считаться истиной.

Когда условие будет считаться как ложь (false) – программа передаст выполнение следующему после цикла участку кода.

В Python все выражения, имеющие одинаковые отступы в одной конструкции будет считаться единым блоком кода.

python_while_loop

Ключевым моментом цикла while является то, что он может вообще не быть запущен при выполнении программы. Если выражение проверено и его результат – ложь, то всё тело цикла будет пропущено, и будет выполнено следующее после цикла выражение.

Пример

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

print "Good bye!"

Результат выполнения:

The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!

Бесконечный цикл while

Цикл становится бесконечным если условие никогда не станет ложью – поэтому вы должны относиться с вниманием к циклам, в которых используется while. Такие циклы называются “бесконечным циклом”.

Бесконечные циклы могут полезны в клиент-серверном программировании, где сервер должен работать постоянно, что бы клиенты могли с ним работать.

var = 1
while var == 1 :  # This constructs an infinite loop
   num = raw_input("Enter a number  :")
   print "You entered: ", num

print "Good bye!"

Будучи запущенным, такой код приведёт к такому результату:

$ ./1.py
Enter a number  :3
You entered:  3
Enter a number  :4
You entered:  4
Enter a number  :
You entered:
Enter a number  :3
You entered:  3
Enter a number  :5
You entered:  5
Enter a number  :6
You entered:  6
Enter a number  :1
You entered:  1
Enter a number  :^CTraceback (most recent call last):
  File "./1.py", line 5, in <module>
    num = raw_input("Enter a number  :")
KeyboardInterrupt

В этом примере будет выполняться бесконечный цикл, пока вы не нажмёте комбинацию Ctrl+C, что бы прервать выполнение программы.

Использование оператора else с циклом while

В Python допустимо использование оператора else, связанного с циклом:

  • если оператор else используется с циклом for – он будет выполнен, когда список для цикла будет завершен;
  • при использовании else вместе с циклом while – он будет использован, когда условие примет значение ложь (false).

В следующем примере демонстрирует ся использование оператора else с циклом while, который выводит сообщение до тех пор, пока счётчик меньше 5, после чего будет выполнение действие оператора else:

count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

Результат его выполнения:

0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

Цикл while с одним выражением

По аналогии с оператором if – если цикл while содержит единственное действие, то оно может быть помещено в той же строке:

flag = 1
while (flag): print 'Given flag is really true!'
print "Good bye!"