Язык программирования Python
Операторы цикла в языке Python
Операторы цикла Цикл с предусловием (с заданным условием продолжения работы, цикл «ПОКА»)
условие
нет
while :
да
тело цикла
Выполнение тела цикла повторяется, пока условие истинно .
Если условие ложно , то управление передается следующему после цикла оператору.
Если условие изначально ложно, тело цикла не выполнится ни разу.
Если условие никогда не станет ложным, то программа «зациклится».
Используется в основном тогда, когда количество повторов заранее неизвестно .
Задача 1
Лыжник в первый день тренировок пробежал 10 км. Каждый следующий день он увеличивал пройденное расстояние на 10% от пройденного в предыдущий день. В какой день он пробежит больше 20 км?
начало
# Лыжная тренировка
n = 1 # день номер 1
x = 10 # расстояние в 1 день
while x
n = n+1 # номер следующего дня
x = x+0.1*x # расстояние в следующий день
print ( "{:3}" .format(n), "{:6.1f}" .format(x))
n = 1
x = 10
нет
x ≤ 20
да
n = n+1
2 11.0
3 12.1
4 13.3
5 14.6
6 16.1
7 17.7
8 19.5
9 21.4
x = x+0,1 ∙x
вывод n,x
конец
Задача 2
Получить таблицу значений функции y=x 2 для x=1; 2; 3; …; 10 .
начало
# Таблица квадратов
print ( "Квадраты чисел:" )
x = 1 # начальное значение x
while x
y = x**2 # вычисление функции
print ( "{:3}" .format(x), "{:5}" .format(y))
x = x+1 # следующее значение x
x = 1
нет
x ≤ 10
да
y = x 2
Квадраты чисел:
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
вывод x,y
x = x+1
конец
Задача 3а
Вычислить значение суммы s = 1+2+3+…+n для заданного n .
начало
# Сумма натуральных чисел
print ( "s=1+2+3+...+n" )
n = int ( input ( "Ведите n: " ))
s = 0 # начальное значение суммы
x = 1 # начальное знач. слагаемого
while x
s = s+x # добавить к сумме слагаемое
x = x+1 # следующее знач. слагаемого
print ( "s=" , s)
ввод n
s = 0
x = 1
нет
x ≤ n
да
s=1+2+3+...+n
Введите n: 20
s= 210
s = s+x
x = x+1
вывод s
конец
Задача 3б
Вычислить значение суммы s = 1+3+5+7+…+n для заданного нечётного n .
начало
# Сумма нечетных натуральных чисел
print ( "s=1+3+5+...+n" )
n = int ( input ( "Ведите n: " ))
s = 0 # начальное значение суммы
x = 1 # начальное знач. слагаемого
while x
s = s+x # добавить к сумме слагаемое
x = x+2 # следующее знач. слагаемого
print ( "s=" , s)
ввод n
s = 0
x = 1
нет
x ≤ n
да
s=1+3+5+...+n
Введите n: 19
s= 100
s = s+x
x = x+2
вывод s
конец
Задача 4
Вычислить факториал числа k .
k! = 1∙2∙3∙ … ∙k
начало
# Факториал натурального числа
k = int ( input ( "Введите k: " ))
p = 1 # начальное знач. произвед.
i = 1 # начальное знач. множителя
while i
p = p*i # добавить к произведению
i = i+1 # следующее знач. множителя
print ( "Факториал числа равен" , p)
ввод k
p = 1
i = 1
нет
i ≤ k
да
Введите k: 5
Факториал числа равен 120
p = p*i
i = i+1
Введите k: 1 5
Факториал числа равен 1307674368000
вывод p
конец
Задача 5
Вычислить сумму ряда ( n слагаемых).
a 1 = 1/2; a 2 = 1/4 = a 1 /2; a 3 = 1/8 = a 2 /2; …; a i = a i-1 /2
начало
# Сумма ряда
print ( "S = 1/2+1/4+1/8+1/16+ ... " )
n = int ( input ( "Введите n: " ))
s = 0 # начальное значение суммы
i = 1 # номер первого слагаемого
a = 1/2 # первое слагаемое
while i
s = s+a # добавить к сумме слагаемое
i = i+1 # следующий номер слагаемого
a = a/2 # следующее слагаемое
print ( "S =" , s)
ввод n
s = 0
i = 1
a = 1/2
нет
i ≤ n
да
s = s+a
i = i+1
a = a/2
S = 1/2+1/4+1/8+1/16+ ...
Введите n: 4
S = 0.9375
вывод s
конец
0: # пока число0 повторять: n = n//10 # отбрасываем последнюю цифру k = k+1 # увеличиваем счетчик print ( "Количество цифр в числе" , k) ввод n k = 0 нет n ≥ 0 да n = n // 10 Введите число: 2020 Количество цифр в числе 4 k = k+1 вывод k конец " width="640"
Задача 6
Подсчитать количество цифр в записи целого положительного числа.
# Количество цифр целого числа
начало
n = int ( input ( "Введите число: " ))
k = 0 # начальное значение счетчика
while n0: # пока число0 повторять:
n = n//10 # отбрасываем последнюю цифру
k = k+1 # увеличиваем счетчик
print ( "Количество цифр в числе" , k)
ввод n
k = 0
нет
n ≥ 0
да
n = n // 10
Введите число: 2020
Количество цифр в числе 4
k = k+1
вывод k
конец
Операторы цикла Цикл с постусловием (с заданным условием окончания работы, цикл «ДО»)
while True :
if : break
тело цикла
нет
условие
да
В языке Python нет оператора цикла с постусловием, но его можно организовать с помощью оператора while ( «пока» ) с условием True («истина»). Такой цикл будет выполняться бесконечно. Выход из цикла произойдет при истинности условия в операторе ветвления с помощью специального оператора break («прервать»).
Используется в тех случаях, когда требуется, чтобы тело цикла выполнилось хотя бы один раз .
k: break # конец цикла при ik print ( "Факториал числа равен" , p) ввод k нет k да p = 1 i = 1 p = p*i i = i+1 да i k нет Введите k (не более 15): 17 Введите k (не более 15): 16 Введите k (не более 15): 15 Факториал числа равен 1307674368000 вывод p конец " width="640"
Задача
Вычислить факториал числа k (при k не более 15 ).
k! = 1∙2∙3∙ … ∙k
Проверка корректности данных
начало
# Факториал натурального числа до 15
# проверка корректности данных
while True : # бесконечный цикл
k = int ( input ( "Введите k (не более 15): " ))
if k
# вычисление факториала
p = 1 # начальное знач. произвед .
i = 1 # начальное знач. множителя
while True : # начало цикла
p = p*i # добавить к произведению
i = i+1 # следующее знач. множителя
if ik: break # конец цикла при ik
print ( "Факториал числа равен" , p)
ввод k
нет
k
да
p = 1
i = 1
p = p*i
i = i+1
да
i k
нет
Введите k (не более 15): 17
Введите k (не более 15): 16
Введите k (не более 15): 15
Факториал числа равен 1307674368000
вывод p
конец
Операторы цикла Цикл с параметром (с заданным числом повторений, цикл «ДЛЯ»)
i = n
i = n, k
нет
i ≤ k
тело цикла
да
тело цикла
for in range ():
i = i+1
Тело цикла повторяется фиксированное число раз для каждого значения параметра. Параметр – переменная целого типа. Функция range («диапазон») задаёт количество повторов тела цикла и содержит от одного до трёх чисел.
- Одно число (k) – параметр цикла изменяется от 0 до k-1 с шагом 1 .
- Два числа (n, k) – параметр цикла изменяется от n до k-1 с шагом 1 .
- Три числа (n, k, s) – параметр цикла изменяется от n до k-1 с шагом s .
Возможно изменение параметра от большего значения к меньшему. В этом случае n должно быть больше k , а s – отрицательное.
Примеры записи оператора цикла с параметром
# для i в диапазоне от 0 до 9
for i in range (10):
print (i, end= " " )
print ( "Всё!" )
0 1 2 3 4 5 6 7 8 9 Всё!
# для i в диапазоне от 1 до 9
for i in range (1,10):
print (i, end= " " )
print ( "Всё!" )
1 2 3 4 5 6 7 8 9 Всё!
# для i в диапазоне от 1 до 9 с шагом 2
for i in range (1,10,2):
print (i, end= " " )
print ( "Всё!" )
1 3 5 7 9 Всё!
# для i в диапазоне от 9 до 1 с шагом -2
for i in range (9,0,-2):
print (i, end= " " )
print ( "Всё!" )
9 7 5 3 1 Всё!
Задача 1
Получить таблицу значений функции y=x 2 для x=1; 2; 3; …; 10 .
начало
# Таблица квадратов
print ( "Квадраты чисел:" )
for x in range (1, 11): # для i от 1 до 10
y = x**2 # вычисление функции
print ( "{:3}" .format(x), "{:5}" .format(y))
x = 1, 10
y = x 2
вывод x,y
Квадраты чисел:
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
конец
Задача 2
Вычислить значение суммы s = 1+2+3+…+n для заданного n .
начало
# Сумма натуральных чисел
print ( "s=1+2+3+...+n" )
n = int ( input ( "Ведите n: " ))
s = 0 # начальное значение суммы
for x in range (1, n+1): # для i от 1 до n
s = s+x # добавить к сумме слагаемое
print ( "s=" , s)
ввод n
s = 0
x = 1, n
s = s+x
вывод s
конец
s=1+2+3+...+n
Введите n: 20
s= 210
Задача 3
Вычислить факториал числа k .
k! = 1∙2∙3∙ … ∙k
# Факториал натурального числа
k = int ( input ( "Введите k: " ))
p = 1 # начальное знач. произвед .
for i in range (1, k+1): # для i от 1 до k
p = p*i # добавить к произведению
print ( "Факториал числа равен" , p)
начало
ввод k
p = 1
i = 1, k
Введите k: 5
Факториал числа равен 120
p = p ∙ i
вывод p
конец
Задача 4
Вычислить сумму ряда ( n слагаемых).
a 1 = 1/2 1 ; a 2 = 1/2 2 ; a 3 = 1/2 3 ; …; a i = 1/2 i
начало
# Сумма ряда
print ( "S = 1/2+1/4+1/8+1/16+ ... " )
n = int ( input ( "Введите n: " ))
s = 0 # нач. знач. суммы
for i in range (1, n+1): # для i от 1 до n
s = s+1/2**i # добавить к сумме
print ( "S =" , s)
ввод n
s = 0
i = 1, n
s = s+1/2 i
вывод s
конец
S = 1/2+1/4+1/8+1/16+ ...
Введите n: 4
S = 0.9375
Задача 5
Банк принимает вклады под 10% годовых. На счет положена сумма 10000 рублей. Какая сумма будет на счету через 5 лет?
начало
# Вклад в банке
s = 10000 # начальный вклад
print ( "Начальная сумма" , s)
for g in range (1, 6): # для g от 1 до 5
s = s+0.1*s # добавление 10%
print (g, "год сумма" , s)
s = 10000
g = 1, 5
s = s+0,1*s
вывод g, s
Начальная сумма 10000
1 год сумма 11000.0
2 год сумма 12100.0
3 год сумма 13310.0
4 год сумма 14641.0
5 год сумма 16105.1
конец
10 да i = i+1 нет конец " width="640"
Задача 6
Вывести на экран степени числа 2 до десятой степени, используя различные типы циклов.
начало
начало
начало
i = 1
i = 1
i = 1, 10
конец
i ≤ 10
нет
вывод i, 2 i
вывод i, 2 i
да
конец
i = i+1
вывод i, 2 i
i 10
да
i = i+1
нет
конец
10: break # выход при i10 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024 # Степени числа 2 # для i в диапазоне от 1 до 10 for i in range (1,11): print (i, 2**i) " width="640"
Задача 6
Вывести на экран степени числа 2 до десятой степени, используя различные типы циклов.
# Степени числа 2
i = 1 # нач. знач. i
while i
print (i, 2**i)
i = i+1 # след. знач. i
# Степени числа 2
i = 1 # нач. знач. i
while True : # начало цикла
print (i, 2**i)
i = i+1 # след. знач. i
if i10: break # выход при i10
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
# Степени числа 2
# для i в диапазоне от 1 до 10
for i in range (1,11):
print (i, 2**i)
Используемые материалы:
- Босова Л.Л. Информатика. 8-9 классы. Начала программирования на языке Python. Дополнительные главы к учебникам – М. : БИНОМ. Лаборатория знаний, 2020.
- Поляков К.Ю. Информатика. 10 класс. Базовый и углубленный уровни : в 2ч. Ч. 2 – М. : БИНОМ. Лаборатория знаний, 2018.