Как использовать цикл while в Python для обработки данных ♾️
В данной статье мы изучим использование цикла while в Python. Мы рассмотрим, в каких случаях цикл while может быть полезен и как правильно использовать его в коде на примерах.
Что такое цикл while в Python
Цикл while в Python - это инструмент, который позволяет повторять определенный блок кода до тех пор, пока заданное условие остается истинным.
В отличие от цикла for, который выполняет итерацию по элементам, цикл while продолжает выполняться до тех пор, пока условие не перестанет выполняться.
Если условие с самого начала ложное, то тело цикла while ни разу не выполнится.
Если вам интересно, вы можете ознакомиться с соотстветующей статьей о цикле for.
Конструкция цикла while в Python
Конструкция цикла while в Python выглядит следующим образом:
while test_expression:
body of while
- Cначала программа оценивает логическое выражение
test_expression
, которое определяет, будет ли выполняться тело цикла; - Если
test_expression
истинно, то выполняется тело циклаbody of while
; - После выполнения тела цикла программа возвращается к началу цикла, чтобы снова проверить логическое выражение
test_expression
; - Цикл продолжает выполняться до тех пор, пока
test_expression
остается истинным. Как толькоtest_expression
становится ложным, программа выходит из цикла и продолжает выполнение кода за его пределами.
Примеры использования цикла while в Python
Самый простейший пример цикла while:
nums = 1 # Начало
while nums <= 10: # Конец (включительно)
print('Цикл выполнился', nums, 'раз(а)')
nums += 1
Этот код выведет числа от 1 до 10 включительно, используя цикл while.
Сначала мы инициализируем переменную nums
значением 1, а затем входим в цикл while, который будет продолжаться до тех пор, пока nums меньше или равно 10.
Внутри цикла мы выводим значение nums
на экран, а затем увеличиваем его на 1 с помощью оператора +=
. Когда nums
достигнет значения 11, условие в заголовке цикла станет ложным, и выполнение программы продолжится за пределами цикла.
Результат выполнения кода:
>>> Цикл выполнился 1 раз(а)
>>> Цикл выполнился 2 раз(а)
>>> Цикл выполнился 3 раз(а)
>>> Цикл выполнился 4 раз(а)
>>> Цикл выполнился 5 раз(а)
>>> Цикл выполнился 6 раз(а)
>>> Цикл выполнился 7 раз(а)
>>> Цикл выполнился 8 раз(а)
>>> Цикл выполнился 9 раз(а)
>>> Цикл выполнился 10 раз(а)
Цикл while и условие if-else имеют некоторое сходство, поскольку оба используют логические выражения для принятия решений о том, какой код нужно выполнить.
Однако, в цикле while мы имеем возможность повторять выполнение определенного блока кода, пока логическое выражение остается истинным, в отличие от условия if-else, где мы выбираем, какой код нужно выполнить на основе того, истинно ли логическое выражение в данном случае или нет.
Цикл while может быть бесконечным, если условие никогда не станет ложным. Поэтому важно быть осторожным при использовании циклов while и убедиться, что логическое выражение в их условии будет гарантированно ложным в некоторый момент времени, чтобы избежать бесконечного выполнения программы.
Пример бесконечного использования:
import time
a = 1
if a == 1:
print("Я условие IF, и я выполнюсь один раз при истинном выражении")
while a == 1:
print("Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино")
time.sleep(5)
В данном примере мы инициализируем переменную a со значением 1, а затем создаем бесконечный цикл while, который будет выполняться, пока значение a остается равным 1 и условие if которое отработает один раз.
Результат выполнения кода:
>>> Я условие IF, и я выполнюсь один раз при истинном выражении
>>> Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино
>>> Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино
>>> Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино
>>> ...
Пример счетчика с помощью цикла while:
count = 0
while count < 10:
print(count)
count += 1
Этот код создает переменную count
и устанавливает ее значение на 0. Затем цикл while повторяет блок кода, пока значение count
меньше 10. Внутри цикла мы выводим значение переменной count
, а затем увеличиваем ее на 1 при помощи оператора +=
.
Результат выполнения:
>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
>>> 6
>>> 7
>>> 8
>>> 9
Игра в угадай число:
import random
number = random.randint(1, 10)
guess = int(input("Угадайте число от 1 до 10: "))
while guess != number:
if guess < number:
print("Загаданное число больше")
else:
print("Загаданное число меньше")
guess = int(input("Попробуйте еще раз: "))
print("Вы угадали число!")
Результат:
>>> Угадайте число от 1 до 10: 2
>>> Загаданное число больше
>>> Попробуйте еще раз: 2
>>> Загаданное число больше
>>> Попробуйте еще раз: 3
>>> Вы угадали число!
Этот код создает игру, в которой пользователь должен угадать загаданное компьютером число от 1 до 10. Код работает так:
- Сначала импортируется модуль random, чтобы можно было сгенерировать случайное число.
- С помощью функции
randint()
модуля random генерируется случайное число от 1 до 10, которое сохраняется в переменнойnumber
. Затем пользователю предлагается угадать число с помощью функцииinput()
. Результат функции приводится к типуint
и сохраняется в переменнойguess
. - После этого начинается цикл while, который будет продолжаться, пока значение переменной guess не будет равно загаданному числу.
- Внутри цикла с помощью условного оператора if-else проверяется, больше или меньше загаданное число, чем число, введенное пользователем. Соответствующее сообщение выводится на экран с помощью функции
print()
. - Затем пользователь снова должен ввести число с помощью функции
input()
. Результат функции приводится к типуint
и сохраняется в переменнойguess
. - Если пользователь угадал число, цикл завершается, и на экран выводится сообщение "Вы угадали число!".
- Если пользователь не угадал число с первой попытки, то цикл продолжается, и пользовательу предлагается ввести число еще раз.
- Если пользователь ошибается снова, то сообщение о том, больше или меньше загаданное число, чем число, введенное пользователем, выводится на экран снова, и цикл продолжается.
- Цикл продолжается до тех пор, пока пользователь не угадает число.
Ввод чисел с клавиатуры, пока не будет введено значение 0:
sum = 0
num = int(input("Введите число (для выхода введите 0): "))
while num != 0:
sum += num
num = int(input("Введите число (для выхода введите 0): "))
print("Сумма чисел: ", sum)
Результат:
>>> Введите число (для выхода введите 0): 2
>>> Введите число (для выхода введите 0): 3
>>> Введите число (для выхода введите 0): 6
>>> Введите число (для выхода введите 0): 3
>>> Введите число (для выхода введите 0): 0
>>> Сумма чисел: 14
В примере выше запрашиваем у пользователя числа до тех пор, пока он не введет 0.
Прерывание цикла с помощью ключевых слов
Ключевое слово break используется для прерывания выполнения цикла и передачи управления в конец цикла. Как только интерпретатор Python встречает ключевое слово break, он сразу же выходит из цикла, независимо от того, выполнено условие или нет.
Например, в цикле while можно использовать ключевое слово break для выхода из цикла, если значение переменной достигнет определенного условия:
count = 0
while count < 10:
print(count)
count += 1
if count == 5:
break
Результат:
>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
В этом примере цикл while будет продолжаться, пока значение переменной count
меньше 10. Как только count
становится равным 5, интерпретатор Python выполняет оператор break и выходит из цикла.
Ключевое слово continue используется в Python для пропуска текущей итерации цикла и перехода к следующей итерации. Если в теле цикла while встретится инструкция continue, то оставшаяся часть тела цикла не будет выполнена, и выполнение перейдет к проверке условия цикла для следующей итерации.
Например, вот код, который выводит на экран только четные числа в диапазоне от 1 до 10, используя ключевое слово continue:
i = 1
while i <= 10:
if i % 2 == 1:
# Если число нечетное, то переходим к следующей итерации цикла
i += 1
continue
# Если число четное, то выводим его на экран
print(i)
i += 1
Результат:
>>> 2
>>> 4
>>> 6
>>> 8
>>> 10
В этом примере, если i
является нечетным числом, то программа переходит к следующей итерации цикла без выполнения оставшейся части тела цикла. Если i
является четным числом, то программа выводит его на экран и переходит к следующей итерации цикла.