Цикл while в языке Python: примеры и рекомендации

Раздел: Управление потоком -> Циклы

Основы цикла while

Как выполнить повторяющиеся действия пока истинно условие?

Цикл while в Python многократно выполняет блок кода, пока заданное условие остаётся истинным. Базовый синтаксис:

i = 1
while i <= 5:
    print(i)
    i += 1

значение range в python (значение range() в python)

1
2
3
4
5

значение while в python (значение while в python)

Здесь переменная i инициализируется единицей. На каждой итерации проверяется условие i <= 5. Пока оно истинно, выводится значение i, и оно увеличивается на 1. Как только i становится 6, условие становится ложным, и цикл завершается.

Типичная ошибка:

Забыть обновить счётчик внутри цикла. Если убрать строку i += 1, условие никогда не станет ложным, возникнет бесконечный цикл. Выход из такой программы осуществляется через прерывание (Ctrl+C).

Как организовать бесконечный цикл?

Бесконечный цикл (while True) полезен, когда выход из цикла происходит по внутреннему условию, а не по проверке в заголовке. Пример:

while True:
    cmd = input("Введите команду: ")
    if cmd == "exit":
        break
    print(f"Выполняю команду {cmd}")

как сделать бесконечный цикл в python (создание бесконечного цикла в python)

Введите команду: start
Выполняю команду start
Введите команду: exit

цикл с параметром в python (цикл с параметром в python)

В этом примере цикл продолжается, пока пользователь не введёт "exit". Оператор break немедленно завершает цикл.

Проблема:

При отсутствии break или другого способа выхода программа зависнет. Нужно всегда предусматривать условие для прерывания.

Как пропустить часть итерации?

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

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

цикл while python пример (пример цикла while в python)

2
4
6
8
10

алгоритм while python (цикл while в python)

Когда встречается нечётное число, continue возвращает управление проверке условия, и print не выполняется.

Ошибка:

Помещение обновления счётчика после continue может привести к бесконечному циклу, так как счётчик не увеличится. В данном примере обновление выполняется перед проверкой, поэтому проблем нет.

Как выполнить код после нормального завершения цикла?

Блок else у цикла while срабатывает, если цикл завершился естественным путём (условие стало ложным), а не через break.

num = 7
div = 2
while div < num:
    if num % div == 0:
        print(f"{num} делится на {div}")
        break
    div += 1
else:
    print(f"{num} простое число")

Python бесконечный (бесконечный цикл while в python)

7 простое число

какие циклы существуют в python (какие циклы существуют в python?)

Если число делится на какой-то делитель, цикл прерывается через break, и блок else не выполняется. Если делитель не найден, выполняется код в else.

Как использовать несколько условий?

Условие в while может объединять логические операторы (and, or). Например, поиск первого общего кратного двух чисел:

a, b = 4, 6
k = 1
while k % a != 0 or k % b != 0:
    k += 1
print(f"НОК({a}, {b}) = {k}")

команда break в python (оператор break в python)

НОК(4, 6) = 12

программирование циклических алгоритмов python (циклические алгоритмы в python)

Цикл продолжается, пока k не станет делиться без остатка на оба числа.

Как обработать ввод пользователя с проверкой?

Цикл while часто применяется для запроса данных, пока не будет введено корректное значение.

age = None
while age is None:
    user_input = input("Сколько вам лет? ")
    try:
        val = int(user_input)
        if 0 <= val <= 120:
            age = val
        else:
            print("Введите число от 0 до 120")
    except ValueError:
        print("Ошибка: введите целое число")
print(f"Ваш возраст: {age}")
Сколько вам лет? abc
Ошибка: введите целое число
Сколько вам лет? 200
Введите число от 0 до 120
Сколько вам лет? 25
Ваш возраст: 25

Переменная age остаётся None, пока не будет введено подходящее число. try/except обрабатывает ошибки преобразования.

Расширенные примеры с циклом while

1. Вычисление факториала с проверкой ввода

Программа запрашивает неотрицательное целое число и вычисляет его факториал. Если пользователь вводит некорректное значение, запрос повторяется.

Пример
def get_positive_int():
    value = None
    while value is None:
        s = input("Введите неотрицательное целое число: ")
        try:
            n = int(s)
            if n >= 0:
                value = n
            else:
                print("Число должно быть больше или равно 0")
        except ValueError:
            print("Некорректный ввод, попробуйте снова")
    return value

n = get_positive_int()
result = 1
i = 1
while i <= n:
    result *= i
    i += 1
print(f"{n}! = {result}")
Введите неотрицательное целое число: -5
Число должно быть больше или равно 0
Введите неотрицательное целое число: 5
5! = 120

2. Игра «Угадай число» с ограничением попыток

Компьютер загадывает число от 1 до 100. Игрок отгадывает, вводя числа. Цикл завершается при угадывании или когда попытки (7) исчерпаны.

Пример
import random

secret = random.randint(1, 100)
attempts = 7
guessed = False

while attempts > 0 and not guessed:
    print(f"Осталось попыток: {attempts}")
    try:
        guess = int(input("Ваше предположение: "))
    except ValueError:
        print("Введите целое число")
        continue
    attempts -= 1
    if guess == secret:
        guessed = True
        print("Поздравляю! Вы угадали.")
    elif guess < secret:
        print("Загаданное число больше.")
    else:
        print("Загаданное число меньше.")

if not guessed:
    print(f"Попытки закончились. Было загадано {secret}.")
Осталось попыток: 7
Ваше предположение: 50
Загаданное число больше.
Осталось попыток: 6
... (пример зависимости от ввода)

3. Чтение файла построчно до конца

Цикл while удобен, когда количество строк заранее неизвестно. Используется метод readline, возвращающий пустую строку при достижении конца файла.

Пример
with open("data.txt", "w") as f:
    f.write("строка1\nстрока2\nстрока3\n")

with open("data.txt", "r") as f:
    line = f.readline()
    while line:
        print(line, end="")
        line = f.readline()
строка1
строка2
строка3

Условие while line ложно, когда readline возвращает пустую строку (конец файла). Обратите внимание: пустая строка может означать и пустую строчку в файле; чтобы различить, используют проверку line == ''.

4. Симуляция банкомата с меню

Пользователь выбирает действия: посмотреть баланс, снять или внести деньги, выйти. Цикл повторяется до выбора выхода.

Пример
balance = 1000.0
while True:
    print("\n1. Баланс")
    print("2. Снять деньги")
    print("3. Внести деньги")
    print("4. Выход")
    choice = input("Выберите действие: ")
    if choice == "1":
        print(f"Ваш баланс: {balance:.2f}")
    elif choice == "2":
        amount = float(input("Сумма снятия: "))
        if amount > balance:
            print("Недостаточно средств")
        else:
            balance -= amount
            print(f"Снято {amount:.2f}. Остаток {balance:.2f}")
    elif choice == "3":
        amount = float(input("Сумма внесения: "))
        balance += amount
        print(f"Внесено {amount:.2f}. Текущий баланс {balance:.2f}")
    elif choice == "4":
        print("До свидания!")
        break
    else:
        print("Некорректный ввод, попробуйте снова")
1. Баланс
2. Снять деньги
3. Внести деньги
4. Выход
Выберите действие: 2
Сумма снятия: 500
Снято 500.00. Остаток 500.00
... (продолжение)

5. Генерация последовательности Фибоначчи до заданного предела

Цикл while позволяет генерировать числа Фибоначчи, не превышающие заданное значение.

Пример
limit = 100
a, b = 0, 1
print("Числа Фибоначчи:")
while a <= limit:
    print(a, end=" ")
    a, b = b, a + b
print()
Числа Фибоначчи:
0 1 1 2 3 5 8 13 21 34 55 89

Каждая итерация обновляет a и b одновременно, используя параллельное присваивание.

6. Поиск элемента в списке с помощью while и else

Проверка наличия элемента в неотсортированном списке. Блок else срабатывает, если элемент не найден.

Пример
fruits = ["яблоко", "банан", "вишня", "дыня"]
target = "апельсин"
index = 0
found = False

while index < len(fruits):
    if fruits[index] == target:
        found = True
        print(f"Элемент '{target}' найден на позиции {index}.")
        break
    index += 1
else:
    print(f"Элемент '{target}' не найден в списке.")
Элемент 'апельсин' не найден в списке.

Если бы целевой элемент присутствовал, цикл прервался бы через break, и блок else не выполнился бы.

Пример цикла while в Python - comments

En
цикл while python пример (python)