Назад в начало
Цикл 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
Выполнение программ, написанных на любом языке программирования, по умолчанию является последовательным. Иногда нам может понадобиться изменить выполнение программы. Выполнение определенного кода может потребоваться повторить несколько раз.
Для этого в языках программирования предусмотрены различные типы циклов, которые способны повторять определенный код несколько раз. Чтобы понять принцип работы оператора цикла, рассмотрим следующую схему.
Циклы упрощают сложные задачи до простых. Он позволяет нам изменить поток программы таким образом, что вместо того, чтобы писать один и тот же код снова и снова, мы можем повторять его конечное число раз. Например, если нам нужно вывести первые 10 натуральных чисел, то вместо того, чтобы использовать оператор print 10 раз, мы можем вывести их внутри цикла, который выполняется до 10 итераций.
Преимущества циклов
В Python преимущества циклов, как и в других язвках программирования, заключаются в следующем:
- Это обеспечивает возможность повторного использования кода.
- Используя циклы, нам не нужно писать один и тот же код снова и снова.
- С помощью циклов мы можем перебирать элементы структур данных (массивов или связанных списков).
В 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 с использованием последовательности
Пример 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 с помощью оператора управления циклом. Когда выполнение цикла 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
Рассмотрим следующие примеры.
Пример
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
Часто приходится
решать задачи, когда число повторений
заранее неизвестно и определяется лишь
постепенно, после некоторого количества
повторений тела цикла. В этом случае
применяется цикл
с условием.
В одной из
разновидностей цикла условие проверяется
перед выполнением цикла. Поэтому данное
условие правильно будет называть
условием
продолжения
цикла.
Цикл такого вида называется циклом
с предусловием.
Проверка условия
выполнения цикла производится в самом
начале – если значение условия истинно,
то выполняется тело цикла и снова
вычисляется выражение условия выполнения
цикла. Тело цикла будет выполняться до
тех пор, пока проверка этого условия
будет давать результат «истина», то
есть пока условие выполняется. Цикл
такого вида иногда называют циклом типа
«ПОКА».
Запишем цикл с
предусловием на языке блок-схем и на
алгоритмическом языке.
ПОКА условие НЦ
действие КЦ |
|
Правила определения
цикла «ПОКА»:
-
Определить условие
продолжения цикла. -
Определить
повторяющиеся действия.
ПРИМЕЧАНИЕ: Цикл
типа «ДЛЯ» легко «перевести» в цикл
типа «ПОКА» если в качестве условия
продолжения цикла взять неравенство I
<= I_кон
(пока текущее значение счетчика не
больше его конечного значения), а в теле
цикла обязательно записать команду
увеличения счетчика на 1 (I
:= I
+ 1).
Задача 6.
Рассмотрим задачу, в которой требуется
разработать алгоритм приближенного
вычисления суммы бесконечного ряда:
с точностью ε
(эпсилон).
1. Анализ условия
задачи. Считается, что нужное приближение
получено с заданной точностью ε, если
вычислена сумма нескольких первых
слагаемых, и очередное слагаемое
оказалось по модулю меньше, чем данное
малое положительное число ε. Тогда
считается, что это и все последующие
слагаемые можно уже не учитывать.
На каждом следующем
шаге цикла будем использовать сделанное
нами на предыдущих шагах. Если уже
получено
,
то для
вычисления
достаточно умножить предыдущий результат
на
.
Введем обозначения:
Х – заданное число – основание степени
в числителе
дроби; E
– точность ε (эпсилон); Y
– слагаемое-дробь
(она меняется в зависимости от номера
ее положения); s
– накапливаемая
сумма; I
– счетчик
числа шагов или, что то же самое, номер
прибавленной дроби.
2. Математическая
модель.
1. |
Y |
Первое слагаемое |
2. |
s |
Положим в сумматор |
3. |
I := |
Обнулим счетчик |
4. |
условие
abs(Y) |
пока добавленное |
5. |
повторяющиеся |
|
5.1. |
I |
Вычислили номер |
5.2. |
Y |
Посчитали новое |
5.3. |
s |
Увеличили сумму |
Тело цикла |
||
6. |
Вывод S |
Блок-схема и запись
на алгоритмическом языке алгоритма
решения задачи приведена на рисунке 6.
АЛГ сумма
АРГ ВЕЩ
РЕЗ
ЦЕЛ НАЧ Ввод Х, E
Y
s
I :=
ПОКА НЦ
I :=
Y :=
s КЦ
Вывод КОН |
Рис. |
Вопросы для
самопроверки:
-
Какую алгоритмическую
структуру описывает последовательность
служебных слов:
ПОКА
условие НЦ повторяющиеся
действия (тело цикла) КЦ
-
Когда проверяется
истинность условия в цикле «ПОКА»? -
Опишите работу
цикла с предусловием. -
Приведите примеры
алгоритмов цикла с предусловием.
Вопросы для
размышления
-
Верно ли, что в
теле цикла с предусловием должно
находиться только одно действие? -
Верно ли, что
истинность выражения в цикле с
предусловием является условием
продолжения цикла? -
Сколько раз
выполнится тело цикла «ПОКА», если с
самого начала условие не выполняется. -
Верно ли, что цикл
«ПОКА» используется при вычислении
всякого рода сумм и произведений, когда
заранее не известно число повторений? -
Какие из утверждений
являются верными (проиллюстрируйте
ответ соответствующими примерами):
а) любой цикл «ДЛЯ»
можно записать при помощи цикла «ПОКА»;
б) любой цикл «ПОКА»
можно записать при помощи цикла «ДЛЯ»;
в) не любой цикл
«ДЛЯ» можно записать при помощи цикла
«ПОКА»;
г) не любой цикл
«ПОКА» можно записать при помощи цикла
«ДЛЯ».
Задания
1. Какое значение
будет принимать переменная Y
после выполнения фрагмента алгоритма:
а) Y
X
ПОКА X НЦ
X
Y КЦ Вывод Y |
б) Y
X
ПОКА X НЦ
X
Y КЦ Вывод Y |
-
Разработайте
алгоритм (по всем этапам) для решения
следующих задач:
2.1. Вводится
последовательность произвольных целых
чисел, которая заканчивается нулем.
1) найти наибольшее
из всех чисел, кратных трем.
2) Определить,
сколько раз последовательность меняет
знак.
2.2. Найти все
трехзначные числа такие, что сумма цифр
равна А, а само число делится на В (А и В
задаются пользователем).
2.3. Вычислить N!.
Используйте цикл с предусловием.
2.4. Даны два
натуральных числа. Найти их произведение,
используя только операцию сложение.
Примените цикл с постусловием.
2.5. Даны два
натуральных числа. Найти частное от
деления нацело и остаток от деления
нацело, используя только операцию
вычитания. Примените цикл с постусловием.
2.6. Вычислить
значение суммы:
2.7. Вычислить
значение суммы:
2.8. Вычислить
значение суммы:
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #