Как составить цикл пока

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

Цикл 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

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

Для этого в языках программирования предусмотрены различные типы циклов, которые способны повторять определенный код несколько раз. Чтобы понять принцип работы оператора цикла, рассмотрим следующую схему.

Циклы в python

Циклы упрощают сложные задачи до простых. Он позволяет нам изменить поток программы таким образом, что вместо того, чтобы писать один и тот же код снова и снова, мы можем повторять его конечное число раз. Например, если нам нужно вывести первые 10 натуральных чисел, то вместо того, чтобы использовать оператор print 10 раз, мы можем вывести их внутри цикла, который выполняется до 10 итераций.

Преимущества циклов

В Python преимущества циклов, как и в других язвках программирования, заключаются в следующем:

  1. Это обеспечивает возможность повторного использования кода.
  2. Используя циклы, нам не нужно писать один и тот же код снова и снова.
  3. С помощью циклов мы можем перебирать элементы структур данных (массивов или связанных списков).

В Python существуют следующие операторы циклов.

Оператор цикла Описание
for Цикл for используется в том случае, когда необходимо выполнить некоторую часть кода до тех пор, пока не будет выполнено заданное условие. Цикл for также называют циклом c предусловием. Лучше использовать цикл for, если количество итераций известно заранее.
while Цикл while используется в сценарии, когда мы не знаем заранее количество итераций. Блок операторов в цикле while выполняется до тех пор, пока не будет выполнено условие, указанное в цикле while. Его также называют циклом с предварительной проверкой условия.
do-while Цикл do-while продолжается до тех пор, пока не будет выполнено заданное условие. Его также называют циклом с пстусловием. Он используется, когда необходимо выполнить цикл хотя бы один раз.

Цикл for в Python

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

Синтаксис цикла for в python приведен ниже.

for iterating_var in sequence:    
    statement(s)    

Цикл for в Python

Цикл For с использованием последовательности

Пример 1: Итерация строки с помощью цикла for

str = "Python"  
for i in str:  
    print(i)  

Вывод:

P
y
t
h
o
n

Пример 2: Программа для печати таблицы заданного числа.

list = [1,2,3,4,5,6,7,8,9,10]  
n = 5  
for i in list:  
    c = n*i  
    print(c)  

Вывод:

5
10
15
20
25
30
35
40
45
50s

Пример 3: Программа для печати суммы заданного списка.

list = [10,30,23,43,65,12]  
sum = 0  
for i in list:  
    sum = sum+i  
print("The sum is:",sum)  

Вывод:

The sum is: 183

Цикл For с использованием функции range()

Функция range()

Функция range() используется для генерации последовательности чисел. Если мы передадим range(10), она сгенерирует числа от 0 до 9. Синтаксис функции range() приведен ниже.

range(start,stop,step size)  
  • Start означает начало итерации.
  • Stop означает, что цикл будет повторяться до stop-1. range(1,5) будет генерировать числа от 1 до 4 итераций. Это необязательный параметр.
  • Размер шага используется для пропуска определенных чисел в итерации. Его использование необязательно. По умолчанию размер шага равен 1. Это необязательно.

Рассмотрим следующие примеры:

Пример 1: Программа для печати чисел по порядку.

for i in range(10):  
    print(i,end = ' ')  

Вывод:

0 1 2 3 4 5 6 7 8 9 

Пример 2: Программа для печати таблицы заданного числа.

n = int(input("Enter the number "))  
for i in range(1,11):  
    c = n*i  
    print(n,"*",i,"=",c)  

Вывод:

Enter the number 10
10 * 1 = 10
10 * 2 = 20
10 * 3 = 30
10 * 4 = 40
10 * 5 = 50
10 * 6 = 60
10 * 7 = 70
10 * 8 = 80
10 * 9 = 90
10 * 10 = 100

Пример 3: Программа для печати четного числа с использованием размера шага в range().

n = int(input("Enter the number "))  
for i in range(2,n,2):  
    print(i)  

Вывод:

Enter the number 20
2
4
6
8
10
12
14
16
18

Мы также можем использовать функцию range() с последовательностью чисел. Функция len() сочетается с функцией range(), которая выполняет итерацию по последовательности с использованием индексации. Рассмотрим следующий пример.

list = ['Peter','Joseph','Ricky','Devansh']  
for i in range(len(list)):  
    print("Hello",list[i])  

Вывод:

Hello Peter
Hello Joseph
Hello Ricky
Hello Devansh

Вложенный цикл for в python

Python позволяет нам вложить любое количество циклов for внутрь цикла for. Внутренний цикл выполняется n раз за каждую итерацию внешнего цикла. Синтаксис приведен ниже.

for iterating_var1 in sequence:  #outer loop  
    for iterating_var2 in sequence:  #inner loop  
        #block of statements     
#Other statements    

Пример 1: Вложенный цикл for

# User input for number of rows  
rows = int(input("Enter the rows:"))  
# Outer loop will print number of rows  
for i in range(0,rows+1):  
# Inner loop will print number of Astrisk  
    for j in range(i):  
        print("*",end = '')  
    print()  

Вывод:

Enter the rows:5
*
**
***
****
*****

Пример 2: Программа для печати пирамиды чисел.

rows = int(input("Enter the rows"))  
for i in range(0,rows+1):  
    for j in range(i):  
        print(i,end = '')  
    print()  

Вывод:

1
22
333
4444
55555

Использование оператора else в цикле for

В отличие от других языков, таких как C, C++ или Java, Python позволяет нам использовать оператор else с циклом for, который может быть выполнен только тогда, когда все итерации исчерпаны. Здесь мы должны заметить, что если цикл содержит какой-либо оператор break, то оператор else не будет выполнен.

Пример 1

for i in range(0,5):    
    print(i)    
else:  
    print("for loop completely exhausted, since there is no break.")  

Вывод:

0
1
2
3
4
for loop completely exhausted, since there is no break.

Цикл for полностью исчерпал себя, так как нет прерывания.

Пример 2

for i in range(0,5):    
    print(i)    
    break;    
else:print("for loop is exhausted");    
print("The loop is broken due to break statement...came out of the loop")  

В приведенном выше примере цикл прерван из-за оператора break, поэтому оператор else не будет выполнен. Будет выполнен оператор, находящийся непосредственно рядом с блоком else.

Вывод:

0

Цикл был прерван, благодаря оператору break.

Цикл while в Python

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

Его можно рассматривать как повторяющийся оператор if. Когда мы не знаем количество итераций, цикл while является наиболее эффективным.

Синтаксис приведен ниже.

while expression:    
    statements    

Здесь утверждения могут быть одним утверждением или группой утверждений. Выражение должно быть любым допустимым выражением Python, приводящим к true или false. Истиной является любое ненулевое значение, а ложью — 0.

Цикл while в Python

Операторы управления циклом

Мы можем изменить обычную последовательность выполнения цикла while с помощью оператора управления циклом. Когда выполнение цикла while завершается, все автоматические объекты, определенные в этой области видимости, уничтожаются. Python предлагает следующие управляющие операторы для использования в цикле while.

1. Оператор continue — Когда встречается оператор continue, управление переходит в начало цикла. Давайте разберем следующий пример.

# prints all letters except 'a' and 't'   
i = 0  
str1 = 'javatpoint'  
  
while i < len(str1):   
    if str1[i] == 'a' or str1[i] == 't':   
        i += 1  
        continue  
    print('Current Letter :', a[i])   
    i += 1  

Вывод:

Current Letter : j
Current Letter : v
Current Letter : p
Current Letter : o
Current Letter : i
Current Letter : n

2. Оператор break — Когда встречается оператор break, он выводит управление из цикла.

Пример:

# The control transfer is transfered  
# when break statement soon it sees t  
i = 0  
str1 = 'javatpoint'  
  
while i < len(str1):   
    if str1[i] == 't':   
        i += 1  
        break  
    print('Current Letter :', str1[i])   
    i += 1  

Вывод:

Current Letter : j
Current Letter : a
Current Letter : v
Current Letter : a

3. Оператор pass — Оператор pass используется для объявления пустого цикла. Он также используется для определения пустого класса, функции и оператора управления. Давайте разберем следующий пример.

# An empty loop   
str1 = 'javatpoint'  
i = 0  
  
while i < len(str1):   
    i += 1  
    pass  
print('Value of i :', i)  

Вывод

Value of i : 10

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

i=1  
#The while loop will iterate until condition becomes false.  
While(i<=10):    
    print(i)   
    i=i+1   

Вывод

1
2
3
4
5
6
7
8
9
10

Пример 2: Программа для печати таблицы заданных чисел.

i=1    
number=0    
b=9    
number = int(input("Enter the number:"))    
while i<=10:    
    print("%d X %d = %d n"%(number,i,number*i))    
    i = i+1    

Вывод

Enter the number:10
10 X 1 = 10 

10 X 2 = 20 

10 X 3 = 30 

10 X 4 = 40 

10 X 5 = 50 

10 X 6 = 60 

10 X 7 = 70 

10 X 8 = 80 

10 X 9 = 90 

10 X 10 = 100 

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

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

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

Пример 1

while (1):    
    print("Hi! we are inside the infinite while loop"

Вывод

Hi! we are inside the infinite while loop
Hi! we are inside the infinite while loop

Пример 2

var = 1    
while(var != 2):    
    i = int(input("Enter the number:"))    
    print("Entered value is %d"%(i))    

Вывод

Enter the number:10
Entered value is 10
Enter the number:10
Entered value is 10
Enter the number:10
Entered value is 10
Infinite time

Использование else в цикле while

Python позволяет нам также использовать оператор else с циклом while. Блок else выполняется, когда условие, заданное в операторе while, становится ложным. Как и в случае с циклом for, если цикл while прервать с помощью оператора break, то блок else не будет выполнен, а будет выполнен оператор, присутствующий после блока else. Оператор else необязателен для использования с циклом while. Рассмотрим следующий пример.

i=1   
while(i<=5):    
    print(i)    
    i=i+1    
else:  
    print("The while loop exhausted")    
i=1    
while(i<=5):    
    print(i)    
    i=i+1    
    if(i==3):    
        break   
else:  
    print("The while loop exhausted")  

Вывод

1
2

В приведенном выше коде, когда встречается оператор break, цикл while останавливает свое выполнение и пропускает оператор else.

Программа для печати чисел Фибоначчи до заданного предела

terms = int(input("Enter the terms "))  
# first two intial terms  
a = 0  
b = 1  
count = 0  
  
# check if the number of terms is Zero or negative  
if (terms <= 0):  
   print("Please enter a valid integer")  
elif (terms == 1):  
   print("Fibonacci sequence upto",limit,":")  
   print(a)  
else:  
   print("Fibonacci sequence:")  
   while (count < terms) :  
       print(a, end = ' ')  
       c = a + b  
       # updateing values  
       a = b  
       b = c  
     
    count += 1  
Enter the terms 10
Fibonacci sequence:
0 1 1 2 3 5 8 13 21 34 

Оператор прерывания в Python

Break — это ключевое слово в python, которое используется для вывода управления программой из цикла. Оператор break разрывает циклы по одному, то есть в случае вложенных циклов он сначала разрывает внутренний цикл, а затем переходит к внешним циклам. Другими словами, можно сказать, что break используется для прерывания текущего выполнения программы, и управление переходит на следующую строку после цикла.

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

Синтаксис прерывания приведен ниже.

#оператор цикла
break;   

Пример:

list =[1,2,3,4]  
count = 1;  
for i in list:  
    if i == 4:  
        print("item matched")  
        count = count + 1;  
        break  
print("found at",count,"location");  

Вывод:

item matched
found at 2 location

Пример:

str = "python"  
for i in str:  
    if i == 'o':  
        break  
    print(i);  

Вывод:

p
y
t
h

Пример: оператор break с циклом while

i = 0;  
while 1:  
    print(i," ",end=""),  
    i=i+1;  
    if i == 10:  
        break;  
print("came out of while loop");  

Вывод:

0  1  2  3  4  5  6  7  8  9  came out of while loop

Пример

n=2  
while 1:  
    i=1;  
    while i<=10:  
        print("%d X %d = %dn"%(n,i,n*i));  
        i = i+1;  
    choice = int(input("Do you want to continue printing the table, press 0 for no?"))  
    if choice == 0:  
        break;      
    n=n+1  

Вывод:

2 X 1 = 2

2 X 2 = 4

2 X 3 = 6

2 X 4 = 8

2 X 5 = 10

2 X 6 = 12

2 X 7 = 14

2 X 8 = 16

2 X 9 = 18

2 X 10 = 20

Do you want to continue printing the table, press 0 for no?1

3 X 1 = 3

3 X 2 = 6

3 X 3 = 9

3 X 4 = 12

3 X 5 = 15

3 X 6 = 18

3 X 7 = 21

3 X 8 = 24

3 X 9 = 27

3 X 10 = 30

Do you want to continue printing the table, press 0 for no?0

Оператор continue в Python

Оператор continue в Python используется для возврата управления программой в начало цикла. Оператор continue пропускает оставшиеся строки кода внутри цикла и начинает следующую итерацию. В основном он используется для определенного условия внутри цикла, чтобы мы могли пропустить определенный код для конкретного условия.

#loop statements    
continue  
#the code to be skipped     

Оператор continue в Python

Рассмотрим следующие примеры.

Пример

i = 0                     
while(i < 10):                
   i = i+1  
   if(i == 5):  
      continue  
   print(i)  

Вывод:

1
2
3
4
6
7
8
9
10

Обратите внимание на вывод приведенного выше кода, значение 5 пропущено, потому что мы предоставили условие if с помощью оператора continue в цикле while. Когда оно совпадает с заданным условием, управление передается в начало цикла while, и он пропускает значение 5 из кода.

Давайте посмотрим на другой пример:

Пример

str = "JavaTpoint"  
for i in str:  
    if(i == 'T'):  
        continue  
    print(i)  

Вывод:

J
a
v
a
p
o
i
n
t

Оператор pass в python

Оператор pass является нулевым оператором (null operation), поскольку при его выполнении ничего не происходит. Он используется в тех случаях, когда оператор синтаксически необходим, но мы не хотим использовать вместо него какой-либо исполняемый оператор.

Например, он может быть использован при переопределении метода родительского класса в подклассе, но мы не хотим давать его конкретную реализацию в подклассе.

Pass также используется в тех случаях, когда код будет записан где-то, но еще не записан в программном файле. Рассмотрим следующий пример.

list = [1,2,3,4,5]    
flag = 0    
for i in list:    
    print("Current element:",i,end=" ");    
    if i==3:    
        pass    
        print("nWe are inside pass blockn");    
        flag = 1    
    if flag==1:    
        print("nCame out of passn");    
        flag=0   

Вывод:

Current element: 1 Current element: 2 Current element: 3 
We are inside pass block


Came out of pass

Current element: 4 Current element: 5 

Python цикл Do While

В Python нет цикла do while. Но мы можем создать подобную программу.

Цикл do while используется для проверки условия после выполнения оператора. Он похож на цикл while, но выполняется хотя бы один раз.

Общий синтаксис цикла Do While (не отностится к python)

do {  
     //statement  
} while (condition);  

Пример: цикл do while в Python

i = 1  
  
while True:  
    print(i)  
    i = i + 1  
    if(i > 5):  
        break  

Вывод:

1  
2  
3  
4  
5  

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

Содержание страницы: 
1. Цикл while в Python
1.2. Как прервать цикл while
1.3. Флаги в цикле while
2.1. Команда break в цикле while
2.2. Команда continue в цикле while
3. Предотвращение зацикливания в цикле while
4. Цикл while со списками
5. Цикл while со словарями

1. Цикл while в Python 

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

>>> number = 1           # присваиваем начальное значение переменной
>>> while number <= 7:   # запускаем цикл при условии значение number <=7
…     print(number)    # выводим значение number при каждом цикле
…     number += 1      # после каждого цикла увеличиваем значение на 1

1
2
3
4
5
6
7

Вначале присваиваем значение переменной number. Затем запускаем цикл while до тех пор, пока значение переменной number не будет больше 7. При каждом проходе цикла выводим значение number и затем увеличиваем его на 1. Как только значение number станет больше 7 цикл прекращается. 

1.2. Как прервать цикл while на Python. 

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

prompt = «nВведите любое слово, и оно будет выведено наоборот»
prompt += «nЕсли надоело введите команду ‘стоп’.n»
message = »
while message != «стоп»:
    message = input(prompt)    
    if message != «стоп»:
        print(message[::-1])
    else:
        print(«Программа завершена»)

В начале создаем сообщение prompt (посказку) которое объясняет пользователю что за программа и как ее можно завершить. Затем создается переменная message и ей присваивается пустое значение. Важно переменную message определить до запуска цикла, присвоить ей можно любое значение или пустую строку.  При запуске цикла while идет проверка совпадает ли значение message с условием продолжения цикла. При каждом выполнение цикла на экран выводятся правила цикла и условия его завершения. Дальше можно запустить команду if-else для проверки условия, если пользователь не ввел строку «стоп«, то выводим строку пользователя на экран в обратном порядке с помощью сегментации строки [: : -1]. 

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.
python лучший язык программирования
яинавориммаргорп кызя йишчул nohtyp

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.
123456789
987654321

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.
стоп
Программа завершена

Пока пользователь не введет слово «стоп», цикл будет начинаться заново.

1.3. Флаги в цикле while на Python

Если программа должна выполняться при нескольких условиях, то лучше определить одну переменную — флаг. Переменная — флаг сообщает, должна ли программа выполняться при каждом цикле. Для флага достаточно определить два состояния True — в котором программа продолжит выполнение и False — завершение программы. В результате в начале цикла while достаточно проверить всего одно условие для запуска программы, а все остальные проверки организовать в остальном коде. 

prompt = «nВведите любое слово, и оно будет выведено наоборот»
prompt += «nЕсли надоело введите команду ‘стоп’n»
active = True
while active:
    message = input(prompt)    
    if message == «стоп»:
        active = False
        print(«Программа завершена»)        
    else:
        print(message[::-1])

В примере переменной active присваивается True и программа будет выполняться до тех пор, пока переменная active не станет равной False. Результат работы этой программы ничем не будет отличаться от программы в разделе 1.2. Вот что получим мы на выходе. 

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’
Python
nohtyP

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’
стоп
Программа завершена

Программа завершится если пользователь введет «стоп». После этого переменная active становится равной False и действие цикла прекращается. 

2.1.  Команда break в цикле while на Python

С помощью команды break так же можно прервать цикл whileЦикл, который начинается с while True выполняется бесконечно, пока не будет выполнена команда break.

prompt = «nВведите столицу США с заглавной буквы: «
active = True
while active:
    capital = input(prompt)
    if capital == ‘Вашингтон’:
        print(‘Совершенно верно’)
        break    
    else:
        print(f»{capital} не является столицей США»)

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

Введите столицу США с заглавной буквы: Лондон
Лондон не является столицей США

Введите столицу США с заглавной буквы: Москва
Москва не является столицей США

Введите столицу США с заглавной буквы: Вашингтон
Совершенно верно

2.2. Команда continue в цикле while на Python

Предположим, что вам нужно прервать цикл while при выполнение каких-либо условий и запустить его заново. Для этого можно воспользоваться командой continue. Напишем цикл while, который выводит только четные числа в диапазоне от 1 до 20:

>>> number = 0
>>> while number < 20:
…     number += 1
…     if number % 2 == 1:
…             continue
…     print(number, end=’ ‘)

2 4 6 8 10 12 14 16 18 20 >>>

Сначала создадим переменную number и присвоим ей начальное значение. После идет проверка условий цикла что значение number  меньше 20. При входе в цикл значение number увеличивается на 1 и затем команда if проверяет остаток от деления на 2. Если остаток равен одному, то число не четное, команда continue приказывает Python игнорировать остаток кода и цикл запускается заново. Если остаток от деления равен нулю, то число выводится на экран и так до того пока number будет равен 20, затем условия цикла while не будут выполнены и цикл прекратится.

3. Предотвращение зацикливания в циклах while на Python

В каждом цикле должно быть предусмотрена возможность завершения, чтобы цикл while не выполнялся бесконечно. Например, если в предыдущем примере мы пропустили бы строку number += 1 , то значение number всегда будет равно 0 и цикл будет продолжаться до бесконечности

>>> number = 0
>>> while number < 20:
…     if number % 2 == 1:
…             continue
…     print(number, end=’ ‘)

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …….

Для предотвращения зацикливания в терминальном окне введите Ctrl + C и всегда заранее проверяйте все условия цикла while и пути выхода из него. 

4. Цикл while со списками в Python

Для изменения списков в процессе обработки удобно использовать цикл while. К примеру, у нас есть целый список пользователей, который может состоять из тысяч пользователей и нам нужно будут удалить всех пользователей с определенным именем. Нам уже известно, что метод remove() для списков удаляет лишь первое вхождение заданного значения в список, но нам нужно удалить их все. В этом случае мы можем запустить цикл while:

>>> login = [‘qwerty’, ‘arfa’, ‘bond’, ‘chelsy’, ‘qwerty’, ‘serg’, ‘cat’, ‘qwerty’]
>>> while ‘qwerty’ in login:
…     login.remove(‘qwerty’)

>>> print(login)
[‘arfa’, ‘bond’, ‘chelsy’, ‘serg’, ‘cat’]

В результате при запуске цикла while проверяется условия нахождения ‘qwerty‘ в списке login. Затем после первого удаления из списка, цикл запускается снова и Python проверяет наличие ‘qwerty‘ в списке заново и так до тех, пор пока будет выполняться условие цикла while.

5. Цикл while со словарями в Python 

При каждом проходе цикла while программа может выполнять любое действие. Так же, как и со списками, цикл while работает и со словарями. Создадим программу, которая будет запрашивать у посетителя имя и записывать ответы на заданный вопрос и в конце выводить словарь на экран:

interview = {}  
active = True
while active:
    # Запрашиваем имя и ответ на вопрос
    name = input(«nКак вас зовут? «)
    question = input(«Какая марка автомобиля вам нравиться «)
    # Создаем список с ответами и добавляем первый ответ
    answers = []
    answers.append(question)
    # Ответ сохраняем в словаре «имя: список ответов»
    interview[name] = answers

    # Запускаем второй цикл с возможностью добавления еще ответов к одному пользователю
    active_2 = True
    while active_2:
        repeat = input(«Желаете добавить еще один автомобиль? (yes/no)  «)
        if repeat == ‘no’:
            active_2 = False
        else:
            question_n = input(«Какая марка автомобиля вам еще нравиться «)
            # Добавляем ответ в список
            answers.append(question_n)

            
    # Вопрос о продолжение опроса
    repeat = input(«Желаете продолжить опрос? (yes/no) «)
    if repeat == ‘no’:
        active = False
print(«nОпрос завершен, все результаты:»)

# Переберем словарь и посмотрим ответы
for name, questions in interview.items():
    print(f»n{name.title()} любит автомобили марки:»)
    for question in questions:
        print(f»t{question.title()}»)

В начале программы создаем словарь interview в который в будущем будем добавлять посетителя с его ответами. Затем устанавливаем флаг продолжения опроса active = True. Пока active = True Python будет выполнять цикл while. При запуске цикла посетителю предлагается представиться и ввести ответ на заданный вопрос. Затем сразу создадим список ответов answers на всякий случай, если посетитель захочет дать несколько ответов и добавляем его в словарь. После запускаем второй цикл while с вопросом добавить еще один ответ. Количество ответов бесконечно, и посетитель сам решает, когда прервать программу. Если ответов больше нет, то возвращаемся к первому циклу и предлагаем ввести нового посетителя с опросом. После окончания цикла while выведем на экран всех посетителей и их ответы. Если запустить программу и ввести несколько пользователей с ответами, то результат будет выглядеть так:

Как вас зовут? bob
Какая марка автомобиля вам нравиться: audi
Желаете добавить еще один автомобиль? (yes/no)  yes
Какая марка автомобиля вам еще нравиться: bmw
Желаете добавить еще один автомобиль? (yes/no)  yes
Какая марка автомобиля вам еще нравиться: ford
Желаете добавить еще один автомобиль? (yes/no)  no
Желаете продолжить опрос? (yes/no) yes

Как вас зовут? Artem
Какая марка автомобиля вам нравиться: porshe
Желаете добавить еще один автомобиль? (yes/no)  no
Желаете продолжить опрос? (yes/no) no

Опрос завершен, все результаты:

Bob любит автомобили марки:
        Audi
        Bmw
        Ford

Artem любит автомобили марки:
        Porshe

Далее: Функции в Python

Назад: Множества в Python

to continue to Google Sites

Not your computer? Use Guest mode to sign in privately. Learn more

Часто приходится
решать задачи, когда число повторений
заранее неизвестно и определяется лишь
постепенно, после некоторого количества
повторений тела цикла. В этом случае
применяется цикл
с условием
.

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

цикла.
Цикл такого вида называется циклом
с предусловием
.

Проверка условия
выполнения цикла производится в самом
начале – если значение условия истинно,
то выполняется тело цикла и снова
вычисляется выражение условия выполнения
цикла. Тело цикла будет выполняться до
тех пор, пока проверка этого условия
будет давать результат «истина», то
есть пока условие выполняется. Цикл
такого вида иногда называют циклом типа
«ПОКА».

Запишем цикл с
предусловием на языке блок-схем и на
алгоритмическом языке.

ПОКА условие
продолжения цикла

НЦ

действие
(тело цикла)

КЦ

Правила определения
цикла «ПОКА»:

  1. Определить условие
    продолжения цикла.

  2. Определить
    повторяющиеся действия.

ПРИМЕЧАНИЕ: Цикл
типа «ДЛЯ» легко «перевести» в цикл
типа «ПОКА» если в качестве условия
продолжения цикла взять неравенство I
<= I_кон
(пока текущее значение счетчика не
больше его конечного значения), а в теле
цикла обязательно записать команду
увеличения счетчика на 1 (I
:= I
+ 1).

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

с точностью ε
(эпсилон).

1. Анализ условия
задачи. Считается, что нужное приближение
получено с заданной точностью ε, если
вычислена сумма нескольких первых
слагаемых, и очередное слагаемое
оказалось по модулю меньше, чем данное
малое положительное число ε. Тогда
считается, что это и все последующие
слагаемые можно уже не учитывать.

На каждом следующем
шаге цикла будем использовать сделанное
нами на предыдущих шагах. Если уже
получено

,
то для
вычисления

достаточно умножить предыдущий результат
на

.

Введем обозначения:
Х – заданное число – основание степени
в числителе
дроби; E
– точность ε (эпсилон); Y
– слагаемое-дробь
(она меняется в зависимости от номера
ее положения); s
– накапливаемая
сумма; I
– счетчик
числа шагов или, что то же самое, номер
прибавленной дроби.

2. Математическая
модель.

1.

Y
:= 1

Первое слагаемое

2.

s
:= Y

Положим в сумматор
первое слагаемое

3.

I :=
0

Обнулим счетчик
шагов

4.

условие
продолжения цикла
:

abs(Y)
>= E

пока добавленное
слагаемое не меньше «эпсилон», считаем
сумму. Если «эпсилон» сразу не меньше
1, цикл не выполнится ни разу!

5.

повторяющиеся
действия:

5.1.

I
:= I + 1

Вычислили номер
текущего шага

5.2.

Y
:= Y * X / I

Посчитали новое
слагаемое

5.3.

s
:= s
+ Y

Увеличили сумму
на текущее слагаемое

Тело цикла
завершилось

6.

Вывод S

Блок-схема и запись
на алгоритмическом языке алгоритма
решения задачи приведена на рисунке 6.

АЛГ сумма
ряда

АРГ ВЕЩ
Х, E

РЕЗ
ВЕЩ s,
Y

ЦЕЛ
I

НАЧ

Ввод Х, E

Y
:= 1

s
:= Y

I :=
0

ПОКА
abs(Y) >= E

НЦ

I :=
I + 1

Y :=
Y * X / I

s
:= s
+ Y

КЦ

Вывод
S

КОН

Рис.
6.

Вопросы для
самопроверки:

  1. Какую алгоритмическую
    структуру описывает последовательность
    служебных слов:

ПОКА
условие
НЦ повторяющиеся
действия (тело цикла)
КЦ

  1. Когда проверяется
    истинность условия в цикле «ПОКА»?

  2. Опишите работу
    цикла с предусловием.

  3. Приведите примеры
    алгоритмов цикла с предусловием.

Вопросы для
размышления

  1. Верно ли, что в
    теле цикла с предусловием должно
    находиться только одно действие?

  2. Верно ли, что
    истинность выражения в цикле с
    предусловием является условием
    продолжения цикла?

  3. Сколько раз
    выполнится тело цикла «ПОКА», если с
    самого начала условие не выполняется.

  4. Верно ли, что цикл
    «ПОКА» используется при вычислении
    всякого рода сумм и произведений, когда
    заранее не известно число повторений?

  5. Какие из утверждений
    являются верными (проиллюстрируйте
    ответ соответствующими примерами):

а) любой цикл «ДЛЯ»
можно записать при помощи цикла «ПОКА»;

б) любой цикл «ПОКА»
можно записать при помощи цикла «ДЛЯ»;

в) не любой цикл
«ДЛЯ» можно записать при помощи цикла
«ПОКА»;

г) не любой цикл
«ПОКА» можно записать при помощи цикла
«ДЛЯ».

Задания

1. Какое значение
будет принимать переменная Y
после выполнения фрагмента алгоритма:

а) Y
:= 0

X
:= 10

ПОКА X
> 0

НЦ

X
:= X – 2

Y
:= Y + X

КЦ

Вывод Y

б) Y
:= 1

X
:= 15

ПОКА X
> 5

НЦ

X
:= X – 3

Y
:= Y * X

КЦ

Вывод Y

  1. Разработайте
    алгоритм (по всем этапам) для решения
    следующих задач:

2.1. Вводится
последовательность произвольных целых
чисел, которая заканчивается нулем.

1) найти наибольшее
из всех чисел, кратных трем.

2) Определить,
сколько раз последовательность меняет
знак.

2.2. Найти все
трехзначные числа такие, что сумма цифр
равна А, а само число делится на В (А и В
задаются пользователем).

2.3. Вычислить N!.
Используйте цикл с предусловием.

2.4. Даны два
натуральных числа. Найти их произведение,
используя только операцию сложение.
Примените цикл с постусловием.

2.5. Даны два
натуральных числа. Найти частное от
деления нацело и остаток от деления
нацело, используя только операцию
вычитания. Примените цикл с постусловием.

2.6. Вычислить
значение суммы:

2.7. Вычислить
значение суммы:

2.8. Вычислить
значение суммы:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Как составить сочинение описание местности
  • Как найти столовые приборы
  • Как составить вопрос в прошедшем времени по английски
  • Если пюре как клейстер как исправить
  • Как найти допустимое значение переменной 8 класс