Интерактивный учебник языка Python
Занятие 6. Цикл while
1. Цикл while
Цикл while (“пока”) позволяет выполнить
одну и ту же последовательность действий, пока проверяемое условие истинно.
Условие записывается до тела цикла и проверяется до выполнения тела цикла.
Как правило, цикл while используется, когда невозможно
определить точное значение количества проходов исполнения цикла.
Синтаксис цикла while в простейшем случае выглядит так:
while условие:
блок инструкцийПри выполнении цикла while сначала проверяется условие.
Если оно ложно, то выполнение цикла прекращается и управление
передается на следующую инструкцию после тела цикла while.
Если условие истинно, то выполняется инструкция, после чего условие
проверяется снова и снова выполняется инструкция.
Так продолжается до тех пор, пока условие будет истинно.
Как только условие станет ложно, работа цикла завершится и
управление передастся следующей инструкции после цикла.
Например, следующий фрагмент программы напечатает на экран
квадраты всех целых чисел от 1 до 10. Видно, что цикл while может заменять цикл for ... in range(...):
i = 1
while i <= 10:
print(i ** 2)
i += 1В этом примере переменная i внутри цикла изменяется от 1 до 10.
Такая переменная, значение которой меняется с каждым новым проходом цикла,
называется счетчиком. Заметим, что после выполнения этого фрагмента
значение переменной i будет равно 11,
поскольку именно при i == 11 условие i <= 10 впервые
перестанет выполняться.
Вот еще один пример использования цикла для определения количества цифр натурального числа n:
n = int(input())
length = 0
while n > 0:
n //= 10 # это эквивалентно n = n // 10
length += 1
print(length)В этом цикле мы отбрасываем по одной цифре числа, начиная с конца,
что эквивалентно целочисленному делению на 10 (n //= 10),
при этом считаем в переменной length, сколько раз это было сделано.
В языке Питон есть и другой способ решения этой задачи: length = len(str(i)).
2. Инструкции управления циклом
После тела цикла можно написать слово и после него блок операций, который будет
выполнен один раз после окончания цикла, когда проверяемое
условие станет неверно:
i = 1
while i <= 10:
print(i)
i += 1
else:
print('Цикл окончен, i =', i)Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно
просто написать после окончания цикла. Смысл появляется только
вместе с инструкцией break. Если во время выполнения Питон встречает
инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него.
При этом ветка else исполняться не будет. Разумеется, инструкцию осмыленно
вызывать только внутри инструкции if, то есть она должна выполняться
только при выполнении какого-то особенного условия.
Приведем пример программы, которая считывает числа до тех пор, пока не встретит отрицательное число. При появлении отрицательного числа программа завершается. В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).
a = int(input())
while a != 0:
if a < 0:
print('Встретилось отрицательное число', a)
break
a = int(input())
else:
print('Ни одного отрицательного числа не встретилось') Во втором варианте программы сначала на вход подается количество элементов последовательности, а затем
и сами элементы. В таком случае удобно воспользоваться циклом for. Цикл for также может иметь ветку else и содержать инструкции break внутри себя.
n = int(input())
for i in range(n):
a = int(input())
if a < 0:
print('Встретилось отрицательное число', a)
break
else:
print('Ни одного отрицательного числа не встретилось')Другая инструкция управления циклом — continue (продолжение цикла).
Если инструкции break и continue содержатся внутри нескольких вложенных
циклов, то они влияют лишь на исполнение самого внутреннего цикла. Вот не самый интеллектуальный пример,
который это демонстрирует:
for i in range(3):
for j in range(5):
if j > i:
break
print(i, j) Увлечение инструкциями break и continue не поощряется, если можно обойтись без их использования. Вот типичный пример
break (данный код считает количество знаков в числе).n = int(input())
length = 0
while True:
length += 1
n //= 10
if n == 0:
break
print('Длина числа равна', length)Гораздо лучше переписать этот цикл так:
n = int(input())
length = 0
while n != 0:
length += 1
n //= 10
print('Длина числа равна', length)Впрочем, на Питоне можно предложить и более изящное решение:
n = int(input())
print('Длина числа равна', len(str(n)))3.

a, b = 0, 1Этот код можно записать и так:
a = 0 b = 1Отличие двух способов состоит в том, что множественное присваивание в первом способе меняет значение двух переменных одновременно.
Если слева от знака «=» в множественном присваивании должны стоять через запятую имена переменных, то справа могут стоять произвольные выражения, разделённые запятыми. Главное, чтобы слева и справа от знака присваивания было одинаковое число элементов.
Множественное присваивание удобно использовать, когда нужно обменять значения двух переменных. В обычных языках программирования без использования специальных функций это делается так:
a = 1 b = 2 tmp = a a = b b = tmp print(a, b) # 2 1
В Питоне то же действие записывается в одну строчку:
a = 1 b = 2 a, b = b, a print(a, b) # 2 1
Ссылки на задачи доступны в меню слева.
Эталонные решения теперь доступны на странице самой задачи.
Телеграм-канал создателя Питонтьютора 🌈
Интерактивный учебник языка Python
Занятие 6. Цикл while
Задача «Числа Фибоначчи»
Условие
Последовательность Фибоначчи определяется так:
φ0 = 0, φ1 = 1, φn = φn−1 + φn−2.
По данному числу n определите n-е число Фибоначчи φn.
Эту задачу можно решать и циклом for.
Во всех задачах считывайте входные данные через input() и выводите ответ через print().
Войти или зарегистрироваться, чтобы отправлять решения на проверку
Тесты| Входные данные | Правильный ответ | Что вывела программа | Результат | |
|---|---|---|---|---|
6 | 8 | |||
0 | 0 | |||
2 | 1 | |||
3 | 2 | |||
4 | 3 | |||
1 | 1 | |||
5 | 5 | |||
7 | 13 | |||
8 | 21 | |||
9 | 34 | |||
10 | 55 | |||
11 | 89 | |||
12 | 144 | |||
13 | 233 | |||
14 | 377 | |||
15 | 610 | |||
16 | 987 | |||
17 | 1597 | |||
18 | 2584 | |||
19 | 4181 | |||
20 | 6765 |
Телеграм-канал создателя Питонтьютора 🌈
Кейси Масгрейвс клянется разорвать порочный круг «отвратительных» событий, вызванных расизмом
Кейси Масгрейвс поделилась, что она «возмущена» и «грустна» после смерти Джорджа Флойда.
Прочтите ее заявление о расизме и системных привилегиях.Автор Джесс Коэн
В понедельник суперзвезда кантри-музыки в Твиттере высказался после смерти 9 человек.0011 Джордж Флойд . В своем обращении к фанатам 31-летняя девушка пообещала разорвать порочный круг, вызванный расизмом и «системными привилегиями».
«Было трудно подобрать слова, чтобы адекватно передать, насколько я возмущен и опечален. БЕЛЫЕ ЛЮДИ С НАЧАЛА БЫЛИ ЭТО ТАК НЕПРАВИЛЬНО, и я сделаю все, что в моих силах, я помогу сломать ОТВРАТИТЕЛЬНЫЙ, разрушительный циклический расизм и системные привилегии», — написала Масгрейвс в своем сообщении в понедельник. «Я не буду сторонним наблюдателем».
Масгрейвс также поделилась списком того, как ее поклонники могут помочь в борьбе, включая подписание петиций и пожертвования.
Делясь этим заявлением, Масгрейвс присоединяется к растущему списку звезд, говорящих о смерти Флойда. Его убийство от рук полиции Миннесоты вызвало призывы к правосудию и спровоцировало серию протестов по всему миру.
фото
Знаменитости высказались в ответ на смерть Джорджа Флойда
В понедельник утром брат Джорджа Терренс Флойд рассказал о смерти своего брата и сестры и поделился своим призывом к переменам.
«Это было просто опустошительно, я чувствую, что все еще немного оцепенел от этого», — сказал Терренс о смерти своего брата в интервью ABC News с Робин Робертс .
«Когда вы разговаривали с ним, он всегда хотел мотивировать вас, независимо от того, через что вы проходили», — сказал Терренс Робертсу, добавив, что его брат всегда видел «светлую сторону» вещей.
Трудно подобрать слова, чтобы адекватно передать, насколько я возмущен и опечален. У БЕЛЫХ ЛЮДЕЙ ЭТО ТАК НЕПРАВИЛЬНО С НАЧАЛА, и я сделаю все, что в моих силах, чтобы помочь сломать ОТВРАТИТЕЛЬНЫЙ, разрушительный циклический расизм и причины системных привилегий. Я не буду сторонним наблюдателем.
— K A C E Y (@KaceyMusgraves) 1 июня 2020 г.
Райан Дорси рассказывает, что сын Джози знает о покойной маме Найе Ривере
Самые большие изменения У него и Коко Остин будет еще один ребенок
Терренс продолжал обсуждать «деструктивное единство», которое имеет место в некоторых протестах, призывая к «позитивным» изменениям.
«Я чувствую, что это затмевает то, что происходит, потому что, как я уже сказал, [Джордж] был за мир, он был за единство… то, что происходит сейчас, они могут называть это единством, но это разрушительное единство», — сказал Терренс. . «Это не то, чем он занимался. Это не то, чем занимался мой брат».
«Злиться — это нормально, но направьте свой гнев на что-то позитивное или на изменение другого пути, потому что мы уже прошли этот путь», — добавил Терренс. «Гнев… нанесение ущерба твоему родному городу — это не то, чего он хотел бы».
«E! солидарна с чернокожим сообществом против системного расизма и угнетения, с которыми каждый день сталкивается Америка», — говорится в заявлении сети от 31 мая.
«Мы в долгу перед нашим чернокожим персоналом, талантами, производственными партнерами и зрителями. требовать перемен и ответственности. Молчать — значит быть соучастником. #BlackLivesMatter».
Райан Дорси рассказывает, что сын Джози знает о покойной маме Найе Ривере
Самые большие перемены
Дейзи Джонс и шестеро Ice-T рассказывает, будет ли у него и Коко Остин еще один ребенокВот что произошло во время
Правила Вандерпамп Воссоединение 10-го сезонаМерзкое проявление · Hour of Devastation (HOU) #80 · Scryfall Magic: The Gathering Search
Существо — Ужас
Мерзкое воплощение получает +1/+0 за каждую карту с циклом на вашем кладбище.
Велоспорт {2} ( {2} , сбросьте эту карту: возьмите карту.)
Символы корчились и искривлялись, извергая темную, мстительную магию.
0/4
Проиллюстрировано Джейсон Феликс
- Стандарт
- Незаконно
- Алхимия
- Незаконно
- Пионер
- Юрисконсульт
- Проводник
- Юридический
- Современный
- Юридический
- Драка
- Незаконно
- Наследие
- Юридический
- Исторический
- Юридический
- Винтаж
- Юридический
- Нищий
- Незаконно
- Командир
- Юридический
- Пенни
- Незаконно
- Клятвопреступник
- Юридический
ru эс фр де это пт да ко RU 汉语 漢語 ⋮
| Отпечатки | долларов США | евро | ТИКС |
|---|---|---|---|
| Амонхет обновленный | |||
| Час Разрушения | 0,11 доллара США | 0,05 € | 0,03 |
| Посмотреть все принты → | |||
Набор инструментов
Купить эту карту
Изображения и данные
Примечания и правила Информация для Мерзкое проявление:
- Первая способность Vile Manifestation учитывает только карты с циклическими способностями на вашем кладбище.



