что это такое, как работает, примеры
Цикл 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
, or,
и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 и do-while в Kotlin с примерами кода
Циклы являются способом многократного выполнения кода в Kotlin. В этом уроке мы познакомимся с одним из типов циклов, а именно — циклом while
.
Содержание статьи
- Цикл while в Kotlin
- Цикл do-while в Kotlin
- Прерывание цикла с помощью break в Kotlin
- Задачи для проверки
Если вы уже изучали другие языки программирования, вам будут знакомы концепции и, возможно, даже синтаксис.
Цикл while в Kotlin
Цикл while
повторяет блок кода, пока выполняется условие. Цикл while в Kotlin создается следующим образом:
while (<CONDITION>) { <LOOP CODE> }
while (<CONDITION>) { <LOOP CODE> } |
Цикл проверяет условие для каждой итерации. Если условие истинно (true), цикл выполняется и переходит к другой итерации.
Если условие ложно (false), цикл останавливается. Как и выражения if, циклы while создает свою собственную область видимости.
Простейший цикл while
имеет следующую форму:
while (true) { }
while (true) {
} |
Это вечный цикл while в Kotlin, так как условие всегда истинно (true). Конечно, вам вряд ли потребуется писать такой цикл while, потому что в этом случае программа будет выполняться вечно! Бесконечный цикл не приведет к сбою программы, но из-за него может зависнуть компьютер.
Далее представлен более полезные пример цикла while в Котлин:
var sum = 1 while (sum < 1000) { sum = sum + (sum + 1) }
var sum = 1
while (sum < 1000) { sum = sum + (sum + 1) } |
Данный код подсчитывает математическую последовательность до того момента, где значение больше 1000
.
Цикл выполняется следующим образом:
- Перед итерацией 1:
sum
= 1, условие цикла = true - После итерации 1:
sum
= 3, условие цикла = true - После итерации 2:
sum
= 7, условие цикла = true - После итерации 3:
sum
= 15, условие цикла = true - После итерации 4:
sum
= 31, условие цикла = true - После итерации 5:
sum
= 63, условие цикла = true - После итерации 6:
sum
= 127, условие цикла = true - После итерации 7:
sum
= 255, условие цикла = true - После итерации 8:
sum
= 511, условие цикла = true - После итерации 9:
sum
= 1023, условие цикла = false
После девятой итерации переменная sum
равна 1023
, следовательно, условие sum < 1000
становится ложным (false). В данной точке — цикл останавливается.
Цикл do-while в Kotlin
Одним из вариантов цикла while
является цикл do-while. Он отличается от цикла while
тем, что условие проверяется в конце цикла, а не в начале. Это означает, что хотя бы 1 раз тело цикла будет выполнено.
do { <LOOP CODE> } while (<CONDITION>)
do { <LOOP CODE> } while (<CONDITION>) |
Далее дан пример из прошлого раздела, только здесь используется цикл do-while
:
sum = 1 do { sum = sum + (sum + 1) } while (sum < 1000)
sum = 1
do { sum = sum + (sum + 1) } while (sum < 1000) |
В данном примере вывод такой же, как и раньше. Однако, так бывает не всегда. Вы можете получить другой результат с другим условием. Рассмотрим следующий цикл while
:
sum = 1 while (sum < 1) { sum = sum + (sum + 1) }
sum = 1
while (sum < 1) { sum = sum + (sum + 1) } |
Рассмотрим аналогичный цикл do-while
, который использует такое же условие:
sum = 1 do { sum = sum + (sum + 1) } while (sum < 1)
sum = 1
do { sum = sum + (sum + 1) } while (sum < 1) |
В случае обычного цикла while
условие sum < 1
является ложным с самого начала. Это означает, что тело цикла не будет выполнено! Значение sum
будет равна 1
, потому что цикл не будет выполнять никаких итераций. В случае цикла do-while
сумма sum
будет равна 3
, потому что цикл do-while ВСЕГДА выполнится хотя бы один раз, даже если изначально условие ложное.
Прерывание цикла с помощью break в Kotlin
Иногда требуется прервать цикл раньше времени. Для этого можно использовать оператор break
, который сразу прерывает цикл и продолжает выполнение кода после него.
К примеру, рассмотрим следующий код:
sum = 1 while (true) { sum = sum + (sum + 1) if (sum >= 1000) { break } }
1 2 3 4 5 6 7 8 | sum = 1
while (true) { sum = sum + (sum + 1) if (sum >= 1000) { break } } |
Здесь условие цикла истинно (true), поэтому цикл будет повторятся бесконечно. Однако оператор break указывает на то, что цикл while
завершится, когда сумма будет больше или равна 1000
.
Мы узнали, как написать один и тот же цикл по-разному, и тем самым продемонстрировали, что в программировании бывает много способов добиться одного и того же результата разными способами.
Вам следует выбирать наиболее удобные в зависимости от ситуации. Это подход, который вы усвоите со временем и практикой.
Задачи для проверки
1. Создайте переменную counter
, значением которой будет 0
. Создайте цикл while с условием counter < 10
, который выводит counter равен X
(где Х
заменяется значением counter
) и затем увеличивает counter
на 1
;
2. Создайте переменную counter
со значением 0
. Создайте другую переменную под названием roll
, значением которой будет 0
. Создайте цикл do-while
.
Внутри цикла укажите, что переменная roll
равна Random().nextInt(6)
, то есть выбор случайного числа между 0
и 5
. Затем увеличьте counter
на 1
.
Под конец выведите После X бросков, roll равен Y
, где Х
является значением counter
, а Y
— значением roll
. Укажите условие цикла, при котором цикл будет заканчиваться при выпаде первого 0
.
Решения задач
[crayon-63e0a611311ef405516376/]
В то время как петля — Синтаксис, Flowchart
- Post Автор: Fastbitlab
- Пост опубликован: 29 сентября 2022
- Post Category: Блог
, а петля
—
—
. определенный набор утверждений снова и снова, пока не будет выполнено определенное условие. Это достигается с помощью цикла while здесь.
цикл while означает, что выполнение кода внутри тела цикла повторяется до тех пор, пока выражение не станет ложным (0)
Синтаксис: В то время как петля
Синтаксис петли while показан на рисунке 1.
Рис. сначала начните с ключевого слова «пока», а затем создайте круглые скобки. А внутри скобок напишите свое выражение.Если у вас есть несколько операторов, вам нужно открыть тело (открытая цветочная скобка[{ ]) цикла while. Это начало тела цикла. Внутри этого вы должны написать несколько операторов. После этого закройте тело цикла (закройте цветочную скобку [}]).
В цикле while с несколькими операторами, когда выполняется цикл while, сначала будет оцениваться выражение. Это первое, что происходит. Если результат вычисления выражения истинен, то операторы будут выполнены. И операторы будут выполняться снова и снова, пока выражение не станет ложным.
Итак, как только выражение становится ложным, цикл автоматически прерывается. Программа выходит из цикла while и продолжает работу с остальной частью кода. Таким образом, тело будет выполнено только в том случае, если выражение истинно. Вот как работает цикл.
Если у вас есть только один оператор, который нужно выполнять снова и снова, вам не нужно создавать тело ({}). Так что, даже если вы создадите тело, то не проблема, вы можете это сделать.
Блок-схема цикла while
Рисунок 2. Блок-схема цикла while
Как работает цикл while?
- Сначала вычисляется выражение.
- Если вычисление выражения равно TRUE, то будут выполняться операторы внутри тела цикла, и цикл выполнения возвращается для повторной проверки выражения.
- Если результат вычисления выражения равен FALSE, то тело цикла прерывается, и программа продолжает работу с кодом вне тела цикла.
Так работает цикл while.
Выражение цикла while всегда вычисляется первым.
Попробуем использовать цикл while в нашей программе.
Напишите программу, которая печатает от 1 до 10 или от 1 до 100, что бы это ни было, используя цикл while.
-> Далее
Курсы FastBit Embedded Brain Academy
Нажмите здесь: https://fastbitlab.com/course1
Теги: Лекции по программированию на языке C для встроенных микроконтроллеров
FastBitLab
Академия FastBit Embedded Brain Academy использует возможности Интернета, чтобы предлагать онлайн-курсы, связанные с программированием встроенных систем, операционной системой реального времени, встроенными системами Linux и т. д., по очень низкой цене. Опираясь на большой опыт работы в отрасли, мы подготовили множество курсов, в которых приняли участие более 3000 клиентов в более чем 100 странах.
while-loop · Темы GitHub · GitHub
Вот 168 общедоступных репозиториев соответствует этой теме…
милан9 / 03_Python_Flow_Control
Звезда 210адитьямангал1 / C-программирование
Звезда 11maciekt07 / SpotifyAdBlock
Звезда 9Кишанраджпут23 / Jetbrains-Python-Проекты
Звезда 5Сидхартхуял / базовый-cpp
Звезда 5halilozel1903 / КотлинПример
Спонсор Звезда 5ашу1230 / Кодирование-Ninjas-Python-Solution
Звезда 4Кампанафернандо / калькулятор-py
Звезда 3ДжейхунАслан / CSharp_Основы
Звезда 2Ативидадес-де-Алгоритмос / Lista06-алгоритмос
Звезда 2ксб96 / Cpp-коды
Звезда 2Ативидадес-де-Алгоритмос / Exemplos-aula-Repeticao-While
Звезда 2ЕЛ-59 / C_практика
Звезда 2santhosh-программист / Basic-C-программы
Звезда 1Преэтиабрахам / Python-задания
Звезда 1ЮвраджСутар / Python-данные
Звезда 1vanelli0n / Компьютер-Программирование-2
Звезда 1git504 / Ле-Пти-Плат
Звезда 1Фреха-меззудж / Java_Проекты
Звезда 1santhosh-программист / CS19211-Python-REC-DigitalCafe
Звезда 1Улучшить эту страницу
Добавьте описание, изображение и ссылки на в то время как цикл страницу темы, чтобы разработчикам было легче узнать о ней.