Цикл while: больше примеров
Давайте посмотрим на другой пример, использующий цикл while
. Следите за комментариями, чтобы узнать идею и решение.
# A program that reads a sequence of numbers
# and counts how many numbers are even and how many are odd.
# The program terminates when zero is entered.
odd_numbers = 0
even_numbers = 0
# Read the first number.
number = int(input("Enter a number or type 0 to stop: "))
# 0 terminates execution.
while number != 0:
# Check if the number is odd.
if number % 2 == 1:
# Increase the odd_numbers counter.
odd_numbers += 1
else:
# Increase the even_numbers counter.
even_numbers += 1
# Read the next number.
number = int(input("Enter a number or type 0 to stop: "))
# Print results.
print("Odd numbers count:", odd_numbers)
print("Even numbers count:", even_numbers)
Некоторые выражения можно упростить без изменения поведения программы.
Попытайтесь вспомнить, как Python интерпретирует истинность условия, и обратите внимание, что эти две формы эквивалентны:
while number != 0:
and while number:
.
Условие, которое проверяет, является ли число нечетным, также может быть закодировано в этих эквивалентных формах:
if number % 2 == 1:
and if number % 2:
.
Использование переменной counter для выхода из цикла
Посмотрите на фрагмент кода ниже:
counter = 5
while counter != 0:
print("Inside the loop.", counter)
counter -= 1
print("Outside the loop.", counter)
Этот код предназначен для печати строки "Внутри цикла."
и значения, хранящегося в переменной counter
, во время данного цикла ровно пять раз. Если условие не выполнено (переменная counter
достигла значения 0
), цикл завершается и появляется сообщение "Вне цикла."
, а также значение, хранящееся в counter
, распечатывается.
Но есть одна вещь, которую можно записать более компактно - условие цикла while
.
Видите разницу?
counter = 5
while counter:
print("Inside the loop.", counter)
counter -= 1
print("Outside the loop.", counter)
Компактнее, чем раньше? Немного. Более разборчиво? Спорно.
ПОМНИТЕ
Не чувствуйте себя обязанным кодировать свои программы таким образом, чтобы он всегда был самым коротким и компактным. Читаемость может быть более важным фактором. Держите свой код готовым для нового программиста.