Команда while в питоне

While loops

While loops, like the ForLoop, are used for repeating sections of code — but unlike a for loop, the while loop will not run n times, but until a defined condition is no longer met. If the condition is initially false, the loop body will not be executed at all.

As the for loop in Python is so powerful, while is rarely used, except in cases where a user’s input is required*, for example:

n = raw_input("Please enter 'hello':") while n.strip() != 'hello': n = raw_input("Please enter 'hello':")

However, the problem with the above code is that it’s wasteful. In fact, what you will see a lot of in Python is the following:

while True: n = raw_input("Please enter 'hello':") if n.strip() == 'hello': break
  • Another version you may see of this type of loop uses while 1 instead of while True. In older Python versions True was not available, but nowadays is preferred for readability.
    • Starting with Py2.3, the interpreter optimized while 1 to just a single jump. Using 1 was minutely faster, since True was not a keyword and might have been given a different value, which the interpreter had to look up, as opposed to loading a constant. As a programmer, it is up to you which style to use — but always remember that readability is important, and that while speed is also important, readability trumps it except in cases where timings are significantly different.
    • Starting in Python 3, True, False, and None are keywords, so using while 1 no longer provides the tiny performance benefit used to justify it in earlier versions.
    • See also: http://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference

    * If this were Wikipedia, the above statement would be followed by «citation needed.»

    WhileLoop (last edited 2017-04-10 16:43:34 by SteveHolden )

    Источник

    Цикл while в Python

    Из этого материала вы узнаете, что такое циклы while, как они могут становиться бесконечными, как использовать инструкцию else в цикле while и как прерывать исполнение цикла.

    Управление потоком инструкций: цикл While в Python

    Как и другие языки программирования Python включает несколько инструкций для управления потоком. Одна из таких — if else. Еще одна — циклы. Циклы используются в тех случаях, когда нужно повторить блок кода определенное количество раз.

    Что такое цикл while в Python?

    Цикл while используется в Python для неоднократного исполнения определенной инструкции до тех пор, пока заданное условие остается истинным. Этот цикл позволяет программе перебирать блок кода.

    while test_expression: body of while 

    Сначала программа оценивает условие цикла while. Если оно истинное, начинается цикл, и тело while исполняется. Тело будет исполняться до тех пор, пока условие остается истинным. Если оно становится ложным, программа выходит из цикла и прекращает исполнение тела.

    Рассмотрим пример, чтобы лучше понять.

    a = 1 while a  10: print('Цикл выполнился', a, 'раз(а)') a = a+1 print('Цикл окончен') 
    Цикл выполнился 1 раз Цикл выполнился 2 раз Цикл выполнился 3 раз Цикл выполнился 4 раз Цикл выполнился 5 раз Цикл выполнился 6 раз Цикл выполнился 7 раз Цикл выполнился 8 раз Цикл выполнился 9 раз Цикл окончен 

    Бесконечный цикл while в Python

    Бесконечный цикл while — это цикл, в котором условие никогда не становится ложным. Это значит, что тело исполняется снова и снова, а цикл никогда не заканчивается.

    Следующий пример — бесконечный цикл:

    a = 1 while a==1: b = input('Как тебя зовут?') print('Привет', b, ', Добро пожаловать') 

    Если запустить этот код, то программа войдет в бесконечный цикл и будет снова и снова спрашивать имена. Цикл не остановится до тех пор, пока не нажать Ctrl + C .

    Else в цикле while

    В Python с циклами while также можно использовать инструкцию else . В этом случае блок в else исполняется, когда условие цикла становится ложным.

    a = 1 while a  5: print('условие верно') a = a + 1 else: print('условие неверно') 

    Этот пример демонстрирует принцип работы else в цикле while.

    условие верно условие верно условие верно условие верно условие неверно 

    Программа исполняет код цикла while до тех, пока условие истинно, то есть пока значение a меньше 5. Поскольку начальное значение a равно 1, а с каждым циклом оно увеличивается на 1, условие станет ложным, когда программа доберется до четвертой итерации — в этот момент значение a изменится с 4 до 5. Программа проверит условие еще раз, убедится, что оно ложно и исполнит блок else , отобразив «условие неверно».

    Прерывания цикла while в Python

    В Python есть два ключевых слова, с помощью которых можно преждевременно остановить итерацию цикла.

      Break — ключевое слово break прерывает цикл и передает управление в конец цикла

    a = 1 while a  5: a += 1 if a == 3: break print(a) # 2 
    a = 1 while a  5: a += 1 if a == 3: continue print(a) # 2, 4, 5 

    Источник

    Команда while в питоне

    Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.

    Синтаксис цикла while в простейшем случае выглядит так:

    while условие: блок инструкций

    При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается и управление передается на следующую инструкцию после тела цикла while . Если условие истинно, то выполняется инструкция, после чего условие проверяется снова и снова выполняется инструкция. Так продолжается до тех пор, пока условие будет истинно. Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции после цикла.

    Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10. Видно, что цикл while может заменять цикл for . in range(. ) :

    В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11 , поскольку именно при i == 11 условие i

    Вот еще один пример использования цикла while для определения количества цифр натурального числа n :

    n = int(input()) length = 0 while n > 0: n //= 10 # это эквивалентно n = n // 10 length += 1 print(length)

    В этом цикле мы отбрасываем по одной цифре числа, начиная с конца, что эквивалентно целочисленному делению на 10 ( n //= 10 ), при этом считаем в переменной length , сколько раз это было сделано.

    В языке Питон есть и другой способ решения этой задачи: .

    2. Инструкции управления циклом

    После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно:

    Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно просто написать после окончания цикла. Смысл появляется только вместе с инструкцией break . Если во время выполнения Питон встречает инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него. При этом ветка else исполняться не будет. Разумеется, инструкцию break осмыленно вызывать только внутри инструкции 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 = 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

    Источник

    Читайте также:  Immutable objects in javascript
Оцените статью