3. Умовний оператор
Дуже часто, як у своєму повсякденному житті, так і
в іграх, ви стикаєтеся з умовами. За приклад може ста-
ти ситуація в грі, коли гравцеві потрібно зробити вибір:
якщо зібрано більше, ніж 500 загадкових каменів, мож-
на відкрити бонусний рівень.
Інший приклад: ваш персонаж у грі – воїн. Зброя во-
їна – меч. Такі умови дуже легко перевірити звичайним
питанням, відповіддю на яке може бути «так» або «ні»,
«правда» або «брехня» (рис. 1): Ви воїн? – Так. – Отри-
муєте меч.
Рисунок 1
3
Умова if і математичні операції
4. Умова оформляється таким чином: після if в дуж-
ках записується вираз, який перевіряє програма. Якщо
вираз в дужках true, то виконується блок коду після
двокрапки, якщо false – ця ділянка коду пропускаєть-
ся.
Оператори порівняння
Для роботи з умовами знадобляться оператори по-
рівняння – оператори, які відповідають на питання
«так чи ні». Наприклад, чи є у вас сьогодні заняття в
Академії: «так» – ви йдете на пару, «ні» – займаєтеся ін-
шими справами.
Приклад базових логічних операторів наведено
нижче – на найпростіших прикладах з числами. Відпо-
відно, true (правда) означає, що результат порівняння
правильний, а false (неправда) – навпаки.
Операція Назва Приклад Результат
> Більше print(5>2) true
< Менше print(5<2) false
>= Більше/одно print(5>=2) true
<= Менше/одно print(5<=2) false
== Так само print(5==2) false
print(5==5) true
!= Не дорівнює print(5!=2) true
4
Урок № 4
5. Серед усіх наведених операторів, можливо, раніше
ви не стикалися з !=. Це «не дорівнює», і воно запитує
комп'ютер, чи правда, що число п'ять не дорівнює двом?
Відповідь буде «так, це не правда», тому результат та-
кої операції true.
Конструкція if-else
Перша логічна конструкція – if (якщо) і вона до-
сить проста у використанні. Якщо описати простими
словами, то вона отримує результат true або false.
Якщо true, то код виконується в тілі циклу, тобто після
двокрапки. І так повторюється до тих пір, поки вираз в
дужках після if буде правильним.
Синтаксис умовного оператора if виглядає на-
ступним чином:
if логічний_вираз:
вираз 1
вираз 2
...
Однієї лише інструкції if не завжди буде достатньо.
Для таких випадків є блок else, який дозволяє створити
ще одну гілку і виконати інший код, якщо вираз після if
не виконується.
5
Умова if і математичні операції
6. Синтаксис if-else виглядає так:
if логічний_вираз:
вираз 1
вираз 2
...
else:
вираз 3
...
А тепер давайте напишемо код, який би реалізував
ці конструкції, виводячи результат роботи у консоль.
# condition if-else
a = 5
b = 6
if (a < b):
print("a severely b")
else:
print("a strictly b")
У цій програмі використовується умовна інструк-
ція if-else (якщо-інакше). Після слова if вказується
логічний вираз (a < b). Після цього йде блок (послідов-
ність) інструкцій, який буде виконано, якщо умова іс-
тинна.
Потім іде else (інакше) і блок інструкцій, який буде
виконано, якщо перевіряється умова неправильно.
6
Урок № 4
7. Напишемо невелику програму, щоб користувач міг
ввести число від 0 до 24, а програма сказала, день зараз
чи ніч.
Раніше вже було розглянуто принцип роботи з
функціями введення/виведення print() і input().
А тепер об'єднаємо у своєму коді умовні інструкції
if-else і функції введення/виводу.
# time
time = input("Enter the time: ")
if time < 12:
print("The first half of the day!")
else:
print("Afternoon!")
Відмінно! Ось ви і навчилися використовувати
умовні інструкції.
Підключення math та random
Для написання наступних програм знадобляться
додаткові модулі math і random. Як ви вже знаєте з по-
передніх уроків, модуль – це сукупність функцій або
змінних, зібраних разом.
На попередніх уроках ми використовували модуль
turtle для малювання за допомогою черепашки. Як ви
пам'ятайте, спочатку ми імпортували модуль, а потім
вже писали код.
Як бачите, в Python є величезна кількість корисних
модулів для вирішення найрізноманітніших завдань.
7
Умова if і математичні операції
8. Модуль math
Ми завжди будемо посилатися на офіційну докумен-
тацію. Модуль math дозволяє реалізувати безліч мате-
матичних обчислень, таких як округлення, зведення в
степінь, добування кореня з числа:
import math
print(math.ceil(2.5)) # ceil(2.5) ≈ 3
print(math.floor(2.5)) # floor(2.5) ≈ 2
print(math.pow(2, 4)) # pow(2, 4) =
2*2*2*2 = 16.0
print(math.sqrt(16)) # sqrt(16) = 4*4 = 4.0
В модулі math функції math.ceil(x) і math.
floor(x) виконують округлення, причому перша – ок-
руглює до більшого значення, а друга – до меншо-
го. Функція math.pow(x, y) зводить до степеня
xy= x1
* x2
* ... * xy, а math.sqrt(x) обчислює корінь √ x,
тобто яке число звести в квадрат, щоб отримати число x.
Модуль random
Модуль random дозволяє генерувати випадкові
числа. Це аналогічно до того, якби ви попросили това-
риша загадати будь-яке число, наприклад, від 0 до 10
або від 100 до 200.
Давайте розглянемо на прикладі двох функцій, які
дозволяють отримувати числа типу int і float (див. код
на сторінці 9).
8
Урок № 4
9. 9
Умова if і математичні операції
import random
print(random.random()) # 0.4956579385740163
print(random.randint(0, 1)) # 0
print(random.randint(1, 100)) # 66
print(random.randint(10, 20)) # 16
В модулі random однойменна функція random()
генерує числа з плаваючою комою (float) на інтерва-
лі [0,0, 1.0). Щоб її використовувати, вказуємо ім'я мо-
дуля і ім'я функції random.random(). Своєю чергою,
функція randint() генерує цілі числа (int) в межах
a <= N <= b, де N – і є випадкове число.
Як бачите, це досить корисна бібліотека. Використо-
вувати її будемо, коли нам знадобиться імітувати підки-
дання кубика або монети, адже наше завдання зробити
так, щоб результат був абсолютно випадковим.
Математичні операції
Не забувайте, що є ряд математичних операцій, які
також знадобляться для вирішення ряду завдань. До та-
ких операцій належать додавання, віднімання, множен-
ня, ділення і піднесення до степеня.
Зверніть увагу, що в разі підсумовування або від-
німання можна використовувати різні записі, але
вони будуть мати один і той же зміст.
10. 10
Урок № 4
Додавання:
a = 2
a += 1 # a = a+1
print(a)
Віднімання:
a = 2
a -= 1 # a = a-1
print(a)
У розглянутих прикладах поєднання знаків плюса
і одне a += 1 аналогічно до операції додавання, яка
прописана в коментарях a = a+1. Та ж ситуація і з
операцією віднімання. Спробуйте замість += виконати
операції:
■■ множення a *= 2;
■■ ділення a /= 2, a //= 2, a %= 2;
■■ піднесення до степеня a **= 2.
Зведення в степінь, як ви вже знаєте, теж можна ре-
алізувати декількома способами:
import math
a = 2
a = math.pow(a, 2) # a = a**2
print(a)
Тут можна використовувати оператор ** або ж
функцію math.pow(x, y) з бібліотеки math.
11. 11
Умова if і математичні операції
Вирішення шкільних завдань
за допомогою Python
Погодьтеся, як круто, коли ви можете самостійно
написати програму, яка б вирішувала шкільні завдання!
Переводимо американські одиниці виміру
в метричні
Часто в іноземних книгах і фільмах, кажучи про
відстані, вживають поняття «миля». Миля є однією з
одиниць вимірювання відстані. До того ж, коли мова за-
ходить про швидкість руху автомобіля (рис. 2), нерідко
можна почути вираз «милі на годину». Одна миля (mile)
дорівнює значенню в 1,609 км.
Напишемо програму, яка б виконувала перетворен-
ня відстані з миль в кілометри:
# miles to km
n = input("Enter miles: ")
mile = 1.609
km = float(n) * mile
print(f"{n} mile = {km} km")
if km > 80:
print("Too fast!")
Вирішимо задачу.
Умова: спідометр автомобіля показує швидкість в
милях на годину. Скільки км на годину показує спідо-
12. 12
Урок № 4
метр, якщо автомобіль рухається зі швидкістю 43 милі
на годину?
Для цього нам досить підставити число 43 і отрима-
ти результат.
Відповідь: 69.187 km.
Калькулятор покупок
Уявіть, що ви прийшли в магазин, де продають ма-
гічні карамельки по 270 монет за 1 кг. Зараз в магазині
проходить акція: при покупці більше ніж 500 г караме-
льок, їхня вартість дорівнює 200 монетам за 1 кг (рис. 3).
Напишемо програму, яка б рахувала суму покупки і
ще перекладала одиниці з грамів у кілограми, при цьому
в 1 кілограмі 1000 грамів.
Рисунок 2
Рисунок 3
13. 13
Умова if і математичні операції
Така програма вирішить цю задачку:
# calculate
import math
price_1 = 270
price_2 = 200
gramm = int(input("Enter weight (gramm): "))
kg = gramm / 1000
print("Your weight: {} kg".format(kg))
if (kg<0.5):
total = kg * price_1
else:
total = kg * price_2
total = math.ceil(total)
print("Your total: {} coin".format(total))
В цій програмі ми використовували бібліотеку math,
яка в даній програмі дозволяє округляти кінцеву суму.
Ось уявіть собі, що в програмі ви ввели значення
Enter weight (gramm): 10001, тоді в результаті вико-
нання коду буде:
Your total: 2000.1999999999998 coin.
Ви можете перевірити самі, – для цього закоментуй-
те рядок # total = math.ceil(total) і запустіть код.
Повернемося до нашої програми. Щоб такого зна-
чення не було, ми додали бібліотеку math і функцію
math.ceil(total).
14. 14
Урок № 4
Генеруємо випадкові числа
Іноді в програмі необхідно використовувати випад-
кові числа, наприклад, якщо ми моделюємо підкидання
грального кубика або монетки. У таких випадках слід
випадковим чином згенерувати число від 1 до 6 (підки-
дання кубика) або 0 і 1 (орел і рішка – підкидання моне-
ти) (рис. 4).
Для цього будемо використовувати вже знайомий
нам модуль random.
Давайте напишемо програму, де комп'ютер буде за-
гадувати випадкове число і виводити його на екран. Не-
хай числа, які може вивести комп'ютер, будуть в межах
від 1 до 6 (як на гральному кубику).
Розглянемо таку ситуацію: для виграшу необхідно,
щоб на кубику випало число 6. Скільки разів випаде ця
цифра, якщо підкинути кубик 20 разів?
Рисунок 4
15. 15
Умова if і математичні операції
Дану задачу вирішить така програма:
# random numbers
import random
number = 0
for i in range(20):
# random number from 1 to 6
magic_number = random.randint(1, 6)
#print("{}. The magic number is:
{}" .format(i, magic_number))
if magic_number == 6:
number = number + 1
print("You got number 6: {} times"
.format(number))
В нашу програму ми імпортували модуль random.
У другому рядку створили змінну number і прирівняли
її до 0. Потім використали цикл for, з яким працювали
на попередньому уроці. Цикл дозволяє виконати одну
і ту ж дію певною кількістю разів. Функція range(20)
задає діапазон чисел від 0 до 19, тобто код в тілі циклу
(після for) повториться 20 разів.
Зверніть увагу, якщо ми самі не вказали, з якого
числа починається відлік, то програма буде вважа-
ти не з 1, як ми звикли, а з 0.
Потім була створена змінна magic_number, в яку
записали випадкове число.
16. 16
Урок № 4
Випадкове число генерується функцією random.
randint(1, 6). Воно може дорівнювати 1, 2, ..., 5, 6.
Можна забрати коментування даного ряд-
ка #print("{}. The magic number is: {}".
format(count, magic_number)), видаливши символ
#, щоб в консоль виводилося число, яке генерується.
До змінної number = number + 1 кожен раз додаємо
1, коли на кубику випадає число 6. Таким чином ми під-
рахуємо, скільки разів випала шістка.