Similar presentations:
2_Ветвление
1. Программирование на языке Python
1Программирование
на языке Python
§ 54. Алгоритм и его свойства
§ 55. Простейшие программы
§ 56. Вычисления
§ 57. Ветвления
§ 58. Циклические алгоритмы
§ 59. Процедуры
§ 60. Функции
§ 61. Рекурсия
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
2. Программирование на языке Python
2Программирование
на языке Python
§ 57. Ветвления
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
3. Условный оператор
Алгоритмизация и программирование, язык Python, 10 класс3
Условный оператор
Задача: изменить порядок действий в зависимости от
выполнения некоторого условия.
полная
форма
да
нет
ветвления
a > b?
M=a
M=b
вывод M
отступы
К.Ю. Поляков, Е.А. Ерёмин, 2014
? Если a = b?
if a > b:
M = a
else:
M = b
http://kpolyakov.spb.ru
4. Условный оператор: неполная форма
Алгоритмизация и программирование, язык Python, 10 класс4
Условный оператор: неполная форма
M=a
да
b > a?
нет
M = a
if b > a:
M = b
M=b
неполная
форма
ветвления
вывод M
Решение в стиле Python:
M = max(a, b)
К.Ю. Поляков, Е.А. Ерёмин, 2014
M = a if a > b else b
http://kpolyakov.spb.ru
5. Условный оператор
Алгоритмизация и программирование, язык Python, 10 класс5
Условный оператор
if a < b:
с = a
a = b
b = c
? Что делает?
b
a
4
6
2
6
4
? Можно ли обойтись
без переменной c?
Решение в стиле Python:
?
4
c
a, b = b, a
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
6. Знаки отношений
Алгоритмизация и программирование, язык Python, 10 класс6
Знаки отношений
> <
больше, меньше
>=
больше или равно
<=
меньше или равно
==
равно
!=
не равно
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
7. Тернарный оператор
Алгоритмизация и программирование, язык Python, 10 класс7
Тернарный оператор
true_value if condition else false_value
Операнды тернарного оператора:
condition логическое выражение, которое может принимать истинное или
ложное значение
true_value значение, которое будет присвоено,
если condition приняло истинное значение
false_value значение, которое будет присвоено, если condition приняло ложное
значение
Аналогично:
if condition:
true_value
else:
false_value
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
8. Задачи
Алгоритмизация и программирование, язык Python, 10 класс8
Задачи
Вводятся два целых числа, каждое в отдельной строке.
Ваша задача вывести наименьшее и наибольшее из
данных чисел.
Sample Input 1:
8 11
Sample Output 1:
8 11
Sample Input 2:
50 21
Sample Output 2:
21 50
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
9. Вложенные условные операторы
Алгоритмизация и программирование, язык Python, 10 класс9
Вложенные условные операторы
Задача: в переменных a и b записаны возрасты Андрея и
Бориса. Кто из них старше?
Сколько вариантов?
if a == b:
print("Одного возраста")
else:
if a > b:
print("Андрей старше")
else:
print("Борис старше")
?
? Зачем нужен?
К.Ю. Поляков, Е.А. Ерёмин, 2014
вложенный
условный оператор
http://kpolyakov.spb.ru
10. Каскадное ветвление
Алгоритмизация и программирование, язык Python, 10 класс10
Каскадное ветвление
if a == b:
print("Одного возраста")
elif a > b:
print("Андрей старше")
else:
print("Борис старше")
! elif = else if
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
11. Каскадное ветвление
Алгоритмизация и программирование, язык Python, 10 класс11
Каскадное ветвление
cost = 1500
if cost < 1000:
print ( "Скидок нет." )
elif cost < 2000:
первое сработавшее
условие
print ( "Скидка 2%." )
elif cost < 5000:
print ( "Скидка 5%." )
else:
print ( "Скидка 10%." )
? Что выведет?
К.Ю. Поляков, Е.А. Ерёмин, 2014
Скидка 2%.
http://kpolyakov.spb.ru
12. Задачи
Алгоритмизация и программирование, язык Python, 10 класс14
Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
if v >= 25 and v <= 40 :
print("подходит")
else:
print("не подходит")
and «И»
or «ИЛИ»
not «НЕ»
Приоритет :
1) отношения (<, >, <=, >=, ==, !=)
2)not («НЕ»)
3)and («И»)
4)or («ИЛИ»)
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
13. Задачи
Алгоритмизация и программирование, язык Python, 10 класс15
Задачи
Вводятся два целых числа, каждое в отдельной строке.
Ваша задача вывести наибольшее из данных чисел.
Примечание: используйте только условный оператор,
функцией max пользоваться нельзя
Sample Input 1:
8 11
Sample Output 1:
11
Sample Input 2:
50 21
Sample Output 2:
50
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
14. Сложные условия
Алгоритмизация и программирование, язык Python, 10 класс16
Задачи
Программа получает на вход три натуральных числа A, B
и C через пробел.
Вам необходимо вывести YES, в том случае, если A + B =
C и вывести NO в противном случае.
Sample Input 1:
459
Sample Output 1:
YES
Sample Input 2:
124
Sample Output 2:
NO
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
15. Задачи
Алгоритмизация и программирование, язык Python, 10 класс17
Задачи
Напишите программу, принимающую на вход целое число,
которая выводит True, если переданное значение попадает в
интервал (−15,12]∪(14,17)∪[19,+∞)(−15,12]∪(14,17)∪[19,+∞) и
False в противном случае (регистр символов имеет
значение).
Sample Input 1:
20
Sample Output 1:
True
Sample Input 2:
-20
Sample Output 2:
False
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
16. Задачи
Алгоритмизация и программирование, язык Python, 10 класс18
Задачи
Из передачи “Здоровье” Аня узнала, что рекомендуется спать хотя бы AA часов в
сутки, но пересыпать тоже вредно и не стоит спать более BB часов. Сейчас Аня
спит HH часов в сутки. Если режим сна Ани удовлетворяет рекомендациям
передачи “Здоровье”, выведите “Это нормально”. Если Аня спит менее AA часов,
выведите “Недосып”, если же более BB часов, то выведите “Пересып”.
Получаемое число AA всегда меньше либо равно BB.
На вход программе в три строки подаются переменные в следующем
порядке: AA, BB, HH.
Обратите внимание на регистр символов: вывод должен в точности
соответствовать описанному в задании, т. е. если программа должна вывести
"Пересып", выводы программы "пересып", "ПЕРЕСЫП", "ПеРеСыП" и другие не
будут считаться верными.
Это первое не самое тривиальное задание на условное выражение. В случаях,
когда разбить исполнение программы на несколько направлений,
стоит внимательно обдумать все условия, которые нужно использовать. Особое
внимание стоит уделить строгости используемых условных операторов:
различайте << и ≤≤; >> и ≥≥. Для того, чтобы понимать, какой из них стоит
использовать, внимательно прочитайте условие задания.
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
17. Задачи
Алгоритмизация и программирование, язык Python, 10 класс19
Задачи
Sample Input 1:
6 10 8
Sample Output 1:
Это нормально
Sample Input 2:
7 9 10
Sample Output 2:
Пересып
Sample Input 3:
792
Sample Output 3:
Недосып
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
18. Задачи
Алгоритмизация и программирование, язык Python, 10 класс20
Задачи
Требуется определить, является ли данный год високосным.
Напомним, что високосными годами считаются те годы, порядковый номер
которых либо кратен 4, но при этом не кратен 100, либо кратен 400 (например,
2000-й год являлся високосным, а 2100-й будет невисокосным годом).
Программа должна корректно работать на числах 1900≤n≤3000.
Выведите "Високосный" в случае, если считанный год является високосным и
"Обычный" в обратном случае (не забывайте проверять регистр выводимых
программой символов).
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
19. Задачи
Алгоритмизация и программирование, язык Python, 10 класс21
Задачи
Sample
Input 1:
2100
Sample
Output 1:
Обычный
Sample
Input 2:
2000
Sample
Output 2:
Високосный
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
20. Задачи
Алгоритмизация и программирование, язык Python, 10 класс22
Задачи
Напишите простой калькулятор, который считывает с
пользовательского ввода три строки: первое число,
второе число и операцию, после чего применяет
операцию к введённым числам ("первое число"
"операция" "второе число") и выводит результат на
экран.
Поддерживаемые операции: +, -, /, *, mod, pow, div, где
mod — это взятие остатка от деления,
pow — возведение в степень,
div — целочисленное деление.
Если выполняется деление и второе число равно 0,
необходимо выводить строку "Деление на 0!".
Обратите внимание, что на вход программе приходят
вещественные числа
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
21. Задачи
Алгоритмизация и программирование, язык Python, 10 класс23
Задачи
Sample Input 1:
5.0 0.0 mod
Sample Output 1:
Деление на 0!
Sample Input 2:
-12.0 -8.0 *
Sample Output 2:
96.0
Sample Input 3:
5.0 10.0 /
Sample Output 3:
0.5
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
22. Задачи
Алгоритмизация и программирование, язык Python, 10 класс24
Задачи
Паша очень любит кататься на общественном транспорте, а
получая билет, сразу проверяет, счастливый ли ему попался.
Билет считается счастливым, если сумма первых трех цифр
совпадает с суммой последних трех цифр номера билета.
Однако Паша очень плохо считает в уме, поэтому попросил
вас написать программу, которая проверит равенство сумм и
выведет "Счастливый", если суммы совпадают, и "Обычный",
если суммы различны.
На вход программе подаётся строка из шести цифр.
Выводить нужно только слово "Счастливый" или "Обычный",
с большой буквы.
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
23. Задачи
Алгоритмизация и программирование, язык Python, 10 класс25
Задачи
Sample Input 1:
090234
Sample Output 1:
Счастливый
Sample Input 2:
123456
Sample Output 2:
Обычный
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
24. Задачи
Алгоритмизация и программирование, язык Python, 10 класс26
Задачи
«A»: Напишите программу, которая получает три числа и
выводит количество одинаковых чисел в этой
цепочке.
Пример:
Введите три числа:
5 5 5
Все числа одинаковые.
Пример:
Введите три числа:
5 7 5
Два числа одинаковые.
Пример:
Введите три числа:
5 7 8
Нет одинаковых чисел.
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
25. Задачи
Алгоритмизация и программирование, язык Python, 10 класс27
Задачи
«B»: Напишите программу, которая получает номер
месяца и выводит соответствующее ему время года
или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
26. Задачи
Алгоритмизация и программирование, язык Python, 10 класс28
Задачи
«C»: Напишите программу, которая получает возраст
человека (целое число, не превышающее 120) и
выводит этот возраст со словом «год», «года» или
«лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
27. Задачи
Алгоритмизация и программирование, язык Python, 10 класс29
Задачи
«A»: Напишите условие, которое определяет
заштрихованную область.
а)
а
б) б
y
) x2 y 2 4
y
)
в
y sin( x)
)
y 0,5
x
y x
x
x 2
«B»: Напишите условие, которое определяет
заштрихованную область.
а)
б)
y
в)
y x
y
y 1
y
x2 y 2 1
y x 1
x
y x2
0
y 2 x
x
x2 y 2 1
x
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
28. Задачи
Алгоритмизация и программирование, язык Python, 10 класс30
Задачи
«C»: Напишите условие, которое определяет
заштрихованную область.
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
29. Задачи
Алгоритмизация и программирование, язык Python, 10 класс31
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
[email protected]
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной
дидактики и ИТО ПГГПУ, г. Пермь
[email protected]
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru
30. Задачи
Алгоритмизация и программирование, язык Python, 10 класс32
Источники иллюстраций
1.
2.
3.
4.
5.
6.
7.
8.
old-moneta.ru
www.random.org
www.allruletka.ru
www.lotterypros.com
logos.cs.uic.edu
ru.wikipedia.org
иллюстрации художников издательства «Бином»
авторские материалы
К.Ю. Поляков, Е.А. Ерёмин, 2014
http://kpolyakov.spb.ru