Как использовать цикл while в Python для обработки данных ♾️
Python

Как использовать цикл while в Python для обработки данных ♾️

Razilator

В данной статье мы изучим использование цикла 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:

main.py
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 и убедиться, что логическое выражение в их условии будет гарантированно ложным в некоторый момент времени, чтобы избежать бесконечного выполнения программы.

Пример бесконечного использования:

main.py
import time
a = 1

if a == 1:
    print("Я условие IF, и я выполнюсь один раз при истинном выражении")

while a == 1:
    print("Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино")
    time.sleep(5)

В данном примере мы инициализируем переменную a со значением 1, а затем создаем бесконечный цикл while, который будет выполняться, пока значение a остается равным 1 и условие if которое отработает один раз.

Результат выполнения кода:

main.py
>>> Я условие IF, и я выполнюсь один раз при истинном выражении
>>> Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино
>>> Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино
>>> Я цикл WHILE, и я буду выполняться бесконечно, пока выражение истино
>>> ...

Пример счетчика с помощью цикла while:

main.py
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

Игра в угадай число:

main.py
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:

main.py
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 для выхода из цикла, если значение переменной достигнет определенного условия:

main.py
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:

main.py
i = 1
while i <= 10:
    if i % 2 == 1:
        # Если число нечетное, то переходим к следующей итерации цикла
        i += 1
        continue
    # Если число четное, то выводим его на экран
    print(i)
    i += 1

Результат:

Терминал
>>> 2
>>> 4
>>> 6
>>> 8
>>> 10

В этом примере, если i является нечетным числом, то программа переходит к следующей итерации цикла без выполнения оставшейся части тела цикла. Если i является четным числом, то программа выводит его на экран и переходит к следующей итерации цикла.

;