Skip to main content

Циклы в Python

For and While Loops in Python

В Python есть два типа циклов: циклы for и циклы while.

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

Синтаксис Цикла for в Python

Пример использования цикла for для итерации по списку в Python:

cars = ["bmw", "audi", "renault"]
for car in cars:
    print(car)

В этом примере у нас есть список машин, и мы хотим напечатать каждую машину на новой строке. Мы используем цикл for для итерации по каждому элементу в списке, и для каждого элемента мы печатаем его в консоль с помощью функции print.

Встроенный Цикл for

В этом примере у нас есть список чисел, и мы хотим создать новый список, который содержит квадрат каждого числа. Вместо использования традиционного цикла for, мы используем "list comprehension", которое является более кратким способом достижения того же результата.

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)

В этом случае выражение x**2, которое является квадратом текущего числа в итерации, а итерируемый объект - список чисел. Результатом является новый список, содержащий квадрат каждого числа: [1, 4, 9, 16, 25].

Цикл For с Индексом

В этом примере цикл проходит по списку cars и печатает индекс и значение каждого элемента:

cars = ["bmw", "audi", "renault"]
for i in range(len(cars)):
    print(i, car[i])

Функция Степени в Python с Использованием Цикла

def power(a, b):
    pow = 1
    for i in range(b):
        pow *= a
    return pow

a = 2
b = 3
print(power(a, b))

Циклы while в Python

Вот пример цикла while, который считает от 1 до 10:

count = 1
while count <= 10:
    print(count)
    count += 1

В этом примере, цикл начинается с count равным 1. Условие count <= 10 является true, поэтому код внутри цикла выполняется. Этот код печатает значение count (которое в данный момент 1) а затем увеличивает count на 1 используя оператор +=. Затем цикл проверяет условие снова, которое все еще true, потому что теперь count равно 2. Этот процесс повторяется до тех пор, пока count не достигнет 11, в этот момент условие становится false и цикл завершается.

Примечание: Python не имеет встроенного цикла do-while как некоторые другие языки программирования. Однако, вы можете достичь похожей функциональности используя сочетание цикла while и первоначальной проверки.

Операторы break и continue

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

Пример: Как Использовать break в Цикле for

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num == 3:
        # end for loop
        break
    print(num)

В этом примере цикл проходит по списку numbers и выводит каждое число. Однако, когда значение num равно 3, оператор break завершает цикл for. Вывод будет: 1 2.

Как Использовать continue с Циклом for

Continue, с другой стороны, используется для пропуска итерации цикла на основе условия. При ее встрече текущая итерация цикла заканчивается и начинается следующая итерация. Вот пример того, как пропустить итерацию в цикле for на Python:

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num == 3:
        continue
    print(num)

В этом примере цикл проходит по списку numbers и печатает каждое число. Однако, когда значение num равно 3, выполняется оператор continue, что приводит к завершению текущей итерации цикла и переходу к следующей итерации. Вывод будет: 1 2 4 5.

Пример Использования continue в Цикле while

Использование continue в цикле while в Python - это способ пропустить определенные итерации цикла и перейти к следующей итерации. Это может быть полезно, когда вам нужно пропустить определенные значения или условия в вашем цикле.

i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue
    print(i)

В этом примере, цикл итерирует через числа с 1 по 10. Однако, когда значение i четное, срабатывает оператор continue, заставляя цикл переходить к следующей итерации без выполнения какого-либо кода в текущей итерации.

my_list = [1, 2, 3, 4, 5]
while my_list:
    val = my_list.pop()
    if val == 3:
        continue
    print(val)

В этом примере цикл проходит по значениям в my_list. Когда значение val равно 3, инструкция continue заставляет цикл перейти к следующей итерации, не выводя значение.

Как Прервать Цикл while

Чтобы прервать цикл while в Python, вы можете использовать инструкцию break. Эта инструкция отвечает за остановку дальнейших итераций цикла, как только определенное условие будет выполнено. Синтаксис использования break в цикле while следующий:

while <condition>:
    ### statements to be executed inside the loop

    if <break-condition>:
        break

Здесь <condition> - это условие цикла, которое изначально определяет, следует ли выполнять цикл или нет, а <break-condition> - это дополнительное условие, определяющее условие (условия) для остановки цикла. Как только это условие выполняется, цикл автоматически завершается, и управление передается к следующему оператору после цикла.

n = 1
while n <= 10:
    print(n)
    if n == 5:
        break
    n += 1
print("Loop Ended")

# Output:
# 
# 1
# 2
# 3
# 4
# 5
# Loop Ended

В этом примере, цикл while будет print числа от 1 до 5, а затем stop, как только n == 5. Для достижения этого используется оператор break, и вывод показывает, что цикл завершился после выполнения желаемого условия.

Как Остановить Бесконечный Цикл в Python

while True:
    value = input("Enter a number: ")
    if value == "stop":
        break
    print(int(value) ** 2)
print("Loop Ended")

# Output:
# Enter a number: 2
# 4
# Enter a number: 5
# 25
# Enter a number: 3
# 9
# Enter a number: stop
# Loop Ended

В этом примере цикл while будет продолжать запрашивать у пользователя ввод number, и вычислять его квадрат, если input является number. Если input будет 'stop', цикл прервётся, и управление будет передано к оператору после цикла.

Такой подход помогает избегать бесконечных циклов в Python и контролировать поток выполнения на основе определённых критериев.

Подсчёт в Цикле for

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

count = 0
for i in range(10):
    count += 1
print("The loop executed", count, "times.")

В этом примере мы создаем переменную count и устанавливаем ее начальное значение равным 0. Затем мы используем цикл for, чтобы выполнить итерацию 10 раз, увеличивая переменную count на 1 каждый раз. Наконец, мы выводим общее количество выполненных итераций цикла с помощью print.

fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits, 1):
    print(i, fruit)

В этом примере мы используем встроенную функцию enumerate() для перебора списка fruits и их индексов. Мы начинаем индексацию с 1, передавая второй аргумент в enumerate(). Внутри цикла мы print выводим индекс и название fruit.

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

Вложенные Циклы

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

Вложенные Циклы for в Python

Самый распространенный тип вложенного цикла в Python — это вложенный цикл for. Этот цикл используется для перебора элементов во вложенной структуре с использованием двух или более операторов for.

Простой Пример Вложенных Циклов for

numbers = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row in numbers:
    for num in row:
        print(num)

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

Вложенные Циклы while в Python

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

Пример Вложенных Циклов while

x = 1
y = 1

while x <= 5:
    y = 1
    while y <= x:
        print(y, end="")
        y += 1
    print()
    x += 1

В этом примере мы используем два вложенных цикла while для вывода треугольника из numbers. Внешний цикл while итерирует по каждой row треугольника, в то время как внутренний цикл while итерирует по каждому числу в этой строке.

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

Как Использовать Цикл for с Выражением range

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

for i in range(5):
    print(i)


for i in range(0, 10, 2):
    print(i)

В первом примере, цикл for используется для итерации по диапазону чисел от 0 до 4. Во втором примере, функция range вызывается с тремя аргументами: начальным числом (0), конечным числом (10) и шагом (2). Это сгенерирует последовательность чисел от 0 до 10 (не включая 10) с шагом 2. Цикл for затем проходит через эту последовательность и печатает каждое число.

Обратный Цикл for

for i in range(5, 0, -1):
    print(i)
# Output:
# 5
# 4
# 3
# 2
# 1
a = ['1', '2', '3', '4', '5']

for i in reversed(a):
    print(i)
# Output:
# 5
# 4
# 3
# 2
# 1

Использование оператора range в Python является эффективным способом перебора последовательности чисел и выполнения задачи. Это широко используемый прием в программировании и легко реализуется с помощью цикла for в Python.

Однострочный Цикл for

Использование "list comprehension" позволяет записать цикл for в одну строку в Python. Использование цикла в одной строке может помочь упростить код и сделать его более кратким.

squares = [x**2 for x in range(10)]
print(squares)

Вывод:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
even_numbers = [num for num in range(20) if num % 2 == 0]
print(even_numbers)

# Output:
# 
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

В обоих примерах цикл for сжат до одной строки с использованием генератора списков. Цикл повторяется по range значений и применяет условие к данному range. Это приводит к созданию списка с желаемым результатом.

Использование однострочного цикла for в Python - это мощный инструмент, который может оптимизировать ваш код и сделать его более эффективным.

Изучите глубже эту тему

Пишите вместе с нами!

Вы можете внести свой вклад в статьи о Python на GitHub: создайте Fork, внесите правки и отправьте нам Pull request.

Profile picture for user zerbers
Andrew Zepterавтор
Python engineer, content contributor.
Profile picture for user AliaksandrSumich
Aliaksandr Sumichредактор
Обновлено: 05/03/2024 - 21:52
Profile picture for user angarsky
Evgeniy Melnikovрецензент
Проверено и опубликовано