Similar presentations:
ветвление и циклы
1.
2. Простые и сложные условия
Программирование (Python), 8 класс2
Простые и сложные условия
Простые условия (отношения)
<
<=
>
>=
==
равно
!=
не равно
Сложное условие – это условие, состоящее из
нескольких простых условий (отношений),
связанных с помощью логических операций:
• and – одновременное выполнение условий
x >= 25 and x <= 40
• or – выполнение хотя бы одного из условий
x <= 25 or x >= 40
• not – отрицание, обратное условие
x <=
not (x > 25)
???25
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
3. Хорошее решение (операция «И»)
Программирование (Python), 8 класс3
Хорошее решение (операция «И»)
Задача: набор сотрудников в возрасте 25-40 лет
(включительно).
сложное условие
if v >= 25 and v <= 40 :
print("подходит")
else:
print("не подходит")
and «И»: одновременное выполнение
всех условий!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
4. Примеры
Программирование (Python), 8 класс4
Примеры
Задача. Вывести "Да", если число в переменной a –
двузначное.
if 10 <= a and a <= 99:
print("Да")
Задача. Вывести "Да", если число в переменной a –
двузначное и делится на 7.
if 10 <= a and a <= 99 and (a % 7)==0:
print("Да")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
5. Сложные условия: «ИЛИ»
Программирование (Python), 8 класс5
Сложные условия: «ИЛИ»
Задача. Самолёт летает по понедельникам и четвергам.
Ввести номер дня недели и определить, летает ли в
этот день самолёт.
Особенность: надо проверить, выполняется ли одно из
двух условий:
день = 1
день = 4
if d == 1 or d == 4 :
print("Летает")
else:
print("Не летает")
сложное
условие
or «ИЛИ»: выполнение хотя бы одного
из двух условий!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
6. Сложные условия
Программирование (Python), 8 класс6
Сложные условия
Истинно или ложно
not (a > b)
Да
a < b and b < c
Да
2
b
3
c
4
Нет
a > c or b > c
a < b and b > c
Нет
a > c and b > d
Нет
Да
not (a >= b) or c == d
Да
a >= b or not (c < b)
a > c or b > c or b > a
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
a
Да
http://kpolyakov.spb.ru
7. Программирование экспертной системы
Программирование (Python), 8 класс7
Программирование экспертной системы
Ответы пользователя: да и нет – символьные строки.
ans = input("Кормит детей молоком? ")
if ans == "да":
... # вариант 1
else:
# вариант
... # вариант
2 1
print("Млекопитающее.")
ans = input("Ест мясо? ")
if ans == "да":
print("Хищник.")
else:
print("Не знаю.")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
8. Зачем нужен цикл?
Программирование (Python), 8 класс8
Зачем нужен цикл?
Задача. Вывести 5 раз «Привет!».
print("Привет")
print("Привет")
print("Привет")
print("Привет")
print("Привет")
Цикл «N раз»:
сделай 5 раз
print("Привет")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? А если 5000?
такого оператора нет
в Python!
http://kpolyakov.spb.ru
9. Как работает цикл?
Программирование (Python), 8 класс9
Как работает цикл?
! Нужно запоминать, сколько раз цикл уже выполнен!
переменная-счётчик
ещё не делали
счётчик = 0
пока счётчик < 5
print("Привет")
счётчик +=
= счётчик
+ 1
счётчик
1
сделали ещё раз
c = 0
while c < 5:
print("Привет")
c += 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
10. Ещё один вариант
Программирование (Python), 8 класс10
Ещё один вариант
Идея: запоминать, сколько шагов осталось.
счётчик = 5
пока счётчик > ???
0
print("Привет")
счётчик -=
= счётчик
???
1
1
c = 5
while c > 0:
print("Привет")
c -= 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Как записать иначе
последнюю строку?
http://kpolyakov.spb.ru
11. Цикл с предусловием
Программирование (Python), 8 класс11
Цикл с предусловием
• условие проверяется при входе в цикл
• как только условие становится ложным, работа цикла
заканчивается
• если условие ложно в самом начале, цикл не
выполняется ни разу
while условие:
...
тело цикла
? Если условие никогда не станет ложно?
while True:
...
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
бесконечный цикл
(зацикливание)
http://kpolyakov.spb.ru
12. Подбор числа битов
Программирование (Python), 8 класс12
Подбор числа битов
Задача. Ввести целое число – мощность алфавита M.
Найти количество битов i, необходимое для
равномерного кодирования символов из этого
алфавита.
?
Как найти i?
2i ≥ M
Начинаем с i = 1, увеличиваем i, пока 2i < M.
M = int(input("Мощность алфавита:"))
i = 1
while 2**i < M:
i += 1
print(f"i={i}")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
13. Разбиение числа на отдельные цифры
Программирование (Python), 8 класс13
Разбиение числа на отдельные цифры
Задача. Ввести натуральное число и вывести в столбик
все его цифры, начиная с последней.
123 3
2
1
Выделить последнюю цифру числа в переменной N:
d = N % 10
123 3
Отбросить последнюю цифру числа в переменной N:
N = N // 10
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
123 12
http://kpolyakov.spb.ru
14. Разбиение числа на отдельные цифры
Программирование (Python), 8 класс14
Разбиение числа на отдельные цифры
• выделяем последнюю цифру числа (%)
• выводим эту цифру на экран
• отсекаем последнюю цифру числа (//)
N
d
начальное значение
123
12
3
1
2
0
1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Когда остановиться?
while N != 0:
...
http://kpolyakov.spb.ru
15. Разбиение числа на отдельные цифры
Программирование (Python), 8 класс15
Разбиение числа на отдельные цифры
N = int(input("Введите число:"))
while N != 0:
d = N % 10
print( d )
N = N // 10
? Если вместо 10 написать 8 ?
? Если вместо 10 написать 2?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
12 4
1
12 0
0
1
1
http://kpolyakov.spb.ru
16. Сумма цифр числа
Программирование (Python), 8 класс16
Сумма цифр числа
Задача. Вычислить сумму цифр введённого числа.
123 1 + 2 + 3 = 6
Выделить последнюю цифру числа в переменной N:
d = N % 10
123 3
Отбросить последнюю цифру числа в переменной N:
N = N // 10
123 12
Добавить к переменной s значение переменной d:
s +=
= sd+ d
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
s = 6 6 + 4 = 10
d=4
http://kpolyakov.spb.ru
17. Сумма цифр числа
Программирование (Python), 8 класс17
Сумма цифр числа
• выделяем последнюю цифру числа (%)
• увеличиваем сумму на значение цифры (s+=d)
• отсекаем последнюю цифру числа (//)
N
d
123
s
0
начальные значения
? Когда остановиться?
12
3
3
1
2
5
0
1
6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
while N != 0:
...
http://kpolyakov.spb.ru
18. Сумма цифр числа
Программирование (Python), 8 класс18
Сумма цифр числа
начало
обнулить
сумму
ввод N
s= 0
N != 0?
да
d = N % 10
s += d
N = N // 10
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
выполнять
"пока N != 0"
нет
вывод s
конец
http://kpolyakov.spb.ru
19. Сумма цифр числа
Программирование (Python), 8 класс19
Сумма цифр числа
N = int(input("Введите целое число")); N1= N
s = 0
while N != 0:
d = N % 10
s += d
N = N // 10
print("Сумма цифр числа", N1,
N, " равна", s)
? Что плохо?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
20. Цикл по переменной
Программирование (Python), 8 класс20
Цикл по переменной
Задача. Вывести на экран степени числа 2 от 20 до 210.
k = 0
! Работа с k в трёх местах!
N = 1
Идея: собрать всё вместе.
while k <= 10 :
print(N)
N = N*2
не включая 11!
с нуля!
k = k + 1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
N = 1
for k in range(11)
range(11):
print(N)
N = N*2
сделать 11 раз
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
21. Цикл по переменной
Программирование (Python), 8 класс21
Цикл по переменной
for k in range(11):
print(k)
? Что выведет?
for k in [0,1,2,3,4,5,6,7,8,9,10]:
print(k)
Начать на с 0, а с 1:
for k in [1,2,3,4,5,6,7,8,9,10]:
print(k)
начальное
значение
for k in range( 1 ,11):
print(k)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
0
1
2
…
10
22. Цикл по переменной
Программирование (Python), 8 класс22
Цикл по переменной
Задача. Найти сумму чисел от 1 до 1000.
S = 0
for i in range(1,1001):
S += i
Задача. Вывести квадраты чисел от 10 до 1 по убыванию.
for k in [10,9,8,7,6,5,4,3,2,1]:
print(k*k)
не включая 0
шаг
for k in range(10,0,–1):
print(k*k)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
programming