1. К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
1
Програмування
мовою Python
Найпростіші програми
Обчислення
Розгалуження
Символьні величини
Циклічні алгоритми
2. К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Програмування
мовою Python
Найпростіші програми
2
3. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Найпростіша програма
3
# Це порожня програма
Що робить ця програма?
?
коментарі після #
не опрацьовуються
# coding: utf-8
# Це порожня програма
кодування utf-8 за
замовчуванням)
"""
Це також коментар
"""
4. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Виведення на екран
4
print ( "2+2=?" )
print ("Відповідь: 4")
Протокол:
2+2=?
Відповідь: 4
автоматичний
перехід на новий
рядок
print ( '2+2=?' )
print ('Відповідь: 4' )
5. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Додавання чисел
5
Задача. Ввести з клавіатурыи два числа і знайти їх суму.
Протокол:
Введіть два цілих числа
25
30
25+30=55
Комп’ютер
користувач
Комп’ютер рахує сам!
6. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Змінні
6
Змінна – це величина, яка має ім’я, тип та
значення. Значення змінної можна
змінювати під час роботи програми.
Значення
Ім’я
7. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Імена змінних
7
МОЖНА використовувати
• латинські букви (A-Z, a-z)
• кирилицю (не можна!)
• цифри
• знак підкреслення _
Великі та маленькі літери розрізняються
НЕ можна використовувати
• дужки
• знаки +, =, !, ? тощо.
Ім’я не може починатися з цифри
Які імена записано правильно?
AXby R&B 4Wheel Вася “PesBarbos”
TU154 [QuQu] _ABBA A+B
8. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Типи змінних
8
a = 4
print ( type(a) )
<class 'int'>
ціле число (integer)
a = 4.5
print ( type(a) )
<class 'float'>
дійсне число (float)
a = "Вася"
print ( type(a) )
<class 'str'> символьний рядок (str)
a = True
print ( type(a) )
<class 'bool'> логическна (bool)
9. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Для чого потрібен тип змінної?
9
Тип визначає:
• область допустимих значень
• допустимі операції
• об’єм пам’яті
• формат зберігання даних
10. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Як записати значення в змінну?
10
a = 5
оператор
присвоюванняя
При записі нового значення
старе видаляється із пам’яті!
!
5
Оператор – це команда мови програмування
(інструкція).
Оператор присвоювання – це команда для
присвоювання нового значення змінній.
a
a = 7 7
11. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Введення значення з клавіатури
11
1. Програма чекає доки користувач введе
значення і натисне Enter.
2. Введене значення записується в змінну a
!
5
a
12. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Введенння значення з клавіатури
12
a = input() ввести рядок з клавіатури і
записати в змінну a
b = input()
с = a + b
print ( c )
Протокол:
21
33
2133
Чому?
?
Результат функції input – рядок символів!
!
a = int( input() )
b = int( input() )
перетворити в
ціле число
13. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Введення з підказкою
13
a = input ( "Введіть число: " )
підказка
Введіть число: 26
Що не так?
?
a = int( input("Введіть число: ") )
14. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Зміна значень змінної
14
a = 5
b = a + 2
a = (a + 2)*(b – 3)
b = b + 1
a 5
b =5+2
7
28 =(5+2)*(7-3)
=7+1
8
15. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Виведення даних
15
print ( a ) Значення
змінної
print ( «Відповідь: ",
a )
Значення і
текст
перечисление через запятую
print ( «Відповідь: ", a+b ) обчислення
виразу
print ( a, "+", b, "=", c )
2 + 3 = 5 через пропуски
print ( a, "+", b, "=", c, sep = "" )
2+3=5
sep = ""
Забрати розділювачі
16. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Додавання чисел: простий розв’язок
16
a = int ( input() )
b = int ( input() )
c = a + b
print ( c )
Що пагано?
?
17. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
print ( "Введіть два цілих числа: " )
a = int ( input() )
b = int ( input() )
c = a + b
print ( a, "+", b, "=", c, sep="" )
Додавання чисел: повний розв’язок
17
Протокол:
Введіте два цілих числа
25
30
25+30=55
Комп’ютер
користувач
підказка
18. К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Програмування
мовою Python
Обчислення
18
19. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Арифметичні вирази
19
a = (c + b**5*3 - 1) / 2 * d
Пріоритет (порядок виконання):
1) дужки
2) піднесення до степеня **
3) множення і ділення
4) Додавання і віднімання
1 2
3 4 5 6
d
b
c
a
2
1
3
5
a = (c + b*5*3 - 1)
/ 2 * d
перенесення на
наступний рядок
a = (c + b*5*3
- 1) / 2 * d
перенесення
всередині дужок
дозволено
20. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Ділення
20
Класичне ділення:
a = 9; b = 6
x = 3 / 4 # = 0.75
x = a / b # = 1.5
x = -3 / 4 # = -0.75
x = -a / b # = -1.5
Цілочисельне ділення (округленя «вниз»!):
a = 9; b = 6
x = 3 // 4 # = 0
x = a // b # = 1
x = -3 // 4 # = -1
x = -a // b # = -2
21. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Остача від ділення
21
% – остача від ділення
d = 85
b = d // 10 # 8
a = d % 10 # 5
d = a % b # 5
d = b % a # 3
a = 15
b = 19
d = a // b # 0
a = a % b # 15
22. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Скорочений запис операцій
22
a += b # a = a + b
a -= b # a = a - b
a *= b # a = a * b
a /= b # a = a / b
a //= b # a = a // b
a %= b # a = a % b
a += 1
збільшення на 1
23. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Генератор випадкових чисел
23
Генератор на [0,1):
X = random.random() # псевдосл. число
Y = random.random() # вже інше число!
Цілі числа на відрізку [a,b]:
X = random.randint(1,6) # псевдосл. число
Y = random.randint(1,6) # вже інше число!
import random англ. random – випадковий
24. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Генератор випадкових чисел
24
Генератор на [0,1):
X = random() # псевдослучайне число
Y = random() # це вже інше число!
Цілі числа на відрізку [a,b]:
X = randint(10,60) # псевдослучайне число
Y = randint(10,60) # це вже інше число!
from random import *
англ. random – випадковий
підключити все!
25. К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Програмування
мовою Python
Розгалуження
25
26. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Умовний оператор
26
Задача: змінити порядок дій в залежності від вконання
деякої умови.
M = a
a > b?
M = b
так ні
виведення M
повна форма
розгалуження
Якщо a = b?
?
if a > b:
M = a
else:
M = b
відступи
27. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Умовний оператор: неповна форма
27
M = b
b > a?
да нет
виведення M
M = a
неповна
форма
розгалуження
M = a
if b > a:
M = b
M = max(a, b)
Розв’язок в стилі Python:
M = a if a > b else b
28. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Умовний оператор
28
if a > b:
с = a
a = b
b = c
Що робить?
?
4 6
?
4
6 4
a b
2
c
a, b = b, a
Розв’язок в стилі Python:
29. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Знаки відношень
29
> <
>=
<=
==
!=
більше, меньше
більше або дорівнює
меньше або дорівнює
дорівнює
не дорівнює
30. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Вкладені умовні оператори
30
if a > b:
print("Андрій старше")
else:
if a == b:
print(«одного віку")
else:
print("Борис старше")
вкладений умовний
оператор
Задача: в змінних a та b записано вік Андрія та Бориса.
Хто із них старше?
Скільки варіантів?
?
31. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Каскадне розгалуження
31
if a > b:
print("Андрій старше")
elif a == b:
print("Одного віку")
else:
print("Борис старше")
elif = else if
!
32. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Каскадне розгалуження
32
cost = 1500
if cost < 1000:
print ( "Скидок немає." )
elif cost < 2000:
print ( "Скидка 2%." )
elif cost < 5000:
print ( "Скидка 5%." )
else:
print ( "Скидка 10%." )
Що виведе?
?
Перша умова, що
спрацювала
Скидка 2%.
33. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Складені умови
33
Задача: набір співробітників у віці 25-40 років (включно).
if :
print("підходить")
else:
print("не підходить")
and
v >= 25 and v <= 40
Складена умова
«І»: одночасне виконання
всіх умов!
34. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Складені умови
34
Задача: набір співробітників у віці 25-40 років (включно).
if :
print("не підходить")
else:
print("підходить")
v < 25 or v > 40
складена умова
or «АБО»: виконання хоча б однієї
із двох умов!
35. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Складені умови
35
if not(a < b):
print("Cтарт!")
not
Пріоритет :
1) відношення (<, >, <=, >=, ==, !=)
2)not («НІ»)
3)and («І»)
4)or («АБО»)
«НІ»: якщо виконується обернена умова
if a >= b:
print("Cтарт!")
36. К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Програмування
мовою Python
Символьні рядки
36
37. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Символьні рядки
37
Початкове значення:
Склеювання:
s = "Привіт!" Рядок – це
послідовність
символов!
!
Виведення на екран:
print ( s )
Повторення:
s = "АУ"
s5 = s*5 АУАУАУАУАУ
s5 = s + s + s + s + s
s1 = "Привет"
s2 = "Вася"
s = s1 + ", " + s2 + "!"
"Привіт, Вася!"
38. К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Програмування
мовою Python
Циклічні алгоритми
38
39. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Що таке цикл?
39
Цикл – це виконання одинакових дій декілька разів.
Два вида циклів:
• цикл з відомим числом повторень(зробити10 разів)
• цикл с невідомим числом повторень (робити, поки
не набридне)
40. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Цикл з умовою
40
Задача. Визначити кількість цифр в десятковому
записі цілого додатнього числа, записанного в змінну
n.
лічильник = 0
поки n > 0:
забрати останню цифру
числа n
збільшити лічильник на 1
n Лічильник
1234 0
123 1
12 2
1 3
0 4
Як забрати останю цифру?
?
n = n // 10
Як збільшити лічильник на 1?
?
лічильник= лічильник+ 1 Лічильник+= 1
41. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Цикл з умовою
41
count = 0
while :
n = n // 10
count += 1
тіло цикла
початкове значення
лічильника
n > 0
умова
продовження
заголовок
цикла
Цикл з передумовою – перевірка на вході в цикл!
!
42. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Цикл із параметром (лічильником)
42
Задача. Вивести 10 разів слово «Привіт!».
Чи можливо це із циклом «поки»?
?
while :
print("Привіт!")
i = 0
i < 10
i += 1
for :
print("Привіт!")
i in range(10)
в діапазоні
[0,10)
Цикл с параметром:
Не включаючи 10!
!
range(10) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
43. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Цикл з параметром
43
Задача. Вивести всі степені двійки від 21 до 210.
for :
print ( 2**k )
k in range(1,11)
в діапазоні
[1,11)
Цикл з параметром:
Не включаючи
11!
!
range(1,11) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
44. Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015 http://kpolyakov.spb.ru
Цикл с параметром: інший крок
44
100
81
64
49
36
25
16
9
4
1
Що потримаємо?
?
1
9
25
49
81
for :
print ( k**2 )
k in range(1,11,2)
for :
print ( k**2 )
k in range(10,0,-1)
крок
10,9,8,7,6,5,4,3,2,1
1,3,5,7,9