Операторы цикла Python3

В этой главе будет рассказано об использовании операторов цикла Python.

Операторами цикла в Python являются for и while.

Схема управляющей структуры операторов цикла Python выглядит следующим образом:

Ключевые слова и методы управления циклом

Управление циклом
Ключевое слово / Функция Описание Пример
for Итерационный цикл, используется для обхода последовательностей или итерируемых объектов for i in list:
while Условный цикл, продолжает выполняться, пока условие истинно while x > 0:
break Немедленно завершить текущий цикл break
continue Пропустить оставшийся код этого цикла и перейти к следующей итерации continue
else (loop) Выполняется, когда цикл завершается нормально (не прерван с помощью break) for i in range(3): ... else: ...
pass Оператор-заполнитель в цикле (без операции) for i in range(5): pass
range() Генерирует последовательности целых чисел, часто используется с циклами for range(0, 5)
enumerate() Получает индекс и значение одновременно во время итерации for i, v in enumerate(list):

цикл while

Общий вид оператора while в Python:

while 判断条件(condition):
    执行语句(statements)……

Блок-схема выполнения выглядит следующим образом:

Демонстрация выполнения в GIF:

Также обратите внимание на двоеточие и отступы. Кроме того, в Python нет цикла do..while.

В следующем примере используется while для вычисления суммы чисел от 1 до 100:

Пример

#!/usr/bin/env python3 n = 100 sum = 0 counter = 1 while counter <= n: sum = sum + counter counter += 1 print("Сумма чисел от 1 до %d равна: %d" % (n,sum))

Результат выполнения выглядит следующим образом:

1 到 100 之和为: 5050

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

Мы можем реализовать бесконечный цикл, задав условное выражение так, чтобы оно никогда не было ложным, как в следующем примере:

Пример

#!/usr/bin/python3 var = 1 while var == 1 : # Выражение всегда истинно num = int(input("Введите число:")) print ("Введенное вами число:", num) print ("До свидания!")

После выполнения приведенного выше скрипта результат вывода выглядит следующим образом:

输入一个数字  :5
你输入的数字是:  5
输入一个数字  :

Вы можете использовать CTRL+Cдля выхода из текущего бесконечного цикла.

Бесконечные циклы очень полезны для запросов в реальном времени от клиентов на серверах.

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

Если условие после while ложно, выполняется блок оператора else.

Формат синтаксиса следующий:

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

Если условие expr истинно, выполняется блок statement(s); если оно ложно, выполняется additional_statement(s).

Цикл для вывода чисел и сравнения их величин:

Пример

#!/usr/bin/python3 count = 0 while count < 5: print (count, "меньше 5") count = count + 1 else: print (count, "больше или равно 5")

После выполнения приведенного выше скрипта результат вывода выглядит следующим образом:

0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5

Группа простых операторов

Подобно синтаксису оператора if, если тело вашего цикла while содержит только один оператор, вы можете записать этот оператор в той же строке, что и while, как показано ниже:

Пример

#!/usr/bin/python flag = 1 while (flag): print ('Добро пожаловать в Example Tutorial!') print ("До свидания!")

Примечание:Вы можете использовать CTRL+C, чтобы прервать вышеуказанный бесконечный цикл.

После выполнения приведенного выше скрипта результат вывода выглядит следующим образом:

Welcome to Example Tutorial!
Welcome to Example Tutorial!
Welcome to Example Tutorial!
Welcome to Example Tutorial!
Welcome to Example Tutorial!
……

Оператор for

Цикл for в Python может перебирать любой итерируемый объект, например список или строку.

Общий формат цикла for выглядит следующим образом:

for <переменная> in <последовательность>: <операторы> else: <операторы>

Блок-схема:

Пример цикла for в Python:

Пример

#!/usr/bin/python3 sites = ["Baidu", "Google","Example","Taobao"] for site in sites: print(site)

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

Baidu
Google
Example
Taobao

Его также можно использовать для вывода каждого символа в строке:

Пример

#!/usr/bin/python3 word = 'example' for letter in word: print(letter)

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

r
u
n
o
o
b

Целочисленные значения диапазона можно использовать вместе с функцией range():

Пример

#!/usr/bin/python3 # Все числа от 1 до 5: for number in range(1, 6): print(число)

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

1
2
3
4
5

for...else

В Python конструкция for...else используется для выполнения блока кода после завершения цикла.

Формат синтаксиса следующий:

for item in iterable:
    # 循环主体
else:
    # 循环结束后执行的代码

Когда цикл завершает выполнение (то есть после того, как все элементы в итерируемом объекте были пройдены), код в блоке else будет выполнен. Если во время цикла встречается оператор break, цикл будет прерван, и в этот момент блок else не будет выполнен.

Пример

for x in range(6):
  print(x)
else:
  print("Наконец-то завершено!")

После выполнения скрипта результат вывода:

0
1
2
3
4
5
Finally finished!

В следующем примере for используется оператор break. Оператор break используется для выхода из текущего тела цикла, и блок else не будет выполнен:

Пример

#!/usr/bin/python3 sites = ["Baidu", "Google","Example","Taobao"] for site in sites: if site == "Example": print("Пример руководства!") break print("Данные цикла" + site) else: print("Нет данных о цикле!") print("Цикл завершён!")

После выполнения скрипта, когда цикл достигнет "Example", он выйдет из тела цикла:

循环数据 Baidu
循环数据 Google
Example!
完成循环!

Функция range()

Если вам нужно перебрать последовательность чисел, вы можете использовать встроенную функцию range(). Она сгенерирует последовательность чисел, например:

Пример

>>>for i in range(5): ... print(i) ... 0 1 2 3 4

Вы также можете использовать range() для указания значений в интервале:

Пример

>>>for i in range(5,9) : print(i) 5 6 7 8 >>>

Вы также можете заставить range() начинаться с указанного числа и задать другой шаг (который может быть даже отрицательным, иногда также называемый 'step'):

Пример

>>>for i in range(0, 10, 3) : print(i) 0 3 6 9 >>>

Отрицательные числа:

Пример

>>>for i in range(-10, -100, -30) : print(i) -10 -40 -70 >>>

Вы можете объединить функции range() и len(), чтобы перебрать индексы последовательности, как показано ниже:

Пример

>>>a = ['Google', 'Baidu', 'Example', 'Taobao', 'QQ'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Google 1 Baidu 2 Example 3 Taobao 4 QQ >>>

Вы также можете использовать функцию range() для создания списка:

Пример

>>>list(range(5)) [0, 1, 2, 3, 4] >>>

Подробнее об использовании функции range() см.:https://www.example.com/python3/python3-func-range.html


Операторы break и continue и ветви else в циклах

Блок-схема выполнения break:

Блок-схема выполнения continue:

Процесс выполнения кода оператора while:

Процесс выполнения кода оператора for:

breakОператор break может выйти из тел циклов for и while. Если вы прерываете цикл for или while, соответствующий блок else цикла не будет выполнен.

continueОператор continue используется, чтобы сообщить Python о необходимости пропустить оставшиеся инструкции в текущем блоке цикла и затем перейти к следующей итерации цикла.

Пример

Использование break в while:

Пример

n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)
print('Loop ended.')

Результат вывода:

4
3
循环结束。

Использование continue в while:

Пример

n = 5
while n > 0:
    n -= 1
    if n == 2:
        continue
    print(n)
print('Loop ended.')

Результат вывода:

4
3
1
0
循环结束。

Ниже приведены дополнительные примеры:

Пример

#!/usr/bin/python3 for letter in 'Example': # Первый пример if letter == 'b': break print ('Текущая буква:', letter) var = 10 # Второй пример while var > 0: print ('Текущее значение переменной:', var) var = var -1 if var == 5: break print ("До свидания!")

Результат вывода вышеприведённого скрипта:

当前字母为 : R
当前字母为 : u
当前字母为 : n
当前字母为 : o
当前字母为 : o
当前变量值为 : 10
当前变量值为 : 9
当前变量值为 : 8
当前变量值为 : 7
当前变量值为 : 6
Good bye!

В следующем примере выполняется перебор строки Example и пропускается вывод, когда встречается буква o:

Пример

#!/usr/bin/python3 for letter in 'Example': # Первый пример if letter == 'o': # Пропускать вывод, когда буква — o continue print ('Текущая буква:', letter) var = 10 # Второй пример while var > 0: var = var -1 if var == 5: # Пропускать вывод, когда переменная равна 5 continue print ('Текущее значение переменной:', var) print ("До свидания!")

Результат вывода вышеприведённого скрипта:

当前字母 : R
当前字母 : u
当前字母 : n
当前字母 : b
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
当前变量值 : 4
当前变量值 : 3
当前变量值 : 2
当前变量值 : 1
当前变量值 : 0
Good bye!

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

Следующий пример — это пример цикла для поиска простых чисел:

Пример

#!/usr/bin/python3 for n in range(2, 10): for x in range(2, n): if n % x == 0: print(n, 'Equals', x, '*', n//x) break else: # В цикле не найден элемент print(n, 'является простым числом')

Вывод выполнения вышеприведённого скрипта:

2  是质数
3  是质数
4 等于 2 * 2
5  是质数
6 等于 2 * 3
7  是质数
8 等于 2 * 4
9 等于 3 * 3

Оператор pass

Python pass — это пустой оператор, используемый для сохранения целостности структуры программы.

pass ничего не делает; обычно он используется как оператор-заглушка, как в следующем примере

Пример

>>>while True: ... pass # Ожидание прерывания с клавиатуры (Ctrl+C)

Наименьший класс:

Пример

>>>class MyEmptyClass: ... pass

В следующем примере выполняется блок оператора pass, когда буква равна o:

Пример

#!/usr/bin/python3 for letter in 'Example': if letter == 'o': pass print ('Выполнить блок pass') print ('Текущая буква:', letter) print ("До свидания!")

Вывод выполнения вышеприведённого скрипта:

当前字母 : R
当前字母 : u
当前字母 : n
执行 pass 块
当前字母 : o
执行 pass 块
当前字母 : o
当前字母 : b
Good bye!
Другие расширения