Понимание циклов в Python

PythonBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите фундаментальное понимание циклов (loops) в Python, которые являются важными инструментами для автоматизации повторяющихся задач. Мы начнем с изучения циклов for и концепции итерации, научившись обрабатывать последовательности, такие как списки (lists) и строки (strings).

Далее вы узнаете, как использовать функцию range() с циклами for для генерации последовательностей чисел. Затем мы введем циклы while для повторения, основанного на условии. Наконец, вы научитесь управлять потоком как циклов for, так и while с помощью операторов break и continue.

Введение в циклы for и итерацию

На этом шаге вы узнаете о цикле for в Python. Цикл for используется для итерации по последовательности, такой как список (list), кортеж (tuple) или строка (string). Итерация означает выполнение действия для каждого элемента в последовательности, по одному за раз.

Сначала давайте используем цикл for, чтобы вывести каждый элемент списка.

В проводнике файлов WebIDE слева вы увидите список файлов. Найдите и откройте файл с именем for_loop_example.py. Добавьте в него следующий код на Python:

## Define a list of numbers
numbers = [1, 2, 3, 4, 5]

## The for loop iterates over each item in the 'numbers' list.
## In each iteration, the current item is assigned to the 'number' variable.
for number in numbers:
  ## This code block is executed for each item.
  print(number)

Сохраните файл, нажав Ctrl + S.

Чтобы запустить скрипт, откройте интегрированный терминал, нажав Terminal -> New Terminal в верхней части WebIDE. Затем выполните следующую команду:

python for_loop_example.py

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

1
2
3
4
5

Циклы for также могут итерироваться по строкам. Давайте попробуем это в новом файле. Откройте файл string_loop.py в проводнике файлов и добавьте этот код:

## Define a string
message = "Hello"

## Iterate over each character in the 'message' string
for char in message:
  ## Print each character
  print(char)

Сохраните файл и запустите его из терминала:

python string_loop.py

Вывод будет следующим:

H
e
l
l
o

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

Использование функции range() с циклами for

Функция range() — это мощный инструмент, который часто используется с циклами for для генерации последовательности чисел. Это полезно, когда вам нужно повторить действие определенное количество раз.

Функцию range() можно использовать тремя способами:

  • range(stop): Генерирует числа от 0 до stop (не включая stop).
  • range(start, stop): Генерирует числа от start до stop (не включая stop).
  • range(start, stop, step): Генерирует числа от start до stop с шагом step.

Давайте посмотрим, как это работает. Откройте файл range_example.py в проводнике файлов и добавьте следующий код:

## Use range(stop) to print numbers from 0 to 4
print("Numbers from 0 to 4:")
for i in range(5):
  print(i)

print("\n" + "="*20 + "\n") ## A separator for clarity

## Use range(start, stop) to print numbers from 2 to 5
for i in range(2, 6):
  print(i)

print("\n" + "="*20 + "\n") ## A separator for clarity

## Use range(start, stop, step) to print odd numbers from 1 to 9
print("Odd numbers from 1 to 9:")
for i in range(1, 10, 2):
  print(i)

Сохраните файл и запустите его из терминала:

python range_example.py

Вы должны увидеть следующий вывод:

Numbers from 0 to 4:
0
1
2
3
4

====================

Numbers from 2 to 5:
2
3
4
5

====================

Odd numbers from 1 to 9:
1
3
5
7
9

Обратите внимание, что значение stop никогда не включается в последовательность. Если вам нужно выполнить действие фиксированное количество раз, но вам не нужно значение счетчика, вы можете использовать нижнее подчеркивание _ в качестве имени переменной. Это распространенная конвенция (общепринятая практика) в Python.

## This loop will execute 5 times
for _ in range(5):
  print("Hello")

Введение в циклы while

На этом шаге вы узнаете о цикле while. В отличие от цикла for, который выполняет итерации фиксированное количество раз, цикл while продолжает выполняться до тех пор, пока указанное условие остается истинным (True).

Базовый синтаксис цикла while:

while condition:
  ## Код для выполнения
  ## ВАЖНО: Обновите переменную, чтобы в конечном итоге условие стало ложным (False)

Крайне важно убедиться, что условие в конечном итоге станет ложным. В противном случае вы создадите бесконечный цикл (infinite loop), который заставит вашу программу работать вечно.

Давайте создадим скрипт, который использует цикл while для вывода чисел от 1 до 5. Откройте файл while_loop_example.py и добавьте следующий код:

## Initialize a counter variable
count = 1

## The loop continues as long as 'count' is less than or equal to 5
while count <= 5:
  ## Print the current value of count
  print(count)
  ## Increment count by 1. This is essential to prevent an infinite loop.
  count = count + 1 ## This can also be written as count += 1

Сохраните файл и запустите его из терминала:

python while_loop_example.py

Вы должны увидеть следующий вывод:

1
2
3
4
5

Вот как работает цикл:

  1. Переменной count присваивается начальное значение 1.
  2. Проверяется условие count <= 5. 1 <= 5 истинно (True), поэтому тело цикла выполняется.
  3. Выводится 1, и count увеличивается до 2.
  4. Условие проверяется снова. 2 <= 5 истинно (True), поэтому цикл продолжается.
  5. Этот процесс повторяется до тех пор, пока count не станет равным 6.
  6. Когда count равно 6, условие 6 <= 5 ложно (False), и цикл завершается.

Используйте циклы for, когда вы заранее знаете количество итераций. Используйте циклы while, когда повторение зависит от условия, которое может меняться во время выполнения.

Управление потоком цикла с помощью break и continue

Python предоставляет два оператора, break и continue, для изменения нормального потока выполнения цикла.

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

Давайте рассмотрим пример. Откройте файл break_example.py и добавьте этот код, который останавливает цикл при выполнении определенного условия:

## Iterate through numbers from 0 to 9
for i in range(10):
  ## If i is 5, the 'if' condition becomes True
  if i == 5:
    print(f"Breaking loop at i = {i}")
    ## The break statement exits the loop immediately
    break
  print(i)

print("Loop finished.")

Сохраните файл и запустите его:

python break_example.py

Вывод будет следующим:

0
1
2
3
4
Breaking loop at i = 5
Loop finished.

Цикл остановился, когда i стало равно 5, и числа от 5 до 9 напечатаны не были.

Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.

Давайте посмотрим, как можно использовать continue для пропуска вывода определенного числа. Откройте файл continue_example.py и добавьте следующий код:

## Initialize a counter
count = 0

## Loop while count is less than 10
while count < 10:
  count += 1
  ## If count is 5, the 'if' condition becomes True
  if count == 5:
    print(f"Skipping iteration at count = {count}")
    ## The continue statement skips the rest of this iteration
    continue
  ## This line is skipped when count is 5
  print(count)

print("Loop finished.")

Сохраните файл и запустите его:

python continue_example.py

Вывод будет следующим:

1
2
3
4
Skipping iteration at count = 5
6
7
8
9
10
Loop finished.

В этом случае, когда count было равно 5, был выполнен оператор continue. Это привело к тому, что строка print(count) была пропущена для этой итерации, и цикл перешел к следующей итерации, где count стало равно 6.

Резюме

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

Далее вам был представлен цикл while для создания циклов, которые выполняются до тех пор, пока условие истинно. Наконец, вы узнали, как управлять выполнением цикла с помощью оператора break для досрочного выхода из цикла и оператора continue для пропуска итерации. Эти концепции являются основополагающими для написания эффективных и мощных программ на Python.