Цикл 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 не выполнился бы.