что это такое, как работает, примеры
Цикл while в Python
В прошлой статье мы изучали цикл for – он
используется в тех случаях, когда заранее известно количество итераций,
совершаемых в цикле. Число исполнений цикла for определяется функцией range()
или размером коллекции. Если диапазон значений не
известен заранее, необходимо использовать другой цикл – while: он выполняется, пока не наступит
определенное событие (или не выполнится необходимое условие). По этой причине
цикл while называют условным. Вот пример простейшего цикла while – он выполняется, пока пользователь
не введет 0
:
n = int(input()) while n != 0: print(n + 5) n = int(input())
Цикл while также часто называют бесконечным, поскольку он может выполняться до тех пор, пока пользователь не остановит его нажатием определенной клавиши.
n = int(input())
в теле цикла, while будет
бесконечно выводить одно и то же значение, пока пользователь не остановит выполнение программы нажатием Ctrl + C.Управление бесконечным циклом while в Питоне
Самый простой способ управления бесконечным циклом –
использование оператора break
.
В приведенном ниже коде список lst
генерируется случайным образом, и до начала цикла его длина
неизвестна. Однако выполнение цикла можно оставить, как только список опустеет
в результате многократного выполнения операции pop()
:
import random lst = [i for i in range(random.randint(5, 500))] while True: if not lst: break print(lst. pop())
Если выполнение цикла не остановить сразу же, как только список опустеет, появится ошибка:
IndexError: pop from empty list
Оператор break
также помогает сократить количество итераций и прекратить выполнение программы, как только нужное решение найдено. Например, таким образом можно найти наименьший делитель числа n, отличный от 1:
n = int(input()) i = 2 while True: if n % i == 0: break i += 1 print(i)
Помимо break
,
управлять бесконечным циклом можно с помощью флагов (сигнальных меток). В
приведенном ниже примере программа бесконечно запрашивает у пользователя ввод
любого слова, пока пользователь не введет
. Это событие меняет статус цикла на False
, и работа программы завершается:
text = 'Введите любое слово: ' text += '\nИли введите exit для выхода: ' active = True while active: message = input(text) if message == 'exit': active = False else: print(message)
Пропуск итераций в цикле while
Оператор continue
можно использовать для пропуска операций, если элементы не соответствуют заданным критериям. Этот код работает, пока не будет сформирован список из 5
элементов – при этом в список не включаются числа в диапазоне между 90 и 120, а
также число 50:
sp = [] while len(sp) < 5: num = int(input()) if num == 50 or 90 <= num <= 120: continue sp.append(num) print(sp)
Если пользователь введет набор цифр 45 50 121 119
95 105 3 4 7
, в список будут добавлены только числа, соответствующие
критериям:
[45, 121, 3, 4, 7]
Особенности цикла while
1. В цикле while можно использовать опциональный параметр else
. В этом примере процедура pop()
выполняется, пока
список не опустеет, после чего выводится сообщение Список пуст
:
import random lst = [i for i in range(random.randint(5, 500))] while len(lst) > 1: print(lst.pop()) else: print('Список пуст')
2. В цикле while можно использовать любое количество условий и условных
операторов and
,
иnot
:
n = int(input()) while True: if n == 0: break elif n > 50 or n <= -50: break elif n % 2 == 0: break print(n / 5) n = int(input())
3. Цикл while может быть вложенным. Этот код выводит простые числа из диапазона от 2 до 100:
i = 2 while(i < 100): j = 2 while j <= i / j: if not i % j: break j = j + 1 if j > i / j: print(f'{i} - простое число') i = i + 1
4. В качестве вложенных циклов while могут включать в себя циклы for. Этот код, к примеру, будет бесконечно печатать цифры в диапазоне от 0 до 5:
while True: for i in range(5): print(i)
5. Любой цикл for можно заменить циклом while, но обратное возможно только в том случае, когда количество итераций можно определить до начала цикла. К примеру, эти циклы while и for равнозначны – оба печатают цифры от 0 до 9:
i = 0 while i < 10: print(i) i += 1 for i in range(10): print(i)
А этот цикл while заменить циклом for невозможно – программа будет бесконечно
возводить в квадрат все введенные пользователем числа, пока не получит 0
:
n = int(input()) while True: if n == 0: break print(n ** 2) n = int(input())
Практика
Задание 1
Напишите программу, которая принимает на вход целые числа и вычисляет их сумму, пока пользователь не введет 0.
4 5 6 0
Вывод:
15
Решение:
summa = 0 while True: n = int(input()) summa += n if n == 0: break print(summa)
Задание 2
Напишите программу, которая получает от пользователя число n > 100, и вычисляет (без использования методов строк) произведение цифр, из которых n состоит.
Пример ввода:
335
Вывод:
45
Решение:
n = int(input()) prod = 1 while n: prod *= n % 10 n //= 10 print(prod)
Задание 3
Напишите программу, которая получает на вход два числа a и b, и находит наименьшее число c, которое без остатка делится на a и b.
Пример ввода:
7 12
Вывод:
84
Решение:
a, b = int(input()), int(input()) c = a while c % b: c += a print(c)
Задание 4
Напишите программу, которая составляет строку из полученных от пользователя слов, пока длина строки не достигнет 50 символов. Слова, начинающиеся с гласных, в строку не включаются.
Пример ввода:
о бойся Бармаглота сын он так свиреп и дик а в глуще рымит
Вывод:
бойся Бармаглота сын так свиреп дик в глуще рымит
Решение:
st = '' while len(st) < 50: word = input() if word[0] in 'аиеёоуыэюя': continue st += ' ' + word print(st)
Задание 5
Напишите программу для конвертации числа из десятичного системы
в двоичную без использования функции bin()
.
Пример ввода:
25
Вывод:
11001
Решение:
n = int(input()) result = '' while n > 0: result = str(n % 2) + result n = n // 2 print(result)
Задание 6
Напишите программу, которая получает на вход число и без использования строковых методов переставляет цифры в обратном порядке.
Пример ввода:
176435
Вывод:
534671
Решение:
n = int(input()) rev = 0 while n!= 0: r = n % 10 rev = rev * 10 + r n = n // 10 print(rev)
Задание 7
Напишите программу для вычисления факториала числа n без использования функции math.factorial()
.
7
Вывод:
5040
Решение:
n = int(input()) fact = 1 while n > 1: fact *= n n -= 1 print(fact)
Задание 8
Напишите программу, которая получает от пользователя число n и определяет, является ли оно простым, или у него есть делители, кроме 1 и самого себя.
Пример ввода:
60
Вывод:
60 делится на 2 60 делится на 3 60 делится на 4 60 делится на 5 60 делится на 6 60 делится на 10 60 делится на 12 60 делится на 15 60 делится на 20 60 делится на 30 Таким образом, 60 не является простым числом
Решение:
n = int(input()) flag = False i = 2 while i < n: if n % i ==0: flag = True print(f'{n} делится на {i}') i += 1 if flag: print(f'Таким образом, {n} не является простым числом') else: print(f'{n} - простое число')
Задание 9
Напишите программу, использующую вложенный цикл while для вывода треугольника
размером n x n х n, состоящего из символов*
.
Пример ввода:
6
Вывод:
* ** *** **** ***** ******
Решение:
n = int(input()) i, j = 0, 0 while i < n: while j <= i: print('*', end='') j += 1 j = 0 i += 1 print('')
Задание 10
Напишите программу для запоминания английских названий месяцев:
1. Русские названия месяцев выводятся в случайном порядке с
помощью метода random.shuffle()
.
2. Пользователь получает три попытки для написания правильного названия на английском.
3. После трех неверных попыток программа переходит к другому слову.
Пример ввода:
Месяц март по-английски называется: march Месяц январь по-английски называется: January Месяц август по-английски называется: august Месяц май по-английски называется: may Месяц апрель по-английски называется: aprile Неверно! Осталось попыток: 2 Месяц апрель по-английски называется: aprill Неверно! Осталось попыток: 1 Месяц апрель по-английски называется: appril Неверно! Осталось попыток: 0 Попытки исчерпаны! Месяц июль по-английски называется: july Месяц сентябрь по-английски называется: september Месяц июнь по-английски называется: june Месяц октябрь по-английски называется: october Месяц ноябрь по-английски называется: november Месяц декабрь по-английски называется: december Месяц февраль по-английски называется: february
Вывод:
Конец игры Количество правильных ответов: 11 Число ошибок: 3
Решение:
import random correct, wrong, attempts = 0, 0, 3 months = {'январь': 'January', 'февраль': 'February', 'март': 'March', 'апрель': 'April', 'май': 'May', 'июнь': 'June', 'июль': 'July', 'август': 'August', 'сентябрь': 'September', 'октябрь': 'October', 'ноябрь': 'November', 'декабрь': 'December'} rand_keys = list(months. keys()) random.shuffle(rand_keys) for key in rand_keys: counter = 0 while counter < attempts: spelling = input(f'Месяц {key} по-английски называется: ') if spelling.title() == months[key]: correct += 1 break else: counter += 1 wrong += 1 print(f'Неверно! Осталось попыток: {attempts - counter}') else: print(f'Попытки исчерпаны!') print('Конец игры') print(f'Количество правильных ответов: {correct}') print(f'Число ошибок: {wrong}')
Подведем итоги
Цикл while используют в случаях, когда число итераций невозможно оценить заранее. Во всех остальных случаях лучше применять цикл for. Чтобы цикл while случайно не превратился в бесконечный, стоит продумать все события и условия, которые должны приводить к своевременному прерыванию программы.
В следующей статье приступим к изучению функций.
***
Содержание самоучителя
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
Цикл while | Основы JavaScript
Для перемещения по курсу нужно зарегистрироваться
1. Введение ↳ теория
2. Hello, World! ↳ теория / тесты / упражнение
3. Инструкции ↳ теория / тесты / упражнение
4. Арифметические операции ↳ теория / тесты / упражнение
5. Ошибки оформления (синтаксиса и линтера) ↳ теория / тесты / упражнение
6. Строки ↳ теория / тесты / упражнение
7. Переменные ↳ теория / тесты / упражнение
8. Выражения в определениях ↳ теория / тесты / упражнение
9. Именование ↳ теория / тесты / упражнение
10. Интерполяция ↳ теория / тесты / упражнение
11. Извлечение символов из строки ↳ теория / тесты / упражнение
12. Типы данных ↳ теория / тесты / упражнение
13. Неизменяемость и примитивные типы ↳ теория / тесты / упражнение
14. Функции и их вызов ↳ теория / тесты / упражнение
15. Сигнатура функции ↳ теория / тесты / упражнение
16. Вызов функции — выражение ↳ теория / тесты / упражнение
17. Функции с переменным числом параметров ↳ теория / тесты / упражнение
18. Детерминированность ↳ теория / тесты / упражнение
19. Стандартная библиотека ↳ теория / тесты / упражнение
20. Свойства и методы ↳ теория / тесты / упражнение
21. Цепочка вызовов ↳ теория / тесты / упражнение
22. Определение функций ↳ теория / тесты / упражнение
23. Возврат значений ↳ теория / тесты / упражнение
24. Параметры функций ↳ теория / тесты / упражнение
25. Необязательные параметры функций ↳ теория / тесты / упражнение
26. Упрощенный синтаксис функций ↳ теория / тесты / упражнение
27. Логика ↳ теория / тесты / упражнение
28. Логические операторы ↳ теория / тесты / упражнение
29. Результат логических операций ↳ теория / тесты / упражнение
30. Условные конструкции ↳ теория / тесты / упражнение
31. Тернарный оператор ↳ теория / тесты / упражнение
32. Конструкция Switch ↳ теория / тесты / упражнение
33. Цикл while ↳ теория / тесты / упражнение
34. Агрегация данных ↳ теория / тесты / упражнение
35. Обход строк в цикле ↳ теория / тесты / упражнение
36. Условия внутри тела цикла ↳ теория / тесты / упражнение
37. Инкремент и декремент ↳ теория / тесты / упражнение
38. Цикл for ↳ теория / тесты / упражнение
39. Модули ↳ теория / тесты / упражнение
Испытания
1. Фибоначчи
2. Найди Fizz и Buzz
3. Переворот числа
4. Счастливый билет
5. Фасад
6. Идеальные числа
7. Инвертированный регистр
8. Счастливые числа
Порой обучение продвигается с трудом. Сложная теория, непонятные задания… Хочется бросить. Не сдавайтесь, все сложности можно преодолеть. Рассказываем, как
Не понятна формулировка, нашли опечатку?
Выделите текст, нажмите ctrl + enter и опишите проблему, затем отправьте нам. В течение нескольких дней мы улучшим формулировку или исправим опечатку
Что-то не получается в уроке?
Загляните в раздел «Обсуждение»:
- Изучите вопросы, которые задавали по уроку другие студенты — возможно, ответ на ваш уже есть
- Если вопросы остались, задайте свой. Расскажите, что непонятно или сложно, дайте ссылку на ваше решение. Обратите внимание — команда поддержки не отвечает на вопросы по коду, но поможет разобраться с заданием или выводом тестов
- Мы отвечаем на сообщения в течение 2-3 дней. К «Обсуждениям» могут подключаться и другие студенты. Возможно, получится решить вопрос быстрее!
Подробнее о том, как задавать вопросы по уроку
Justin Lyons — Nasty Cycle для продажи на 1stDibs
Товары похожие на Nasty Cycle
Justin Lyons — Dynamite and a Laser Beam — В темноте, но нашел искру
Джастин Лайонс — В огонь
Джастин Лайонс — Добро пожаловать в реальный мир
Дизайн: Элизабет Робертс Архитектура и дизайн, Фото: Дастин Аксланд. Размеры: В 152,4 см x Ш 101,6 см
Дизайн: Тимоти Годболд, Фото: Карл Симон. Размеры: В 152,4 см x Ш 101,6 см
Хотите больше изображений или видео?
Запросить дополнительные изображения или видео у продавца
1 из 4
О товаре
Джастин Лайонс, «Nasty Cycle» 2022, Холст, смешанная техника.
Создатель:
Джастин Лайонс (1979, американец)
Год создания:
2022
Размеры:
Высота: 152,4 см (60 дюймов) Ширина: 101,6 см (40 дюймов)
Средний:
2 Смешанная техника
Период:
2010-
Состояние:
Местонахождение галереи:
Atlanta, GA
Номер ссылки:
1stDibs: LU1338110169382 3 50905
0 View Invo 034
Доставка и возврат
Гарантия защиты покупателя 1stDibs
Если ваш товар не соответствует описанию, мы будем работать с вами и продавцом, чтобы исправить это. Узнать больше
Части этой страницы были переведены автоматически. 1stDibs не может гарантировать точность переводов. Английский язык является языком по умолчанию на этом веб-сайте.
О продавце
Расположен в Атланте, Джорджия
Проверенный продавец
Эти опытные продавцы проходят всестороннюю оценку нашей командой штатных экспертов.
Создано в 2019 году
1stDibs продавец с 2020 года
26 продаж на 1stDibs
Типичное время ответа: 8 часов 002 Джастин Лайонс
Расположен в Атланта, Джорджия
Джастин Лайонс, «Динамит и лазерный луч», 2022, холст, смешанная техника.
Категория
2010-е Натюрморты
Материалы
Смешанная техника
Джастин Лайонс
Динамит и лазерный луч, 2022
22 420 долларов США
Нарушение безопасности 2
By 0 0 GA,
Justin Lyons
9 5
Джастин Лайонс, «Нарушение безопасности 2», 2022 г., Холст, смешанная техника.
Категория
Натюрморты 2010-х годов
Материалы
Смешанная техника
Джастин Лайонс
Нарушение безопасности 2, 2022
2 долларов США
2
Расположен в Атланте, Джорджия.
Категория
2010-е Натюрморты
Материалы
Смешанная техника
Джастин Лайонс
Нравится это или нет, 2022
9007 20002 023В темноте, но нашел искру
Джастин Lyons
Расположен в Атланте, Джорджия
Джастин Лайонс, «В темноте, но нашел искру» 2022, Холст, смешанная техника.
Категория
Натюрморты 2010-х годов
Материалы
Смешанная техника
Джастин Лайонс
В темноте, но нашел искру, 2022
долл. США
9 9 05
В огонь
Джастин Лайонс
Расположен в Атланте, Джорджия
Джастин Лайонс, «В огонь» 2022, Холст, смешанная техника.
Категория
Натюрморты 2010-х
Материалы
Смешанная техника
Джастин Лайонс
В огонь, 2022
- 5
- 3
3 2 Добро пожаловать в реальный мир
Джастин Лайонс
Расположен в Атланте , GA
Джастин Лайонс, «Добро пожаловать в реальный мир» 2022, Холст, смешанная техника.
Категория
2010-е Натюрморты
Материалы
Смешанная техника
Джастин Лайонс
Добро пожаловать в реальный мир, 2022
8 968 долларов США
Вам также может понравиться
1 Cent Портрет, 1925 г.
Джеймс Лахи
Расположен в Монреале, Квебек.
Джеймс Лахи — канадский художник, живущий в Торонто, где у него есть студия. Он получил степень бакалавра искусств в Йоркском университете в 1984 г., изучая искусство и архитектуру в Италии (1982 г.)…
Категория
Современные натюрморты 2010-х годов
Материалы
Смешанная техника
Джеймс Лахи
1 цент Портрет, 1925 г. 0
1 Cent Portrait, 1922 (Сделано в Канаде 3 – Мемуары)
Джеймс Лахи
Расположен в Монреале, Квебек
Джеймс Лахи – канадский художник, живущий в Торонто, где у него есть студия. Он получил степень бакалавра искусств в Йоркском университете в 19 лет.84 с изучением искусства и архитектуры в Италии (1982)…
Категория
2010-е годы Современные натюрморты
Материалы
Смешанная техника
Джеймс Лахи
3 портрета в Канаде (Сделано в 192 – A Memoir), 2019-2020
32 000 долларов США
Peace Lily 151112-02
Джеймс Лахи
Расположен в Монреале, Квебек, где живет его канадский художник Джеймс Лай
9000 студия . Он получил степень бакалавра искусств в Йоркском университете в 19 лет.84, изучал искусство и архитектуру в Италии (1982)…Категория
2010-е годы Современные натюрморты
Материалы
Смешанная техника
Джеймс Лахи
2 Peace Lily 100059 102111, 1521111
28 000 долларов США
Помидоры — натюрморт, фрукты и овощи, Южная Африка, реалистичный
Автор Марк Мидгли
Расположен в Ноул-лейн, Крэнли
Помидоры Марка Мидгли. Оригинал Масло на холсте. Кейптаунский художник Марк Мидгли родом из Лидса в Великобритании. Он переехал в Южную Африку в 1979, где он начал шелковый…
Категория
Начало 2000-х Фотореалист Натюрморт Картины
Материалы
Смешанная техника, Масло
Марк Мидгли
Помидоры — Натюрморт, Южная Африка, фрукты и овощи Реалистичный, 2006
9 501 долл. США
Роза — 21 век, современная живопись, граффити, цветы, искусство смешанной техники
Дэнни О’Коннор
Расположен в Барселоне, Каталония
«Картины накладываются краской слой за слоем, что придает произведениям большую глубину резкости. Они созданы с помощью арсенала инструментов, которые не согласуются с условностями. A…
Категория
21 век и Современная современная фигуративная живопись
Материалы
Холст, краски, смешанная техника
Дэнни О’Коннор
Роза — 21 век, современная живопись, граффити, цветок, смешанная техника, 2019
9Красный цветок I
Пьер Мари Бриссон
Находится в Сент-Огастине, Флорида
Оригинальная подписанная картина маслом на плотной тряпичной бумаге ручной работы французского художника Пьера Мари Бриссона (1955-) под названием «Красный цветок I». в. 2005. Рукописная подпись Бриссона внизу справа. Искусство…
Категория
Начало 2000-х Современные натюрморты
Материалы
Краски, смешанная техника, масло, бумага ручной работы
Пьер Мари Бриссон
Красный цветок I, около: 2005
4000 долларов США
долл. США0005
Недавно просмотренные
Просмотреть большеThe 1stDibs Promise
900sellerУзнать больше
7
Уверенность на кассе
Гарантия соответствия цены
Исключительная поддержка
Защита покупателя
Надежная доставка по всему миру
Дополнительные способы поиска
Велоспорт
Велопокраска
Велоспорт
Жизненный цикл
Современный натюрморт
Цветы в рамке
Художники-флористы
Этюд для натюрморта
Натюрморт с предметами
Натюрморт с природой
025 Жизнь 90 Живопись0 Живопись0Синий натюрморт
Натюрморт
Цветочные художественные работы
Оригинальный натюрморт
Ретро-натюрморт
Живописные цветы
Просмотреть все популярные поисковые запросы натюрморты
Vile Manifestation · Hour of Devastation (HOU) #80 · Scryfall Magic: The Gathering Search
Существо — Ужас
Мерзкое воплощение получает +1/+0 за каждую карту с циклом на вашем кладбище.
Цикл {2} ( {2} , сбросьте эту карту: возьмите карту.)
Символы корчились и искривлялись, извергая темную, мстительную магию.
0/4
Проиллюстрировано Джейсон Феликс
- Стандартный
- Незаконно
- Алхимия
- Незаконно
- Пионер
- Юрисконсульт
- Эксплорер
- Юридический
- Современный
- Юридический
- Драка
- Незаконно
- Наследие
- Юридический
- Исторический
- Юридический
- Винтаж
- Юридический
- Нищий
- Незаконно
- Командир
- Юрисконсульт
- Пенни
- Незаконно
- Клятвопреступник
- Юридический
ru эс фр де это пт да ко RU 汉语 漢語 ⋮
Отпечатки | долларов США | евро | ТИКС |
---|---|---|---|
Амонхет обновленный | |||
Час Разрушения | 0,10 доллара США | 0,02 € | 0,03 |
Посмотреть все принты → |
Набор инструментов
Купить эту карту
Изображения и данные
Примечания и правила Информация для Мерзкое проявление:
- Первая способность Vile Manifestation учитывает только карты с циклическими способностями на вашем кладбище.