что это такое, как работает, примеры
Цикл 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.
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Улучшить эту страницу
Добавьте описание, изображение и ссылки на
в то время как цикл
страницу темы, чтобы разработчикам было легче узнать о ней.

pop())
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}')