Как составить программу цикла while

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

Содержание:

  • While в Паскале — цикл с предусловием
    • Вложенные циклы в Паскале
  • Произведение в Паскале
  • Программа возведения в степень числа в Паскале

Пример: Определить количество цифр в введенном целом числе, не превышающем 2000000.

Алгоритм: Отделяем и удаляем последовательно последнюю цифру, наращивая счетчик.

n счетчик
246 0
24 1
2 2
0 3

В чем сложность?: Заранее не определено и неизвестно, сколько цифр нужно убрать, т.е. сколько шагов необходимо сделать.
Как выполнить: Надо перестать отделять цифры, когда n = 0, т.е. надо выполнять пока n > 0

Блок-схема решения:

Блок-схема решения цикл while

Блок-схема решения

Решение примера на Паскале:
пример цикла while Паскаль
Цикл while в Паскале применяется для создания повторений с неизвестным заранее их числом. Повторения (итерации) будут осуществляться, пока истинно некоторое условие.

Блок-схема, соответствующая циклу while в Паскале:
блок-схема while в паскале

while условие do {Пока условие истинно выполняется оператор}
   оператор;
  • Здесь оператор, стоящий после служебного слова do, образует тело цикла и будет выполняться, пока значение "условия" равно true (истина).
  • Если операторов должно быть несколько, тогда необходимо применять составной оператор.
  • Условие пересчитывается каждый раз при входе в цикл.
  • Непосредственно условием цикла while может быть переменная или логическое выражение.
  • Операторы тела цикла while выполнятся только в том случае, если условие будет истинно, если условие ложно — они игнорируются, и программа продолжается с тех операторов, которые стоят уже после конструкции. Таким образом, это существенное отличие цикла с предусловием от цикла с постусловием.

Рассмотрим использование цикла while в Паскале на решенном примере:

Пример: Печатать «ноль» указанное количество раз

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
var i,n:integer;
begin
write ('количество знаков');
readln(n);
i:=1;
while i<=n do begin {составной оператор}
  write(0);
  i:=i+1
end;
end.
1
2
3
4
5
6
7
8
begin
var n:=readInteger('количество знаков');
var i:=1;
while i<=n do begin {составной оператор}
  write(0);
  i:=i+1
end;
end.

Задача 3. Ввести целое число и найти сумму его цифр.
Пример:

Введите целое число:
1234
Сумма цифр числа 1234 равна 10.

  
[Название файла: L3task3.pas]

  • Можно использовать сложные условия:
  • сложные условия в while

    Задача 4. Вычислять с использованием цикла while квадратные корни из чисел 900, 893, 886, 879 и т.д. до тех пор, пока это можно делать.

      
    [Название файла: L3task4.pas]

    Детальный разбор работы цикла While в Паскале рассмотрен в видеоуроке:

    Пример: найти сумму всех элементов последовательности:

    найти сумму всех элементов последовательности
    которые по модулю больше 0,001:

    Алгоритм:

    Блок-схема решения:

    Блок-схема решения

    Блок-схема решения

    Решение на Паскале:

    Решение на Паскале

    Решение на Паскале

    Задача 5: Вычислить сумму элементов следующей последовательности с точностью 0,001:
    Найти сумму элементов последовательности с точностью 0,001

    Результат: S = 1.157

      
    [Название файла: L3task5.pas]

    Вложенные циклы в Паскале

    Существует возможность использования вложенных циклов в Паскале, когда в теле одного цикла вместо оператора стоит другой цикл.

    Важно: Главным обстоятельством во вложенных циклах является использование разных переменных для счетчиков внутреннего и внешнего циклов

    Рассмотрим пример:

    Пример: Вывести таблицу умножения, используя вложенные циклы в паскале.

    Показать решение:

    Pascal PascalABC.NET
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    const n = 9; {размер таблицы}
    var i, j :integer;
    begin
       for i:=1 to n do {номера строк}
       begin
         for j:=1 to n do {номера столбцов}
           write(i*j:4);
         writeln; {переход на новую строку}
       end;
    end.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    const n = 9; {размер таблицы}
    begin
       for var i:=1 to n do {номера строк}
       begin
         for var j:=1 to n do {номера столбцов}
           write(i*j:4);
         writeln; {переход на новую строку}
       end;
    end.

    Произведение в Паскале

    Точно также, как существует сумматор для сложения, для умножения в паскале тоже существует специальная конструкция:

    Произведение вычисляется по рекуррентному выражению:

    P=P*Y,

    где P – промежуточные произведения

    Y — сомножители

    Рассмотрим пример вычисления факториала числа в Паскале с использованием цикла while.

    Пример цикла While в Паскале для вычисления факториала 10! (10!=1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    var
      fact, n : integer;
    begin
      fact := 1; {начальное значение факториала =0! }
      n := 1;    {начальное значение для условия }
      while n<=10 do     {условие }
       begin             {начало тела конструкции с составным оператором }
         fact := fact*n; {вычисление факториала n! }
         n := n + 1       {n должно меняться в теле конструкции}
       end;                {конец тела цикла }
      writeln(10!=,fact);  {вывод результата расчета }
    end.

    Здесь необходимо обратить внимание на то, что присваивание n := 1 стоит до цикла, если этого не сделать, то условие будет работать некорректно, так как переменная n будет пуста.

    Программа возведения в степень числа в Паскале

    Для начала уточним, что есть формула вычисления степени на Паскале. Но мы не будем ее использовать, а разберем алгоритм решения задачи возведения в степень.

    Для того чтобы возвести число в степень, его надо умножить само на себя ровно столько раз, чему равен показатель степени.

    Таким образом, возведение числа n в степень d можно выразить так:
    nd = n1 * n2 * n3 * … * nd, где нижние индексы просто указывают очередное по счету число n.

    Еще необходимо учесть следующее:

    • число в нулевой степени равняется 1
    • если показатель степени отрицателен, т.е. d < 0, то задача решается по формуле:
      nd = 1 / (n1 * n2 * n3 * … * nd)

    Т.е., решая программу на Паскале, учитываем:

    • в программе на языке Паскаль количество итераций (повторений) цикла while должно быть равно показателю степени числа по модулю;
    • если показатель степени — отрицательное число, то нужно впоследствии единицу разделить на результат.

    Задача 6. Вычислить в Паскале степень числа, используя цикл while.

      
    [Название файла: L3task6.pas]

    Задача 7. Дана последовательность вещественных чисел, признак завершения которой — число 0 (оно не считается элементом последовательности). Найти сумму всех положительных элементов этой последовательности.

    Пример результата:

    Введите член последовательности
    4
    Введите член последовательности
    -1
    Введите член последовательности
    5
    Введите член последовательности
    7
    Введите член последовательности
    0
    Сумма положительных чисел = 16

      
    [Название файла: L3task7.pas]


    Download Article


    Download Article

    A while loop repeats a set of instructions while a certain condition is true. Unlike a for loop, which requires you to define how many times you want to loop through something, the statements in a while loop run over and over again until the condition becomes false. This wikiHow article will show you the proper syntax for a while loop in C/C++, Python, Java, and Ruby.

    1. Image titled 1453040 1

      1

      Learn how a while loop works. No matter which language you’re using, a while loop always runs like this:

      • The program executes.
      • A while loop is found in the program.
      • The condition specified in the while loop is evaluated to check whether it is true or false.
      • If the condition is true, the statements in the loop are executed.
      • The condition is checked again once the statements in the loop have run.
      • If the condition remains true, the loop will run again.
      • The process repeats until the condition becomes false.
      • When the condition becomes false, the statements in the loop stop running.
      • When loop ends, the next lines in the program will run.
    2. Image titled 1453040 2

      2

      See the syntax for while loops in different languages. While a while loop works the same in all programming language, the syntax varies.

      • C and C++

          while(condition) {
           statement(s);
        }
        
      • Java

          while (condition)  {
          statement(s) 
        }
        
      • Python

          while condition:
            statement(s)
        
      • Ruby

        while condition
           statement(s)
        end
        

      Advertisement

    3. Image titled 1453040 3

      3

      Identify your variable(s). For example, if your variable i is the value that should control how long the loop lasts, define i as a whole number or similar data type.

    4. Image titled 1453040 4

      4

      Start the while loop by writing a while command. Use the syntax examples above to ensure that you’re entering the command in the proper format for the language you’re coding in. Replace condition with the condition to check for the variable you’re evaluating.

      • You can specify more than one conditional expression in a while loop.[1]
    5. Image titled 1453040 5

      5

      Enter the code that should run inside the while loop. Replace statement(s) in the code with the code that should run if the condition is true. As long as the conditions are true, the statements will run repeatedly. Once the condition tests false, the while loop will end on its own.[2]

    6. Image titled 1453040 6

      6

      Add an else clause in Python (optional). If you’re coding in Python, you can opt to add additional statements that can run as soon as the loop ends.[3]
      This can be helpful if you want to print a message of success (or failure) to the screen after the commands are run. In this example, we’ll use an else statement to print «All done» to the screen after the loop finishes.

      i = 0 
      while i > 0:
      	i -= 1
      	print(i)
      else:
          print("All done")
      
    7. Advertisement

    Ask a Question

    200 characters left

    Include your email address to get a message when this question is answered.

    Submit

    Advertisement

    • Part of writing an effective while loop involves anticipating how your code function will act. This kind of prediction can be the difference between a smoothly functioning piece of code and a failed attempt.

    • A while loop can become excessively broad or global within a program. Looking at each line of code helps the programmer to dial back into the most basic elements and uses of the while loop.

    Thanks for submitting a tip for review!

    Advertisement

    Video

    References

    About This Article

    Article SummaryX

    1. Identify the variables.
    2. Write the while command and state the condition.
    3. Enter the statements that should run until the condition is no longer true.
    4. Choose to add an else statement if you’re using Python.

    Did this summary help you?

    Thanks to all authors for creating a page that has been read 55,005 times.

    Is this article up to date?

    Назад в начало

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

    Цикл while используется, когда невозможно определить точное количество повторений цикла.

    i = 0 # объявление переменной i для условия цикла

    while i < 5: # ключевое слово ‘while’ и условие выполнение цикла

        # тело цикла

        print(i) # вывод значения переменной i

        i += 1 # увеличение значения переменной i на единицу

    # Вывод:

    >> 0

    >> 1

    >> 2

    >> 3

    >> 4

    Цикл while может быть бесконечным.

    i = 0

    while True: # условие всегда истинно

        print(i)

        i += 1

    # Вывод:

    >> 0

    >> 1

    >> 2

    >> 3

    >> 4



    >> 999



    # Это может продолжаться долго…

    Выполнение цикла можно прерывать с помощью оператора break.

    i = 0

    while 1: # условие всегда истинно

        if i == 3: # если i равно 3, то вызываем оператор break

            break # оператор break прерывает выполнение цикла

        print(i)

        i += 1

    # Вывод:

    >> 0

    >> 1

    >> 2

    Оператор continue начинает повторение цикла заново.

    i = 0

    while i < 5:

        i += 1 #

        if i % 2 == 1: # если значение i нечетно, то вызываем оператор continue

            continue # оператор continue начинает повторение цикла заново

        # в случае вызова continue код ниже не выполнится

        print(i)

    # Вывод:

    >> 0

    >> 2

    >> 4

    Как и для цикла for, для цикла while мы можем записать конструкцию else.

    x = 1

    while x < 5:

        print(x)

        x += 1

    else:

        print(‘Цикл завершен’)

    # Вывод:

    >> 1

    >> 2

    >> 3

    >> 4

    >> Цикл завершен

    Примеры

    1. Числа от A до B

    # Пользователь вводит числа A и B (A > B). Выведите все числа от A до B включительно.


    A = int(input(‘Введите число: ‘))

    B = int(input(‘Введите число: ‘))

    while A >= B:

        print(A)

        A -= 1

    # Ввод:

    >> 12

    >> 7

    # Вывод:

    >> 12

    >> 11

    >> 10

    >> 9

    >> 8

    >> 7

    # Ввод:

    >> 5

    >> 2

    # Вывод:

    >> 5

    >> 4

    >> 3

    >> 2

    2. Много чисел

    # Пользователь вводит числа до тех пор, пока не введет 0.

    # Выведите количество введенных чисел (0 считать не нужно).


    n = int(input(‘Введите число: ‘))

    counter = 0 # счетчик введенных чисел

    while n: # n неявно преобразуется в тип bool

        # если n равно 0, то выполнение цикла прервется

        n = int(input(‘Введите число: ‘)) # вводим очередное число

        counter += 1 # увеличиваем счетчик


    print(f‘Количество чисел {counter})

    # Ввод:

    >> 1

    >> 10

    >> 100

    >> 1000

    >> 0

    # Вывод:

    >> Количество чисел 4

    3. Наименьший делитель

    # Пользователь вводит число N (N > 1). Выведите его наименьший делитель.

    N = int(input(‘Введите число: ‘))

    div = 2

    while N % div != 0:

        div += 1

    print(f‘Наименьший делитель равен {div})

    # Ввод:

    >> 10

    # Вывод:

    >> Наименьший делитель равен 2

    # Ввод:

    >> 15

    # Вывод:

    >> Наименьший делитель равен 3

    # Ввод:

    >> 17

    # Вывод:

    >> Наименьший делитель равен 17

    Решение задач

    1. Четные от A до B

    Пользователь вводит числа A и B (A > B). Выведите четные числа от A до B включительно.

    # Ввод:

    >> 10

    >> 1

    # Вывод:

    >> 10

    >> 8

    >> 6

    >> 4

    >> 2

    2. От A до B на три

    Пользователь вводит числа A и B (A < B, A меньше B). Выведите числа от A до B включительно, которые делятся на три.

    # Ввод:

    >> 1

    >> 15

    # Вывод:

    >> 3

    >> 6

    >> 9

    >> 12

    >> 15

    3. Сумма чисел

    Пользователь вводит числа до тех пор, пока не введет 0. Выведите сумму введенных чисел (0 считать не нужно).

    # Ввод:

    >> 1

    >> 15

    >> 10

    >> 11

    >> 2

    >> 0

    # Вывод:

    >> Сумма равна: 39

    4. Максимум

    Пользователь вводит числа до тех пор, пока не введет 0. Выведите максимальное введенное число (0 считать не нужно).

    # Ввод:


    >> 1

    >> 15

    >> 10

    >> 11

    >> 2

    >> 0

    # Вывод:

    >> Максимум равен: 15

    5. Минимум

    Пользователь вводит числа до тех пор, пока не введет 0. Выведите минимальное введенное число (0 считать не нужно).

    # Ввод:

    >> 1

    >> 15

    >> 10

    >> 11

    >> 2

    >> 0 # 0 не входит в последовательность

    # Вывод:

    >> Минимум равен: 1

    6. Факториал

    Пользователь вводит число N. Выведите факториал число N. Факториал числа N — это произведение всех чисел от 1 до N включительно. Например, факториал числа 5 равен 120.

    # Ввод:

    >> 5

    # Вывод:

    >> 120

    # Ввод:

    >> 3

    # Вывод:

    >> 6

    # Ввод:

    >> 4

    # Вывод:

    >> 24

    7. Фибоначчи (финальный босс)

    Пользователь вводит число N. Выведите N-ное по счету число Фибоначчи. Последовательность чисел Фибоначчи рассчитывается по такой формуле: F(1) = 1, F(2) = 1, F(K) = F(K-2) + F(K-1). Идея такая: каждое следующее число равно сумму двух предыдущих.

    Первые 10 чисел последовательности: 1 1 2 3 5 8 13 21 34 55 …

    # Ввод:

    >> 5

    # Вывод:

    >> 5

    # Ввод:

    >> 10

    # Вывод:

    >> 55

    # Ввод:

    >> 8

    # Вывод:

    >> 21

    В прошлой статье мы изучали цикл for – он
    используется в тех случаях, когда заранее известно количество итераций,
    совершаемых в цикле. Число исполнений цикла for определяется функцией range() или размером коллекции. Если диапазон значений не
    известен заранее, необходимо использовать другой цикл – while: он выполняется, пока не наступит
    определенное событие (или не выполнится необходимое условие). По этой причине
    цикл while называют условным. Вот пример простейшего цикла while – он выполняется, пока пользователь
    не введет 0:

            n = int(input())
    while n != 0:
        print(n + 5)
        n = int(input())
    
        

    Цикл while также часто называют бесконечным, поскольку он может
    выполняться до тех пор, пока пользователь не остановит его нажатием
    определенной клавиши. Бесконечные циклы можно создавать намеренно – для
    выполнения фонового скрипта, игры, прикладной программы. Но иногда цикл 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,
    управлять бесконечным циклом можно с помощью флагов (сигнальных меток). В
    приведенном ниже примере программа бесконечно запрашивает у пользователя ввод
    любого слова, пока пользователь не введет exit. Это событие меняет статус цикла на 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 случайно
    не превратился в бесконечный, стоит продумать все события и условия, которые
    должны приводить к своевременному прерыванию программы.

    В следующей статье приступим к изучению функций.

    ***

    Содержание самоучителя

    1. Особенности, сферы применения, установка, онлайн IDE
    2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
    3. Типы данных: преобразование и базовые операции
    4. Методы работы со строками
    5. Методы работы со списками и списковыми включениями
    6. Методы работы со словарями и генераторами словарей
    7. Методы работы с кортежами
    8. Методы работы со множествами
    9. Особенности цикла for
    10. Условный цикл while
    11. Функции с позиционными и именованными аргументами
    12. Анонимные функции
    13. Рекурсивные функции
    14. Функции высшего порядка, замыкания и декораторы
    15. Методы работы с файлами и файловой системой
    16. Регулярные выражения
    17. Основы скрапинга и парсинга
    18. Основы ООП: инкапсуляция и наследование
    19. Основы ООП – абстракция и полиморфизм
    20. Графический интерфейс на Tkinter

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

    Как и другие языки программирования 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 есть два ключевых слова, с помощью которых можно преждевременно остановить итерацию цикла.

    1. Break — ключевое слово break прерывает цикл и передает управление в конец цикла
      a = 1
      while a < 5:
          a += 1
          if a == 3:
      	break
          print(a) # 2
      
    2. Continue — ключевое слово continue прерывает текущую итерацию и передает управление в начало цикла, после чего условие снова проверяется. Если оно истинно, исполняется следующая итерация.
    a = 1
    
    while a < 5:
        a += 1
        if a == 3:
    	continue
        print(a)  # 2, 4, 5
    

    Обучение с трудоустройством

    Понравилась статья? Поделить с друзьями:
  • Как найти тесты мцко
  • Как найти пересечение графика функции с осями
  • Как исправить искривление перегородки носа без операции отзывы
  • Как составить материальный баланс этилового спирта
  • Как составить формулу для вычисления площади фигуры рис 33