You are on page 1of 70

2.1 Розділ 1 – «Привіт, світ!

» Програма

2.1.2 Функція print()


Подивіться на рядок коду нижче:

Слово print, яке ви тут бачите, є назвою функції. Це не означає, що де б це


слово не зустрічалося, воно завжди означає назву функції. Значення слова
випливає з контексту, в якому воно було вжито.

Ви, напевно, багато разів зустрічали термін функція на уроках математики.


Напевно, ви також можете назвати кілька назв математичних функцій, таких як
синус або логарифм.

Функції Python, натомість, є більш гнучкими і можуть мати більше можливостей,


ніж їхні математичні родичі.

Функція (в даному контексті) ‒ це окрема частина комп'ютерного коду, яка здатна


виконувати певні дії:

 викликати певний результат (наприклад, відправити текст на термінал,


створити файл, намалювати зображення, відтворити звук і т.д.); це щось
зовсім нечуване у світі математики;
 обчислювати значення (наприклад, квадратний корінь числа або довжину
заданого тексту) і повертати його як результат; виконання функції - це те,
що робить функції Python близькими до математичних понять.

Більше того, багато функцій Python можуть робити ці дві речі одночасно.

Звідки беруться функції?

З самого Python

Вони можуть бути вбудовані в сам Python; функція print є однією з таких; така
функція є додатковою цінністю, отриманою разом із Python та його середовищем
(вона вбудована); вам не потрібно робити нічого особливого (наприклад, просити
будь-кого про що-небудь), якщо ви хочете цим скористатися;

З модулів

Вони можуть бути вбудовані в одне або кілька доповнень Python, так звані модулі;
деякі модулі постачаються разом із Python, інші можуть вимагати окремої
інсталяції – у будь-якому випадку, усі вони мають бути явно пов’язані з вашим
кодом (ми скоро покажемо, як це зробити);

З вашого коду

Ви можете написати їх самостійно, розмістивши у вашій програмі стільки


функцій, скільки забажаєте або буде потрібно, щоб зробити її простішою,
зрозумілішою та елегантнішою.

Ім'я функції має бути значущим (ім'я функції виведення зрозуміле саме собою).

Звичайно, якщо ви використовуєте якусь вже наявну функцію, ви не можете


вплинути на її ім'я, але коли ви починаєте писати власні функції, вам слід уважно
ставитися до вибору імен.

2.1.3 Аргументи функції


Як ми вже говорили, функція може мати:

 ефект;
 результат.

Є ще третя, дуже важлива, функціональна складова – аргумент(и).

Математичні функції зазвичай приймають один аргумент. Наприклад, sin(x) бере х,


який є величиною кута.

Функції Python, з іншого боку, більш універсальні. Залежно від потреби, вони
можуть приймати будь-яку кількість аргументів - стільки, скільки необхідно для
виконання своїх задач. Примітка: Коли ми говорили про будь-яку кількість, ми
мали на увазі і нуль - деякі функції Python не потребують жодного аргументу.

print("Привіт, світ!")

Незважаючи на кількість необхідних/наданих аргументів, функції Python


обов'язково потребують наявності пари круглих дужок ‒ відкриваючої та
закриваючої відповідно.

Якщо ви хочете передати функції один або кілька аргументів, ви розміщуєте їх


у круглих дужках. Якщо ви збираєтеся використовувати функцію, яка не приймає
жодного аргументу, ви все одно повинні поставити круглі дужки.

Примітка: щоб розрізняти звичайні слова від назв функцій, після їх імен слід
ставити пару порожніх круглих дужок, навіть якщо функція потребує один або
декілька аргументів. Це стандартна домовленість.

Функція, про яку ми тут говоримо, це print().

Чи має функція print() у нашому прикладі аргументи?


Звичайно так, але які?

Рядок, як аргумент функції print().


У даному прикладі єдиним аргументом, що передається у
функцію print() є рядок:

print("Привіт, світ!")

Як бачите, рядок обмежений лапками - власне, лапки і створюють рядок - вони


вирізають частину коду і надають йому інше значення.

Ви можете собі уявити, що в лапках сказано щось на кшталт: текст між нами — не
код. Він не призначений для виконання, і ви повинні сприймати його таким, як він є.

Майже все, що ви помістите в лапки, буде сприйматися буквально, не як код, а


як дані. Спробуйте погратися саме з цим рядком ‒ модифікуйте його, вводьте
новий текст, видаляйте частину наявного.

Існує декілька способів задати рядок в коді Python, але поки що достатньо і цього.

Наразі ви познайомилися з двома важливими складовими коду: функцією та


рядком. Ми поговорили про них з боку синтаксису, але тепер настав час
обговорити їх з боку семантики.

2.1.4 Виклик функції


Ім'я функції (в даному випадку print) разом з круглими дужками та аргументом
(аргументами) формує виклик функції.

Незабаром ми розглянемо це більш детально, але зараз давайте проллємо трохи


світла на це питання.

Що відбувається, коли Python зустрічає виклик, наведений нижче?

назва_функції(аргумент)

Давайте подивимося:

 по-перше Python перевіряє, чи вказане ім'я є легальним (переглядає свої


внутрішні дані, щоб знайти наявну функцію з таким ім'ям; якщо цей пошук не
вдається, Python перериває код);
 по-друге, Python перевіряє, чи вимоги функції до кількості
аргументів дозволяють викликати функцію саме таким чином (наприклад,
якщо конкретна функція вимагає рівно два аргументи, то будь-який виклик з
передачею лише одного аргументу буде вважатися помилковим і призведе
до переривання виконання коду);
 по-третє, Python на мить виходить з вашого коду і переходить до функції,
яку ви викликаєте; звісно, він приймає ваш аргумент (аргументи) і передає
його (їх) до функції;
 по-четверте, функція виконує свій код, досягається бажаний ефект (якщо
такий є), оцінюється бажаний результат (результати) (якщо такі є) і
завершує виконання поставленого перед нею завдання;
 нарешті, Python повертається до вашого коду (на місце одразу після
виклику) і продовжує його виконання.

2.1.5 LAB Робота з функцією print().


Сценарій

Команда print(), яка є однією з найпростіших директив у Python, просто виводить


рядок на екран.

У вашій першій лабораторній:

 Використовуючи функцію print() виведіть на екран рядок Привіт,


Python! Використовуйте подвійні лапки навколо рядка.
 Після цього знову скористайтеся функцією print(), але цього разу виведіть своє
прізвище.
 Видаліть подвійні лапки і виконайте свій код. Спостерігайте за реакцією Python. Яка
виникає помилка?
 Потім приберіть круглі дужки, поставте на місце подвійні лапки і виконайте код
знову. Яка помилка виникла цього разу?
 Експериментуйте якомога більше. Змінюйте подвійні лапки на одинарні,
використайте декілька функцій print() в одному рядку, а потім в різних рядках.
Дивіться, що відбувається.

2.1.6 Функція print() та результат її виконання,


аргументи та значення, які вона повертає
Необхідно якнайшвидше відповісти на три важливі питання:
1. Який ефект дає функція print()?

Ефект дуже корисний і дуже вражаючий. Функція:

 приймає аргументи (може приймати більше одного аргументу, а також може


приймати менше одного аргументу)
 при необхідності перетворює їх у читабельну для людини форму (як ви
можете здогадатися, рядки не потребують цієї дії, оскільки рядок і так є
читабельним)
 і відправляє отримані дані на пристрій виводу (як правило, консоль);
іншими словами, все що ви передаєте у функцію print(), з'явиться на вашому
екрані.

Тож не дивно, що відтепер ви будете використовувати print() дуже активно, щоб


бачити результати своїх операцій та обчислень.

2. Які аргументи очікує print() ?

Будь-які. Незабаром ми покажемо вам, що print() може працювати практично з


усіма типами даних, які пропонує Python. Рядки, числа, символи, логічні значення,
об’єкти ‒ все це можна успішно передавати в print().

3. Яке значення повертає функція print() ?

Жодне з вказаних. Його ефекту достатньо.

2.1.7 Інструкції
Ви вже бачили комп'ютерну програму, яка складається з виклику однієї функції.
Виклик функції є одним з багатьох можливих типів інструкцій Python.

Звичайно, будь-яка складна програма містить набагато більше інструкцій, ніж


одну. Виникає питання: як поєднати більше однієї інструкції в коді Python?

Синтаксис Python досить специфічний в цьому питанні. На відміну від більшості


мов програмування, Python вимагає, щоб у рядку було не більше однієї
інструкції.

Рядок може бути порожнім (тобто не містити жодної інструкції), але він не повинен
містити двох, трьох або більше інструкцій. Це категорично заборонено.

Примітка: Python робить один виняток з цього правила ‒ він дозволяє одній
інструкції займати більше одного рядка (що може бути корисно, якщо ваш код
містить складні конструкції).

Давайте трохи доповнимо код. Ознайомитися з ним можна в редакторі нижче.


Запустіть його та зверніть увагу, що ви бачите в консолі.
Ваша консоль Python тепер повинна мати такий вигляд:

Це гарна нагода зробити деякі спостереження:

 програма викликає функцію print() двічі, і в консолі можна побачити два


окремі рядки - це означає, що функція print() починає свій вивід з нового
рядка кожного разу, коли починає своє виконання; таку поведінку можна
змінити, але можна і використати її на свою користь;
 кожен виклик print() містить в якості аргументу окремий рядок, а вміст
консолі відображає його ‒ це означає, що інструкції в коді виконуються в
тому ж порядку, в якому вони були розміщені у вихідному файлі; жодна
наступна інструкція не виконується до тих пір, поки не буде завершена
попередня (з цього правила є деякі виключення, але їх можна поки що
ігнорувати).

Ми дещо змінили приклад — додали один порожній виклик функції print(). Ми


називаємо її порожньою, тому що не передали у функцію жодного аргументу.

Ви можете побачити це у вікні редактора. Виконайте код.

Що відбувається?

Якщо все пройде нормально, ви повинні побачити щось на зразок цього:

Як бачимо, порожній виклик print() не такий порожній, як можна було очікувати - він
дійсно виводить порожній рядок, або (така інтерпретація також є правильною)
виводить новий рядок.

Це не єдиний спосіб створення нового рядка в консолі виведення. Зараз ми


покажемо вам інший варіант.

2.1.8 Екрануючий символ в Python та символ


нового рядка
Ми знову змінили код. Подивіться уважно.

Є дві дуже малопомітні зміни ‒ ми вставили дивну пару символів всередині речень. Вона
виглядає так: \n.

Цікаво, що хоча ви бачите два символи, Python бачить один.

Зворотний слеш (\) має спеціальне значення при використанні всередині рядків -
він називається символом екранування.

Слово екранування слід розуміти конкретно ‒ це значить, що ряд символів у рядку


екранується на мить (дуже коротку мить), щоб здійснити спеціальну вставку.

Іншими словами, зворотний слеш сам по собі нічого не означає, а є лише


своєрідним повідомленням про те, що наступний за ним символ також має інший
вигляд і значення.

Літера n, що ставиться після зворотного слеша, походить від слова newline (новий
рядок).

Зворотний слеш і n разом утворюють спеціальний символ, який


називається символом переходу на новий рядок, що вказує консолі
почати новий рядок для виведення.

Виконайте код. Тепер ваша консоль має виглядати так:

Як бачите, у віршику з'являються два нових рядки в тих місцях, де було


застосовано \n.

Ця угода має два важливих наслідки:

1. Якщо ви хочете поставити лише один зворотний слеш всередині рядка, не


забувайте про його екранування – його потрібно подвоїти. Наприклад, такий вираз
призведе до помилки:

print("\")

а цей - ні:
print("\\")

2. Не всі екрановані пари (зворотний слеш у поєднанні з іншим символом) щось


означають.

Поекспериментуйте зі своїм кодом у редакторі, запустіть його та подивіться, що


вийде.

2.1.9 Використання кількох аргументів


Досі ми перевіряли роботу функції print() без аргументів та з одним аргументом.
Варто спробувати передати у функцію print() більше одного аргументу.

Подивіться вікно редактора. Саме це ми зараз і перевіримо:

Маємо один виклик функції print(), але він містить три аргументи. Всі вони ‒
рядки.

Аргументи відокремлюються комами. Ми оточили їх пробілами, щоб зробити їх


більш помітними, але це не є обов'язковим, і ми надалі не будемо цього робити.

У цьому випадку коми, що розділяють аргументи, відіграють зовсім іншу роль, ніж
кома всередині рядка. Перша є частиною синтаксису мови Python, а друга
призначена для відображення в консолі.

Якщо ви подивитеся на код ще раз, то побачите, що всередині рядків немає


пробілів.

Виконайте код і подивіться, що вийде.

На консолі повинен з'явитися наступний текст:

Знову з'явилися пробіли, прибрані з рядків. Можете пояснити чому?

З цього прикладу можна зробити два висновки:

 функція print(), викликана з більш ніж одним аргументом, виводить їх усі в


один рядок;
 функція print() за власною ініціативою ставить пробіл між виведеними
аргументами.

2.1.10 Позиційні аргументи


Тепер, коли ви трохи знаєте про властивості функції print(), ми покажемо вам, як
змінювати їх.

Ви повинні мати можливість передбачити результат без виконання коду в


редакторі.

Спосіб, яким ми передаємо аргументи у функцію print(), є найпоширенішим у


Python і називається позиційним. Ця назва походить від того, що значення
аргументу визначається його позицією (наприклад, другий аргумент повинен
виводитися після першого, а не навпаки).

Запустіть код і перевірте, чи збігається результат з вашими очікуваннями.

2.1.11 Аргументи ключових слів


Мова Python пропонує ще один механізм передачі аргументів, який може бути
корисним, коли потрібно змусити функцію print() дещо змінити свою поведінку.

Ми не будемо зараз детально розбиратися в цьому питанні. Ми плануємо це


зробити, коли будемо розглядати функції. Поки що ми просто хочемо показати, як
це працює. Сміливо використовуйте це у своїх програмах.

Механізм має назву аргументи ключових слів (іменовані аргументи). Назва


походить від того, що значення цих аргументів береться не з їх розташування
(позиції), а від спеціального слова (ключового слова), яке використовується для їх
ідентифікації.

Функція print() має два аргументи ключових слів, які ви можете застосовувати для
своїх цілей. Перший називається end.

У вікні редактора можна побачити дуже простий приклад використання аргументу


ключового слова.

Для того, щоб ним скористатися, необхідно знати деякі правила:

 аргумент ключового слова складається з трьох елементів: ключового


слова, що ідентифікує аргумент (в цьому випадку end); знаку рівності (=);
і значення, що присвоюється аргументу;
 будь-які аргументи ключового слова мають бути розміщені після
останнього позиційного аргументу (це дуже важливо)

У нашому прикладі ми використали ключове слово end і задали його як рядок, що


містить один пробіл.

Запустіть код, щоб побачити, як він працює.

На консолі має відображатися такий текст:

Як бачимо, ключове слово end визначає символи, які функція print() посилає на
виведення після того, як досягає кінця своїх позиційних аргументів.

Поведінка за замовчуванням описує ситуацію, коли аргумент ключового


слова end використовується неявно наступним чином: end="\n".

А тепер настав час спробувати щось складніше.

Якщо ви уважно подивитеся, то побачите, що ми використали аргумент end, але


присвоєний йому рядок порожній (не містить жодного символу).

Що станеться далі? Запустіть програму в редакторі, щоб дізнатися.

Оскільки end аргумент був заданий порожнім, функція print() також нічого не
виводить після того, як закінчаться її позиційні аргументи.

На консолі має відображатися наступний текст:

Примітка: при виведенні не було надіслано жодного нового рядка.

Рядок, що присвоюється аргументу ключового слова end, може мати довільну


довжину. Експериментуйте, якщо хочете.

Раніше ми говорили, що функція print() розділяє аргументи, що виводяться,


пробілами. Цю поведінку також можна змінити.

Аргумент ключового слова, який може це зробити, називається sep (як


роздільник, від англ. separator).

Подивіться на код в редакторі та виконайте його.


Аргумент sep дає наступний результат:

Функція print() тепер використовує тире замість пробілу для розділення виведених
аргументів.

Примітка: значенням аргументу sep може бути і порожній рядок. Спробуйте самі.

Обидва аргументи ключового слова можуть бути поєднані в одному виклику, як


показано у вікні редактора.

Приклад не має особливого сенсу, але він наочно демонструє взаємодію


між end і sep.

Чи можете ви передбачити результат?

Виконайте код і перевірте, чи збігається він з вашими очікуваннями.

Зараз, коли ви ознайомилися з функцією print(), ви готові перейти до вивчення


способів зберігання та обробки даних в Python.

Без print() ви не зможете побачити жодних результатів.

2.1.12 LAB Функція print() та її аргументи


Сценарій

Змініть перший рядок коду в редакторі, використовуючи ключові слова sep та end,
щоб він відповідав очікуваному результату. Використовуйте дві функції print() у
редакторі.

Очікуваний результат
Не змінюйте нічого під час другого виклику print().

Відповідь

2.1.13 LAB Форматування виводу даних


Сценарій

Ми наполегливо рекомендуємо вам погратися з кодом, який ми написали для


вас, і внести деякі (можливо, навіть деструктивні) правки. Сміливо модифікуйте
будь-яку частину коду, але є одна умова ‒ вчіться на своїх помилках і робіть власні
висновки.

Намагайся:

 мінімізувати кількість викликів функції print() шляхом додавання до рядків


послідовності \n;
 зробити стрілку вдвічі більшою (але зберегти пропорції);
 продублювати стрілку, розмістивши обидві стрілки поруч; примітка: рядок можна
помножити, скориставшись наступним трюком: "string" *
2 дасть "stringstring" (про це ми розповімо докладніше незабаром);
 видалити будь-яку з лапок і уважно подивитися на відповідь Python; звернути увагу
на те, де Python бачить помилку - чи дійсно помилка саме в цьому місці?
 зробити те ж саме з деякими дужками;
 замінити будь-яке з слів print на щось інше, що відрізняється лише регістром
(наприклад, Print) ‒ що станеться?
 замінити деякі лапки на апострофи; уважно стежте за тим, що відбувається.
*
* *
* *
* *
*** ***
* *
* *
*****
Відповідь
більше:
*
* *
* *
* *
* *
* *
* *
* *
****** ******
* *
* *
* *
* *
* *
* *
*******

двічі:
* *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
****** ************ ******
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
******* *******
2.1.14 ПІДСУМКИ РОЗДІЛУ
1. Функція print() є вбудованою функцією. Вона друкує/виводить на
екран/консоль вказане повідомлення.

2. Вбудовані функції, на відміну від функцій, що визначаються користувачем,


завжди доступні і не потребують імпорту. Python 3.8 має 69 вбудованих функцій.
Ви можете знайти їхній повний перелік в алфавітному порядку в Python Standard
Library (стандартній бібліотеці Python).

3. Щоб викликати функцію (цей процес називається зверненням до функції


або викликом функції), потрібно ввести назву функції, після якої йдуть дужки. У
функцію можна передавати аргументи, помістивши їх в круглі дужки. Аргументи
необхідно відокремлювати комою, наприклад, «Порожня»
функція print() виводить на екран порожній рядок.

4. Рядки в Python розділяються лапками, наприклад, "Я - рядок" (подвійні лапки),


або 'Я теж рядок' (одинарні лапки).

5. Комп'ютерні програми - це набори інструкцій. Інструкція - це команда, при


виконанні якої виконується певне завдання, наприклад, вивести на екран
повідомлення.

6. У рядках Python зворотний слеш (\) це спеціальний символ, який повідомляє,


що наступний символ має інше значення, наприклад, \n (символ нового рядка)
починає новий рядок виведення.

7. Позиційні аргументи - це аргументи, значення яких визначається їх позицією,


наприклад, другий аргумент виводиться після першого, третій - після другого і т.д.

8. Аргументи ключових слів - це ті, значення яких визначається не їх місцем


розташування, а спеціальним словом (ключовим словом), яке використовується
для їх ідентифікації.

9. Параметри end та sep можуть використовуватись для форматування виводу


функції print(). Параметр sep задає роздільник між аргументами, що виводяться,
наприклад, print("H", "E", "L", "L", "O", sep="-"), тоді як параметр end вказує,
що виводити після виконання команди print.

2.1.15 КОНТРОЛЬНА РОБОТА

Запитання 1: Який результат роботи наступної програми?


Запитання 2: Який результат роботи наступної програми?

Запам'ятайте: Аргументи ключових слів повинні передаватися після всіх обов'язкових


позиційних аргументів.

Запитання 3: Який з викликів функції print() призведе до винятку SyntaxError?

Рядок 5 видасть SyntaxError, тому що символ (') у рядку Розв'язок рівняння. вимагає
екранування.

2.2 Розділ 2 – Літерали Python

2.2.1 Літерали – об’єкти певного типу даних


Тепер, коли ви трохи ознайомилися з деякими важливими можливостями, які
пропонує функція print(), настав час дізнатися про нові аспекти та один важливий
новий термін ‒ літерал.

Літерал — це дані, значення яких визначаються самим літералом.

Оскільки це складна для розуміння концепція, корисним може бути наочний


приклад.
Подивіться на наступний набір цифр:

123

Чи можете ви здогадатися, яку цінність він представляє? Звичайно можна – сто


двадцять три.

Але як щодо цього:

Чи представляє це якусь цінність? Можливо. Це може бути, наприклад, символ швидкості


світла. Це також може бути стала інтегрування. Або навіть довжина гіпотенузи в сенсі
теореми Піфагора. Є багато варіантів.

Без додаткової інформації не вдасться обрати правильний варіант.

І це підказка: 123 є літералом, а c ні.

Ви використовуєте літерали для кодування даних і розміщення їх у своєму


коді. Зараз ми покажемо вам деякі умовності, яких ви повинні дотримуватися при
використанні Python.

Почнемо з простого експерименту – подивіться на фрагмент в редакторі.

Перший рядок виглядає знайомим. Другий здається помилковим через очевидну


відсутність лапок.

Спробуй виконати його.

Якщо все пройшло належним чином, ви побачите два однакових рядки.

Що відбулося? Що це означає?

У цьому прикладі наведено два різних типи літералів:

 рядок, з яким ви вже знайомі,


 і ціле число, дещо абсолютно нове.

Функція print() виводить їх абсолютно однаково – цей приклад очевидний,


оскільки їхнє зрозуміле для людини представлення також однакове. Всередині
пам'яті комп'ютера, ці два значення зберігаються абсолютно по-різному – рядок
існує як просто рядок (послідовність літер).
Число перетворюється в машинне представлення (набір бітів).
Функція print() здатна відобразити їх обидва у читабельному для людини вигляді.

Зараз ми витратимо деякий час на обговорення числових літералів та


особливостей їх функціонування.

2.2.2 Цілі числа


Можливо, ви вже знайомі з тим, як комп'ютер здійснює обчислення над числами.
Можливо ви чули про двійкову систему числення і знаєте, що ця система
використовується комп'ютерами для представлення чисел, і що комп'ютери
можуть виконувати над ними різноманітні операції.

Ми не будемо тут розглядати тонкощі позиційних систем числення, але зазначимо,


що числа, з якими працюють сучасні комп'ютери, бувають двох типів:

 цілі числа, тобто ті, що позбавлені дробової частини;


 та числа з рухомою крапкою, що мають (або можуть мати) дробову частину.

Це визначення не зовсім точне, але поки що цілком достатнє. Ця різниця дуже


важлива, і відмінність між цими двома типами чисел дуже суттєва. Ці два типи
чисел суттєво відрізняються за способом зберігання в пам'яті комп'ютера та
діапазоном дозволених значень.

Властивість числового значення, яка визначає його вид, діапазон і призначення,


називається типом.

Якщо ви кодуєте літерал і розміщуєте його всередині коду Python, то форма


літералу визначається його представленням (типом), яке Python буде
використовувати для його зберігання в пам'яті.

Поки що залишимо поза увагою числа з рухомою крапкою (до них ми ще


повернемося) і розглянемо наступне ‒ як Python розпізнає цілі числа.

Процес нагадує написання цифр олівцем на папері ‒ це просто рядок цифр, з яких
складається число. Але є обмеження ‒ не можна вставляти всередину будь-які
символи, що не є цифрами.

Візьмемо, наприклад, число одинадцять мільйонів сто одинадцять тисяч сто


одинадцять. Якби ви зараз взяли в руки олівець, то написали б число приблизно
так: 11,111,111, або так: 11.111.111, або навіть так: 11 111 111.

Зрозуміло, що такий запис полегшує читання, особливо коли число складається з


великої кількості цифр. Однак Python не допускає таких варіантів. Це заборонено.
Що Python дозволяє, так це використання підкреслень у числових літералах.*

Тому це число можна записати або так: 11111111, або так: 11_111_111.

Примітка *У Python 3.6 додано підкреслення в числових літералах, що


дозволяє ставити одинарні підкреслення між цифрами та після базових
специфікаторів для покращення читабельності. Ця функція недоступна в старих
версіях Python.

А як ми кодуємо від’ємні числа в Python? Як завжди ‒ додавши мінус. Ви можете


написати: -11111111 або -11_111_111.

Перед додатними числами не обов'язково ставити знак плюс, але це допустимо,


якщо ви вважаєте за потрібне це зробити. Наступні рядки описують одне і те саме
число: +11111111 та 11111111.

Вісімкові та шістнадцяткові числа

У мові Python є дві додаткові домовленості, які невідомі світу математики. Перша
дозволяє використовувати числа у вісімковому представленні.

Якщо перед цілим числом стоїть 0o або 0O (нуль-о), воно розглядатиметься як


вісімкове значення. Це означає, що число має містити лише цифри з діапазону
[0..7].

0o123 – вісімкове число з відповідним десятковим значенням 83.

Функція print() виконує перетворення автоматично. Спробуйте це:

Друга система дозволяє використовувати шістнадцяткові числа. Перед такими


числами повинен стояти префікс 0x або 0X (нуль-x).

0x123 - шістнадцяткове число з відповідним десятковим значенням 291.


Функція print() може обробляти також і ці значення. Спробуйте це:

2.2.3 Числа з рухомою крапкою


Тепер настав час поговорити про інший тип, який використовується для
представлення та зберігання чисел, що мають (як сказав би
математик) непорожній десятковий дріб.

Це числа, які мають (або можуть мати) дробову частину після крапки, і хоча таке
визначення не дуже вдале, воно, безумовно, достатнє для того, щоб його
обговорити.
Кожного разу, коли ми використовуємо такі терміни, як два з половиною або мінус
нуль цілих чотири десятих, ми думаємо про числа, які комп'ютер вважає числами
з рухомою крапкою:

2.5
-0.4

Примітка: два з половиною виглядає нормально, коли ви вводите його в програмі,


хоча якщо ваша рідна мова вважає за краще використовувати кому замість крапки
в числі, вам слід переконатися, що ваше число взагалі не містить жодної коми.

Python не прийме цього, або (у дуже рідкісних, але можливих випадках) може
неправильно зрозуміти ваші наміри, оскільки кома в Python має власне
зарезервоване значення.

Якщо ви хочете ввести значення два з половиною, вам слід записати його так, як
показано вище. Зверніть увагу ще раз: між 2 і 5 стоїть крапка, а не кома.

Як ви, скоріше за все, здогадуєтесь, значення нуль цілих чотири десятих можна
записати на мові Python так:

0.4

Але не забувайте про просте правило ‒ нуль можна опускати, коли він є єдиною цифрою
перед десятковою крапкою або після неї.

По суті, можна записати значення 0.4 так:

.4

Наприклад: значення 4.0 можна записати так:

4.

Це не змінить ні його тип, ні значення.

Цілі числа порівняно з числами з рухомою крапкою

У мові Python, десятковий роздільник необхідний для розпізнавання чисел з


рухомою крапкою.

Подивіться на ці дві цифри:

4
4.0

Вам може здатися, що вони абсолютно однакові, але Python бачить їх зовсім по-
різному.

4 є цілим числом, тоді як 4.0 ‒ число з рухомою крапкою.


Крапка це те, що відокремлює цілу частину від дробової.

З іншого боку, не тільки крапки визначають чисела з рухомою крапкою. Ви також


можете використовувати літеру e.

Для запису будь-яких дуже великих або дуже маленьких чисел можна
використовувати наукові позначення.

Візьмемо, наприклад, швидкість світла, виражену в метрах за секунду. Прямим


текстом це виглядатиме так: 300000000.

Щоб не писати стільки нулів, у підручниках з фізики використовують скорочену


форму, яку ви, напевно, вже бачили: 3 x 10 . 8

Вона читається так: три на десять в восьмому степені.

У Python той самий ефект досягається дещо іншим способом ‒ подивіться:

3E8

Буква Е (можна також використовувати малу літеру е ‒ вона походить від


слова експонента) – це стислий запис фрази, помноженої на десять у степені.

Примітка:

 показник степеня (значення після E) має бути цілим числом;


 основа (значення до символу E) може бути як цілим числом, так і числом з
рухомою крапкою.

Кодування чисел з рухомою крапкою

Подивимося, як ця умовність використовується для запису чисел, які є дуже


малими (в розумінні їх абсолютної величини, яка наближається до нуля).

Фізична константа, яка називається постійною Планка (і позначається як h), згідно


з підручниками, має значення 6.62607 x 10-34.

Якщо ви хочете використати її у програмі, то ви повинні записати її так:

6.62607E-34

Примітка: те, що ви вибрали одну з можливих форм представлення значень з


рухомою крапкою, ще не означає, що Python буде відображати її так само.

Іноді Python може використовувати іншу систему позначень, ніж ви.

Наприклад, припустимо, ви вирішили використати наступний літерал з рухомою


крапкою:

0.0000000000000000000001

Коли ви пропускаєте цей літерал через Python:


то отримуєте такий результат:

Python завжди вибирає більш компактну форму представлення числа, і це слід


враховувати при створенні літералів.

2.2.4 Рядки
Рядки використовуються, коли потрібно обробити текст (наприклад, імена всіх
видів, адреси, романи тощо), а не числа.

Ви вже трохи знаєте про них, наприклад, що рядки потребують лапок так само,
як числа з рухомою крапкою потребують крапок.

Це дуже типовий рядок: "Я струна."

Однак тут є заковика. Заковика полягає у тому, як закодувати лапки всередині


рядка, який вже розділений лапками.

Припустімо, що ми хочемо надрукувати дуже просте повідомлення:

Мені подобається "Монті Пайтон"

Як це зробити, щоб не згенерувати помилку? Є два можливих рішення.

Перший заснований на вже відомій нам концепції символу екранування, роль


якого, як ви пам'ятаєте, виконує символ зворотного слеша. Зворотний слеш
також може екранувати лапки. Лапки, яким передує зворотний слеш, змінюють
своє значення – це вже не роздільник, а просто лапки. Це працюватиме так, як
задумано:

Примітка: всередині рядка є дві екрановані лапки – чи бачите ви їх обидві?

Друге рішення може бути трохи дивним. Python може використовувати апостроф
замість лапки. Будь-який з цих символів може розділяти рядки, але ви повинні
бути послідовні.

Якщо ви відкриваєте рядок лапкою, то і закривати його потрібно лапкою.

Якщо ви починаєте рядок з апострофа, то ви повинні і закінчувати його


апострофом.
Цей приклад також буде працювати:

Примітка: вам не потрібно робити жодних екранувань.

Кодування рядків

Виникає наступне питання: як вставити апостроф у рядок, розміщений між


апострофами?

Ви вже маєте знати відповідь, точніше, дві можливі відповіді.

Спробуйте вивести рядок з наступним повідомленням:

I'm Monty Python.

Чи знаєте ви, як це зробити? Натисніть Перевірити нижче, щоб перевірити, чи були ви


праві:

Як бачимо, зворотний слеш є дуже потужним інструментом ‒ він може рятувати не


тільки лапки, але й апострофи.

Ми це вже показували, але хочемо ще раз підкреслити: рядок може бути


порожнім ‒ не містити жодного символу.

Порожній рядок все одно залишається рядком:

'' ""

2.2.5 Булеві значення


На завершення про літерали мови Python, слід розглянути ще два додаткових.

Вони не такі очевидні, як усі попередні, оскільки використовуються для визначення


дуже абстрактної цінності – істинності.
Щоразу, коли ви запитуєте Python, чи є одне число більшим за інше, це питання
призводить до створення певних даних ‒ Булевих значень.

Назва походить від імені Джорджа Буля (1815-1864), автора фундаментальної


праці Закони мислення, в якій викладено тлумачення Булевої алгебри ‒ розділу
алгебри, який оперує виключно двома різними значеннями: True і False, що
позначаються як 1 і 0.

Програміст пише програму, а програма задає запитання. Python виконує програму і


дає відповіді. Програма повинна вміти реагувати відповідно до отриманих
відповідей.

На щастя, комп’ютери знають лише два типи відповідей:

 Так, це істина;
 Ні, це хибність.

Ви ніколи не отримаєте відповіді на кшталт: Я не знаю або Мабуть так, але я


точно не знаю..

Отже, Python - це бінарна рептилія.

Ці два Булевих значення мають чіткі позначення в мові Python:

True False

Ви не можете нічого змінити - ви повинні прийняти ці позначення такими, як вони є,


включаючи чутливість до регістру.

Задача: Що виведе наступний фрагмент коду?

2.2.6 LAB Літерали Python - рядки


Сценарій

Напишіть в один рядок фрагмент коду, використовуючи функцію print(), а також


символи переходу на новий рядок та екранування, який буде відповідати
результату, виведеному у трьох рядках.
Очікуваний результат

"я" ""вивчаю"" """Python"""

2.2.7 ПІДСУМКИ РОЗДІЛУ


1. Літерали ‒ це позначення для представлення в коді деяких фіксованих значень.
У мові Python існують різні типи літералів ‒ наприклад, літерал може бути числом
(числові літерали, наприклад, 123), або рядком (строкові літерали, наприклад, «I
am a literal.»)

2. Двійкова система числення ‒ це система числення, в якій в якості основи


використовується 2 цифри. Таким чином, двійкове число складається лише з 0 та
1, наприклад, 1010 ‒ це 10 у десятковій системі числення.

Вісімкова та шістнадцяткова системи числення, аналогічно,


використовують 8 та 16 в якості основи відповідно. У шістнадцятковій системі
використовуються десяткові цифри та шість додаткових літер.

3. Цілі числа є одними з числових типів, що підтримуються Python. Це числа,


записані без дробової частини, наприклад, 256 або -1 (від'ємні цілі числа).

4. Числа з рухомою крапкою ‒ це ще один з числових типів, що підтримуються


Python. Це числа, які містять (або можуть містити) дробову складову,
наприклад 1.27.

5. Щоб закодувати апостроф або лапки всередині рядка, ви можете або


скористатися символом екранування, наприклад, 'I\'m happy.', або відкрити і
закрити рядок, використовуючи набір символів, протилежний тим, які ви хочете
закодувати, наприклад: "I'm happy." для кодування апострофа; і 'He said "Python",
not "typhoon"' для кодування (подвійних) лапок.

6. Булеві значення — це два константні об'єкти: True і False, які використовуються


для представлення значень істинності (в числовому контексті 1 — це True, а 0 —
це False).

Додатково
Існує ще один спеціальний літерал, який використовується в Python: літерал None.
Цей літерал є об’єктом типу NoneType і використовується для
позначення відсутності значення. Незабаром ви дізнаєтесь про це більше.

2.2.8 КОНТРОЛЬНА РОБОТА


Запитання 1: До якого типу літералів відносяться наступні два приклади?

"Привіт ", "007"

Вони обидва є рядками/рядковими літералами.

Запитання 2: До якого типу літералів відносяться наступні чотири приклади?

"1.5", 2.0, 528, False

Перший – рядок,

Другий – числовий літерал (float),

Третій – числовий літерал (integer),

Четвертий – булевий літерал.

Запитання 3: Яке десяткове значення наступного двійкового числа?

1011

Це 11, тому що(2**0) + (2**1) + (2**3) = 11

2.3 Розділ 3 – Оператори та засоби обробки


даних

2.3.1 Python як калькулятор


Зараз ми покажемо вам абсолютно нову властивість функції print(). Ви вже знаєте,
що функція може показувати вам значення літералів, переданих їй за допомогою
аргументів.

Насправді, вона може зробити дещо більше. Погляньте на фрагмент:


Ви повинні побачити цифру чотири. Сміливо експериментуйте з іншими
операторами.

Якщо не сприймати це занадто серйозно, то ви щойно дізналися, що Python можна


використовувати як калькулятор. Не дуже зручний і точно не кишеньковий, але все
ж таки калькулятор.

Якщо говорити більш серйозно, то зараз ми входимо у


площину операторів і виразів.

2.3.2 Основні оператори


Оператор ‒ це символ мови програмування, який здатний оперувати значеннями.

Наприклад, як і в арифметиці, знак + (плюс) - це оператор додавання, який


здатний додавати два числа.

Не всі оператори Python настільки ж очевидні, як знак плюс, тому давайте


розглянемо деякі оператори, доступні в Python, і пояснимо, які правила регулюють
їх використання, і як інтерпретувати операції, які вони виконують.

Почнемо з операторів, які асоціюються з найбільш відомими арифметичними


операціями:

+
-
*
/
//
%
**
Порядок їх розміщення не випадковий. Ми поговоримо про це більш детально,
коли їх всіх розглянемо.

Пам'ятайте: дані та оператори, з'єднані разом, утворюють вирази. Найпростішим


виразом є сам літерал.

Піднесення до степеня

Подивіться на наступний приклад в редакторі:


Примітка: в наших прикладах ми оточили подвійні зірочки пробілами. Це не є
обов’язковим, але покращує читабельність коду.

Приклади демонструють дуже важливу особливість практично всіх числових


операторів мови Python.

Запустіть код і уважно подивіться на результати, які він видає. Ви бачите тут якусь
закономірність?

Запам'ятайте: на підставі отриманих результатів можна сформулювати наступні


висновки:

 коли обидва ** аргументи є цілими числами, результат також буде цілим


числом;
 коли хоча б один ** аргумент є числом з рухомою крапкою, результат
також буде числом з рухомою крапкою.

Це важлива відмінність, про яку слід пам’ятати.

Множення

Знак * (зірочка) є оператором множення.

Виконайте код наведений нижче і перевірте, чи працює наше правило для цілих
чисел та чисел з рухомою крапкою.
Ділення

Знак / (слеш) ‒ оператор ділення.

Значення до косої риски ‒ це ділене, значення після косої риски ‒ дільник.

Запустіть наведений нижче код і проаналізуйте результати.

Ви повинні побачити, що є виняток з правил.

Результат, отриманий в результаті виконання оператора ділення, завжди є


числом з рухомою крапкою, незалежно від того, чи результат на перший погляд
здається числом з рухомою крапкою: 1 / 2, чи він виглядає як чисте ціле число:

2 / 1.

Це проблема? Так. Іноді трапляється так, що потрібне ділення, яке дає ціле
значення, а не з рухомою крапкою.

На щастя, Python може допомогти вам у цьому.

Цілочисельне ділення (частка від ділення)

Знак // (подвійна коса риска) є оператором цілочисельного ділення. Він


відрізняється від стандартного / оператора двома деталями:

 в його результаті відсутня дробова частина – вона відсутня (для цілих чисел) або
завжди дорівнює нулю (для чисел з рухомою крапкою); це означає, що результати
завжди округляються;
 дотримується правил цілих та чисел з рухомою крапкою.

Виконайте наведений нижче приклад і подивіться на результати:


Як бачите, ділення цілого числа на ціле дає цілий результат. У всіх інших
випадках результат з рухомою крапкою.

Давайте виконаємо додаткові тестові задачі.

Подивіться на наступний фрагмент:

Уявіть, що ми використали / замість // ‒ чи могли б ви передбачити результати?

Так, це буде 1.5 в обох випадках. Це зрозуміло.

Але яких результатів слід очікувати від // ділення?

Запустіть код і перевірте самі.

Ми отримали дві одиниці ‒ одну цілу і одну з рухомою крапкою.

Результат цілочисельного ділення завжди округляється до найближчого цілого


числа, яке є меншим за дійсний (не округлений) результат.

Це дуже важливо: округлення завжди здійснюється до меншого цілого.

Подивіться на код нижче і спробуйте ще раз передбачити результати:

Примітка: деякі значення є від’ємними. Це, безумовно, вплине на результат. Але


як?
Результат ‒ дві від'ємні двійки. Реальний (не округлений) результат дорівнює -
1.5 в обох випадках. Однак результати підлягають округленню. Округлення
відбувається в бік меншого цілого значення, а меншим цілим значенням є -2,
отже: -2 і -2.0.

Примітка

Цілочисельне ділення також називають часткою від ділення. Ви обов'язково


зіткнетеся з цим терміном у майбутньому.

2.4 Розділ 4 – Змінні


Ця частина курсу зосереджена на змінних – ми дізнаємося, що це таке, як їх
використовувати та які правила їх регулюють.

2.4.1 Змінні – контейнери як форми даних


Цілком очевидно, що Python повинен дозволяти перекодовувати літерали, що
містять числові та текстові значення.

Ви вже знаєте, що з числами можна виконувати деякі арифметичні дії: додавати,


віднімати тощо. Ви будете робити це багато разів.

Але цілком нормальним є питання – як зберігати результати цих операцій, для


того, щоб використовувати їх в наступних операціях і так далі.

Як зберегти проміжні результати та використати їх знову для створення


наступних?

Python допоможе вам у цьому. Він пропонує для цього спеціальні «коробки» (або
«контейнери», як ми будемо їх називати), і ці коробки називаються змінними ‒
сама назва підказує, що вміст цих контейнерів можна змінювати у (майже) будь-
який спосіб.

Що має кожна змінна Python?

 ім'я;
 значення (вміст контейнера)

Почнемо з питань, пов’язаних з іменем змінної.

Змінні не з’являються в програмі автоматично. Як розробник, ви повинні вирішити,


скільки і які змінні використовувати у своїх програмах.

Ви також повинні назвати їх.


2.4.2 Назви змінних
При присвоєнні імені змінній необхідно дотримуватись деяких чітких правил:

 ім'я змінної має складатися з великих або малих літер, цифр та


символу _ (підкреслення)
 ім'я змінної має починатися з літери;
 символ підкреслення — це буква;
 великі та малі літери розглядаються як різні (трохи інакше, ніж у реальному
світі – Alice та ALICE – це одне і теж ім'я, але в Python це два різних імені
змінних, а отже, дві різні змінні);
 ім’я змінної не має бути жодним з зарезервованих слів Python (ключових
слів – про це ми розповімо пізніше).

Зверніть увагу, що такі ж вимоги поширюються і на імена функцій.

Python не накладає обмежень на довжину імен змінних, але це не означає, що


довге ім'я змінної краще за коротке.

Наведемо кілька коректних, але не завжди зручних назв змінних:

 MyVariable
 i
 l
 t34
 Exchange_Rate
 counter
 days_to_christmas
 TheNameIsTooLongAndHardlyReadable
 _

Ці назви змінних також правильні:

 Adiós_Señora
 sûr_la_mer
 Einbahnstraße
 змінна.

Python дозволяє використовувати не тільки латинські літери, але й символи,


характерні для мов, що використовують інші алфавіти.

А тепер про деякі помилкові імена:

 10t (не починається з літери)


 !important (не починається з літери)
 exchange rate (містить пробіл).

Примітка

PEP 8 -- Style Guide for Python Code рекомендує наступний порядок іменування
змінних та функцій у мові Python:
 імена змінних повинні бути написані малими літерами, з розділенням слів
символом підкреслення для покращення читабельності (наприклад, var,
my_variable)
 імена функцій дотримуються тих самих правил, що й імена змінних
(наприклад, fun, my_function)
 також можна використовувати змішаний регістр (наприклад, myVariable), але
тільки в ситуаціях, коли це вже є загальноприйнятим стилем, щоб зберегти
зворотну сумісність з прийнятою конвенцією.

Ключові слова

Подивіться на список слів, які відіграють особливу роль у кожній програмі Python.

['False', 'None', 'True', 'and', 'as', 'assert', 'break',


'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']

Вони називаються ключовими словами або (точніше) зарезервованими


ключовими словами. Вони зарезервовані, тому що ви не повинні
використовувати їх як імена: ні для ваших змінних, ні для функцій, ні для будь-
яких інших іменованих об'єктів, які ви захочете створити.

Значення зарезервованого слова є заздалегідь визначеним і не може бути


змінено жодним чином.

На щастя, через те, що Python чутливий до регістру, ви можете модифікувати


будь-яке з цих слів, змінивши регістр будь-якої літери, створивши таким чином
нове слово, яке більше не є зарезервованим.

Наприклад, ви не можете назвати свою змінну так:

import

Ви не можете мати змінну, з такою назвою ‒ це заборонено. Але ви можете


назвати свою змінну так:

Import

Можливо, ці слова зараз для вас загадкові, але незабаром ви зрозумієте їх


значення.

2.4.3 Як створити змінну


Що можна помістити всередину змінної?

Що завгодно.
Ви можете використовувати змінну для зберігання будь-якого значення будь-якого
з уже представлених типів, а також багатьох інших, які ми вам ще не показали.

Значення змінної – це те, що ви в неї вклали. Воно може змінюватися так часто, як
ви цього хочете або потребуєте. Воно може бути цілим числом зараз, або числом
з рухомою крапкою вже через мить, в подальшому перетворюючись на рядок.

Поговоримо зараз про дві важливі речі ‒ як створюються змінні, і як помістити


в них значення (точніше ‒ як надати або передати їм значення).

Пам'ятайте

Змінна утворюється в результаті присвоєння їй значення. На відміну від інших


мов, її не потрібно оголошувати якимось особливим чином.

Якщо присвоїти неіснуючій змінній будь-яке значення, змінна буде автоматично


створена. Більше нічого не потрібно робити.

Створення (іншими словами, її синтаксис) надзвичайно просте: достатньо


використати ім'я потрібної змінної, потім знак рівності (=) і значення, яке ви
хочете надати змінній.

Подивіться на фрагмент у редакторі:

Він складається з двох простих інструкцій:

 Перша створює змінну з іменем var і присвоює літерал з цілим значенням


рівним 1.
 Другий виводить на консоль значення новоствореної змінної.

Як бачите, функція print() має ще іншу властивість - вона може працювати зі


змінними. Ви знаєте, яким буде результат цього фрагмента? Виконайте код для
перевірки.

2.4.4 Як використовувати змінну


Ви можете використовувати стільки оголошень змінних, скільки вам потрібно для
досягнення вашої мети, наприклад:
Однак не можна використовувати змінну, якої не існує (іншими словами,
змінну, якій не було присвоєно значення).

Цей приклад призведе до помилки:

А знаєте чому? Ми спробували використати змінну з іменем Var, яка не має ніякого
значення (зверніть увагу: var і Var — це різні об'єкти, які не мають нічого спільного
з точки зору Python).

Пам'ятайте

Ви можете використовувати функцію print() для виведення рядків або змінних, а


також комбінувати текст і змінні, використовуючи оператор +. Наприклад:

Результат:

Версія Python: 3.8.5

2.4.5 Як призначити нове значення вже


наявній змінній
Як присвоїти нове значення змінній, яка вже існує? Таким же чином. Вам просто
потрібно використовувати знак рівності.
Знак рівності фактично є оператором присвоювання. Хоча це може здатися
дивним, оператор має простий синтаксис і однозначне тлумачення.

Він присвоює значення свого правого аргументу лівому, при цьому правий
аргумент може бути яким завгодно складним виразом, що включає в себе
літерали, оператори і вже визначені змінні.

Подивіться на код нижче:

Код надсилає на консоль два рядки:

У першому рядку фрагменту створюється нова змінна з іменем var і їй


присвоюється значення 1.

Оператор читається так: присвоїти значення 1 змінній з іменем var.

Можна сказати простіше: присвоїти 1 змінній var.

Дехто вважає за краще читати такий оператор так: var стає 1.

Третій рядок присвоює тій самій змінній нове значення, взяте з самої змінної та
додане до 1. Побачивши такий запис, математик, напевно, запротестував би ‒
жодне значення не може дорівнювати самому собі плюс одиниця. Це протиріччя.
Але Python розглядає знак = не як рівність, а як присвоєння значення.

Тож як прочитати такий запис у програмі?

Беремо поточне значення змінної var, додаємо до нього 1 і зберігаємо результат у


змінній var.

Фактично, значення змінної var було збільшено на одиницю, що не має нічого


спільного з порівнянням змінної з будь-яким значенням.

Ви знаєте, яким буде результат наступного фрагмента?

500 - чому? Ну, спочатку створюється змінна var і їй присвоюється значення 100. Потім
цій же змінній присвоюється нове значення: результат додавання 200 до 300, тобто 500.
2.4.6 Розв’язування простих математичних
задач
Ви вже повинні вміти складати короткі програми, що розв'язують прості
математичні задачіі, такі як теорема Піфагора:

Квадрат гіпотенузи дорівнює сумі квадратів катетів.

Наступний код обчислює довжину гіпотенузи (тобто найдовшої сторони


прямокутного трикутника, протилежної прямому куту) за допомогою теореми
Піфагора:

Примітка: для обчислення квадратного кореня необхідно скористатися


оператором **, щоб обчислити квадратний корінь як:

√ (x) = x (½)

та

c = √ a2 + b2
Чи можете ви передбачити результат?

c = 5.0

2.4.7 LAB Змінні


Сценарій

Ось коротка історія:

Одного разу в Яблуневій країні у Івана було три яблука, у Марії ‒ п'ять яблук, а у
Адама ‒ шість яблук. Всі вони були дуже щасливі і жили довго. Кінець історії.

Ваше завдання:

 створіть змінні: john, mary та adam;


 присвойте значення змінним. Значення повинні дорівнювати кількості плодів, якими
володіли John, Mary та Adam відповідно;
 зберігши числа у змінних, виведіть змінні в одному рядку, розділивши їх між собою
комою;
 тепер створіть нову змінну з ім'ям total_apples, що дорівнює сумі трьох
попередніх змінних.
 виведіть на консоль значення, що зберігається в total_apples;
 експериментуйте зі своїм кодом: створюйте нові змінні, присвоюйте їм різні
значення, виконуйте над ними різні арифметичні дії (наприклад, +, -, *, /, // тощо).
Спробуйте вивести рядок і ціле число разом в одному рядку,
наприклад, "Загальна кількість яблук:" і total_apples.

2.4.8 Розширені оператори присвоєння


Настав час для наступного набору операторів, які полегшують життя розробникам.
Дуже часто ми хочемо використовувати одну й ту саму змінну як праворуч, так і
ліворуч від оператора =.

Наприклад, якщо нам потрібно обчислити ряд послідовних значень степеня 2, ми


можемо використати такий фрагмент:

Ви можете використовувати такий вираз, якщо не можете заснути і намагаєтеся впоратися


з цим старими добрими методами:

Python пропонує вам скорочений спосіб запису таких операцій, які можуть бути записані
наступним чином:
Спробуємо надати загальну характеристику цим операціям. Якщо op є оператором
з двома аргументами (це дуже важлива умова), і оператор використовується в
наступному контексті...:

variable = variable op expression

... тоді його можна спростити і представити наступним чином:

variable op = expression

Подивіться на наведені нижче приклади. Переконайтеся, що ви зрозуміли їх усі.

Розширені оператори
Вираз
присвоєння

i = i + 2 * j i += 2 * j

var = var / 2 var /= 2

rem = rem % 10 rem %= 10

j = j - (i + var + rem) j -= (i + var + rem)

x = x ** 2 x **= 2

2.4.9 LAB Змінні ‒ простий конвертер


Сценарій

Милі та кілометри є одиницями довжини або відстані.

Враховуючи, що 1 миля дорівнює приблизно 1.61 кілометра, допишіть програму в


редакторі так, щоб вона виконала конвертацію:

 милі в кілометри;
 кілометри в милі.

Нічого не змінюйте в наявному коді. Впишіть свій код у місцях, позначених


символами ###. Протестуйте свою програму з даними, які ми вказали у
початковому коді.

Зверніть особливу увагу на те, що знаходиться всередині функції print().


Проаналізуйте, як ми надаємо функції декілька аргументів і як виводимо очікувані
дані.
Зверніть увагу, що деякі аргументи всередині функції print() є рядками
(наприклад, "миль"), тоді як деякі інші є змінними (наприклад, miles).

Порада

Але є ще одна цікава річ, яка там відбувається. Ви бачите іншу функцію всередині
функції print()? Це функція round(). Її робота полягає в тому, щоб округлити
виведений результат до заданої в дужках кількості знаків після крапки і повернути
число з рухомою крапкою (всередині функції round() можна знайти ім'я змінної,
кому та кількість знаків після крапки на яку ми розраховуємо). Незабаром ми
поговоримо про функції, тож не переживайте, якщо не все зрозуміло. Ми просто
хочемо розпалити вашу цікавість.

Після виконання лабораторної роботи відкрийте «Пісочницю» та


поекспериментуйте ще трохи. Спробуйте написати різні конвертери, наприклад,
конвертер USD в EUR, конвертер температури та ін. - дайте волю своїй уяві!
Спробуйте вивести результати, комбінуючи рядки та змінні. Спробуйте
скористатися функцією round() та поекспериментувати з нею, щоб округлити
результати до одного, двох або трьох знаків після крапки. Перевірте, що
станеться, якщо ви не вкажете жодної цифри. Не забувайте тестувати свої
програми.

Експериментуйте, робіть висновки та вчіться. Будь допитливим.

Очікуваний результат

7.38 миль це 11.88 кілометрів


12.25 кілометрів це 7.61 миль

2.4.10 LAB Оператори та вирази


Сценарій

Подивіться на код у редакторі: він зчитує значення float, поміщає його у змінну з
іменем x і виводить значення змінної з іменем y. Ваше завдання — завершити код,
щоб обчислити наступний вираз:

3x3 - 2x2 + 3x - 1

Результат слід присвоїти y.

Пам'ятайте, що класичний алгебраїчний запис любить опускати оператор


множення ‒ його потрібно використовувати явно. Зверніть увагу, як ми змінюємо
тип даних, щоб переконатися, що x має тип float.

Зберігайте свій код чистим і читабельним, а також тестуйте його, використовуючи


надані нами дані, кожного разу присвоюючи їх змінній x (шляхом жорсткого
кодування). Не впадайте у відчай через перші невдачі. Будьте наполегливими і
допитливими.

Зразок введення

x = 0
x = 1
x = -1

Зразок виведення

y = -1.0
y = 3.0
y = -9.0
2.4.11 ПІДСУМКИ РОЗДІЛУ
1. Змінна - це іменована ділянка, зарезервована для зберігання значень у
пам'яті. Змінна створюється або ініціалізується автоматично при першому
присвоєнні їй значення. (2.4.1)
2. Кожна змінна повинна мати унікальне ім’я – ідентифікатор. Ім'я легального
ідентифікатора має бути непорожньою послідовністю символів, починатися з
символу підкреслення (_) або літери та не може бути ключовим словом мови
Python. Після першого символу можуть йти підкреслення, літери та цифри.
Ідентифікатори в Python чутливі до регістру.

3. Python є динамічно типізованою мовою, а це означає, що вам не


потрібно оголошувати в ній змінні. (2.4.3) Для присвоєння значень змінним
можна використовувати простий оператор присвоєння у вигляді знаку рівності
(=), тобто var = 1.

4. Для модифікації значень, що присвоюються змінним, можна також


використовувати оператори з'єднань (розширені оператори присвоєння),
наприклад: var +=1, або var /=5 * 2.

5. Присвоїти нові значення вже створеним змінним можна, наприклад, за


допомогою оператора присвоєння або одного з операторів з'єднань:

Ви можете комбінувати текст і змінні за допомогою оператора + при використанні


функції print(), наприклад:
2.4.12 КОНТРОЛЬНА РОБОТА
Запитання 1: Який результат видає наступний код?

Відповідь: 3

Запитання 2 : Яким буде результат наступного фрагмента?

Відповідь: 11

Запитання 3 : Яким буде результат наступного фрагмента?

Відповідь: 1.0

2.5 Розділ 5 – Коментарі


Ласкаво просимо до п’ятого розділу, де ми поділимося з вами деякими коментарями з
приводу коментарів. Тут ви дізнаєтеся, чому важливо документувати свій код і чому варто
залишати коментарі. Ви також дізнаєтеся, як це зробити, і коли коментарі вважаються
хорошою практикою. Розпочнемо!

2.5.1 Коментарі – чому, коли і як?


Можливо, ви захочете вставити кілька слів, адресованих не Python, а людям,
зазвичай для того, щоб пояснити іншим читачам коду, як працюють трюки,
використані в коді, або значення змінних, і, врешті-решт, для того, щоб зберегти
інформацію про авторство і час написання програми.
Примітка, вставлена в програму, яка пропускається під час виконання,
називається коментарем.

Як залишити такий коментар у вихідному коді? Це потрібно зробити так, щоб


Python не інтерпретував його як частину коду.

Щоразу, коли Python зустрічає коментар у вашій програмі, він повністю прозорий –
з точки зору Python, це лише один пробіл (незалежно від того, якої довжини
реальний коментар).

У мові Python коментар — це фрагмент тексту, який починається зі


знаку # (хештег) і продовжується до кінця рядка.

Якщо вам потрібен коментар, який охоплює кілька рядків, ви повинні поставити
хештег перед усіма рядками. Так само як тут:

Хороші відповідальні розробники описують кожну важливу частину коду,


наприклад, пояснюючи роль змінних. Хоча слід зазначити, що найкращим
способом коментування змінних є їх однозначна назва.

Наприклад, якщо певна змінна призначена для зберігання площі деякого


унікального квадрата, то ім'я square_area, буде явно кращим, ніж aunt_jane.

Кажуть, що перша назва говорить сама за себе.

2.5.2 Коментування фрагментів коду


Коментарі можуть бути корисними ще в одному випадку ‒ ви можете
використовувати їх для позначення частини коду, яка в даний момент з якихось
причин не потрібна. Подивіться на приклад нижче, якщо
ви розкоментуєте виділений рядок, це вплине на результати роботи коду:

Це часто робиться під час тестування програми, щоб ізолювати місце, де може
бути прихована помилка.

Порада
Якщо ви хочете швидко закоментувати або розкоментувати кілька рядків коду,
виберіть рядок (рядки), які ви хочете закоментувати, і скористайтеся наступною
комбінацією клавіш: CTRL + / (Windows) або CMD + / (Mac OS). Це дуже корисна
порада, чи не так? Тепер поекспериментуйте з кодом в редакторі.

2.5.3 LAB Коментарі


Сценарій

Код в редакторі містить коментарі. Спробуйте покращити його: додайте або


видаліть коментарі там, де це доречно (так, іноді видалення коментаря може
зробити код більш читабельним), а також змініть імена змінних там, де на вашу
думку, це покращить розуміння коду.

Примітка

Коментарі дуже важливі. Вони використовуються не тільки для полегшення


розуміння ваших програм, але й для відключення тих фрагментів коду, які в
даний момент не потрібні (наприклад, коли вам потрібно тестувати одні частини
коду, а інші ігнорувати). Хороші програмісти описують кожен важливий фрагмент
коду, а змінним дають самокоментуючі імена, оскільки іноді просто набагато
краще залишити інформацію в коді.

Рекомендується використовувати зрозумілі імена змінних, також іноді


краще розділити код на окремі програмні частини (наприклад, функції). У деяких
ситуаціях доцільно більш чітко описати етапи розрахунків.

І ще: може статися так, що коментар містить неправдиву або некоректну


інформацію ‒ ніколи не робіть цього навмисно!
2.5.4 ПІДСУМКИ РОЗДІЛУ
1. За допомогою коментарів можна залишити додаткову інформацію в коді. Вони
опускаються під час виконання. Додаткова інформація, що знаходиться у
вихідному коді, адресована до людини, яка його читає. У мові Python коментар ‒
це фрагмент тексту, який починається з символу #. Коментар продовжується до
кінця рядка.

2. Якщо ви хочете розмістити коментар, який займає кілька рядків, вам потрібно
поставити # перед усіма ними. Крім того, за допомогою коментування можна
відмітити непотрібний на даний момент фрагмент коду (див. останній рядок
фрагменту нижче):

3. Коли це можливо і доцільно, слід давати само-коментовані імена змінним,


наприклад, якщо у вас є дві змінні: одна для збереження довжини, інша для
збереження ширини, то імена змінних length і width будуть більш доречними,
ніж myvar1 і myvar2.

4. Це важливо: використовувати коментарі, для того щоб зробити програми більш


зрозумілими; а також використовувати в коді читабельні та змістовні імена
змінних. Однак не менш важливо: не використовувати назви змінних, які
можуть заплутати; і не залишати коментарі, які містять невірну або некоректну
інформацію!

5. Коментарі можуть бути важливими, коли ви читаєте власний код через деякий
час (можете нам повірити, розробники забувають, що робить їх власний код),
або коли інші читають ваш код (вони можуть допомогти їм швидше зрозуміти,
що роблять ваші програми і як вони це роблять).

2.5.5 КОНТРОЛЬНА РОБОТА


Запитання 1 : Яким буде результат наступного фрагмента?
Запитання 2: Що станеться при виконанні наступного коду?

2.6 Розділ 6 – Взаємодія з користувачем


В цьому розділі ви навчитесь спілкуватись з комп'ютером: познайомитесь з функцією
input(), виконаєте перетворення типів, навчитесь використовувати рядкові оператори.

2.6.1 Функція input()


Зараз ми познайомимо вас з абсолютно новою функцією, яка, здається, є
дзеркальним відображенням старої доброї функції print().

Чому? Отже, print() відправляє дані на консоль.

Нова функція отримує з неї дані.

print() не має результату, який можна було б використати. Смисл нової функції
полягає в тому, щоб повертати результат, який можна буде використати в
подальшому.

Функція називається input(). Назва функції говорить сама за себе.

Функція input() здатна зчитувати дані, що вводяться користувачем, та передавати


ці дані у програму, що виконується.

Програма може маніпулювати даними, роблячи код по-справжньому


інтерактивним.

Практично всі програми зчитують і обробляють дані. Програма, яка не отримує


вхідних даних від користувача, називається глухою програмою.
Подивіться на наш приклад:

В ньому продемонстровано дуже простий варіант використання функції input() .

Примітка:

 Програма пропонує користувачу ввести деякі дані з консолі


(найімовірніше за допомогою клавіатури, хоча можливе також введення
даних за допомогою голосу або зображень);
 функція input() викликається без аргументів (це найпростіший спосіб
використання функції); функція переведе консоль в режим введення; ви
побачите миготливий курсор і зможете здійснити натискання клавіш,
завершивши введення натисканням клавіші Enter; всі введені дані
будуть передані у вашу програму за результатом виконання функції;
 примітка: результат потрібно присвоїти змінній; це важливо – пропуск цього
кроку призведе до втрати введених даних;
 потім за допомогою функції print() виводимо отримані дані з деякими
додатковими коментарями.

2.6.2 Функція input() з аргументом


Функція input() може робити більше: вона може видавати запит користувачу без
допомоги функції print().

Ми трохи змінили наш приклад, подивіться на код:

Примітка:

 функція input() викликається з одним аргументом ‒ це рядок, що містить


повідомлення;
 повідомлення буде виведено на консоль до того, як користувачу буде
надана можливість ввести будь-що;
 після чого функція input() виконає свою задачу.

Такий варіант виклику input() спрощує код та робить його більш зрозумілим.

2.6.3 Результат виконання функції input()


Ми вже говорили про це, але треба ще раз підкреслити ‒ результатом
функції input() є рядок.
Рядок містить всі символи, які користувач ввів з клавіатури. Це не ціле число і не
число з рухомою крапкою.

Це означає, що ви не можете використовувати його як аргумент будь-якої


арифметичної операції, наприклад, ви не можете використовувати ці дані, щоб
звести їх у квадрат, поділити на будь-що або поділити на них що-небудь.

2.6.4 Функція input() – заборонені операції


Подивіться на код у редакторі. Запустіть його, введіть будь-яке число і
натисніть Enter.

Що відбувається? Python повинен був вивести наступний результат:

Останній рядок речення все пояснює ‒ ви намагались застосувати


оператор ** до 'str' (рядка) у комбінації з 'float'.

Це заборонено.

Це має бути очевидно ‒ чи можете ви передбачити значення "бути чи не бути" ,


піднесене до степеня 2?

Ми не можемо. Python теж не може.

Ми зайшли в глухий кут? Чи є вирішення цієї проблеми? Звичайно є.

2.6.5 Приведення (перетворення) типів даних


Python пропонує дві прості функції для визначення типу даних і вирішення цієї
проблеми – ось вони: int() і float().
Їхні назви говорять самі за себе:

 функція int() отримує один аргумент (наприклад, рядок: int(string)) і


намагається перетворити його в ціле число; якщо їй це не вдається, то вся
програма завершиться помилкою (для цієї ситуації є обхідний шлях, але про
нього ми поговоримо пізніше);
 функція float() отримує один аргумент (наприклад, рядок: float(string)) і
намагається перетворити його у число з рухомою крапкою (решта ‒ те
саме).

Це дуже просто і дуже ефективно. Крім того, можна викликати будь-яку з функцій,
передавши їм безпосередньо результати input(). Немає необхідності
використовувати будь-яку змінну як проміжне сховище.

Ми реалізували задумане в редакторі ‒ подивіться на код.

Бачите, як введений користувачем рядок потрапляє з input() в print()?

Спробуйте виконати змінений код. Не забудьте ввести коректне число.

Перевірте різні значення, маленькі та великі, від'ємні та додатні. Нуль ‒ також


непоганий варіант.

2.6.6 Докладніше про input() і приведення


типів даних
Функціонал, що складається з тріо input()-int()-float(), відкриває нам багато нових
можливостей.

Згодом ви зможете писати повноцінні програми, приймаючи дані у форматі чисел,


обробляючи їх та виводячи на екран результати.

Звичайно, ці програми будуть дуже примітивними і не дуже зручними, оскільки


вони не можуть приймати рішення, а отже, не здатні по-різному реагувати на різні
ситуації.

Однак насправді це не проблема; незабаром ми покажемо вам, як це подолати.

Наш наступний приклад посилається до попередньої програми знаходження


довжини гіпотенузи. Давайте запустимо його і зробимо його здатним отримувати
довжини катетів з консолі.
Погляньте на вікно редактора – ось так воно виглядає зараз:

Програма запитує у користувача довжини обох катетів, обчислює гіпотенузу і


виводить результат. Запустіть його і спробуйте ввести від'ємні значення.

Програма, на жаль, не реагує на цю очевидну помилку. Давайте поки що


проігноруємо цю слабкість. Ми до цього ще повернемося.

Зверніть увагу на програму в редакторі, змінна hypo використовується тільки з


однією метою ‒ для збереження обчисленого значення до виконання наступного
рядка коду.

Оскільки функція print() отримує в якості аргументу вираз, то змінну можна


видалити з коду.

Ось так:

2.6.7 Оператори роботи з рядками


Настав час повернутися до арифметичних операторів: + і *.

Ми хочемо показати, що у них є і друга функція. Вони вміють робити щось більше,
ніж просто додавати і множити.

Ми бачили їх в дії, коли їх аргументами були числа (числа з рухомою крапкою або
цілі, це не має значення).
Зараз ми покажемо вам, що вони можуть працювати і з рядками, хоча і в дуже
специфічний спосіб.

Знак + (плюс) при застосуванні до двох рядків стає оператором


склеювання (конкатенації):

Він просто конкатенує (з'єднує) два рядки в один. Звичайно, як і його


арифметичний побратим, він може неодноразово використовуватися в одному
виразі, і в такому випадку поводиться за правилом лівої асоціативності.

На відміну від свого арифметичного побратима, оператор конкатенації не є


комутативним, тобто "ab" + "ba" — це не те ж саме, що "ba" + "ab".

Не забувайте: якщо ви хочете, щоб знак + був конкатенатором, а не суматором,


ви повинні переконатися, що обидва його аргументи є рядками.

Тут не можна змішувати типи.

Ця проста програма демонструє другу функцію використання знаку +:

Примітка: використання + для склеювання рядків дозволяє побудувати виведення


більш точно, ніж за допомогою звичайної функції print(), навіть якщо вона
доповнена аргументами з ключовими словами end= і sep=.

Запустіть код і перевірте, чи відповідає результат вашим очікуванням.

Реплікація
Знак * (зірочка) при застосуванні до рядка і числа (або числа і рядка, оскільки їх
можна міняти місцями) стає оператором реплікації :
Він повторює рядок стільки ж разів, скільки задається числом.

Наприклад:

 "James" * 3 дає "JamesJamesJames"


 3 * "an" дає "ananan"
 5 * "2" (or "2" * 5) дає "22222" (не 10!)

Пам'ятайте

Число менше або рівне нулю виводить порожній рядок.

Ця проста програма «малює» прямокутник, використовуючи старий оператор ( + ) у новій


ролі:

Зверніть увагу, як ми використали дужки у другому рядку коду.

2.6.8 Ще раз про перетворення типу даних

str()

Ви вже знаєте, як використовувати функції int() та float() для перетворення рядка в


число.

Цей тип перетворення не є вулицею з одностороннім рухом. Також


можна перетворити число в рядок, що набагато простіше і безпечніше ‒ така
можливість є завжди.
Функція, яка вміє це робити, називається str():

Насправді, він може набагато більше, ніж просто перетворювати числа в рядки, але це
може трохи почекати.

Знову прямокутний трикутник

І знову наша програма «прямокутний трикутник»:

Ми трохи змінили її, щоб показати вам, як працює функція str(). Завдяки цьому ми
можемо передати у функцію print() весь результат одним рядком,
відмовившись від ком.

Ви зробили серйозні кроки на шляху до програмування мовою Python.

Ви вже знаєте основні типи даних і набір основних операторів. Ви знаєте, як


організувати виведення і як отримати дані від користувача. Це дуже міцне
підґрунтя для Модуля 3. Але перш ніж ми перейдемо до наступного модуля,
давайте виконаємо кілька завдань і повторимо все, що ви вивчили в цьому розділі.

2.6.9 LAB Просте введення та виведення


Сценарій

Ваше завдання полягає у тому, щоб доповнити код таким чином, аби оцінити
результати виконання чотирьох основних арифметичних дій.

Результати мають бути виведені на консоль.

Можливо, ви не зможете захистити код від користувача, який захоче поділити на


нуль. Нічого страшного, поки не хвилюйтеся про це.

Протестуйте свій код – чи дає він очікувані результати?

Ми не наводитимемо жодних результатів випробувань - це було б занадто просто.


2.6.10 LAB Оператори та вирази

Сценарій

Ваше завдання — завершити код, щоб обчислити наступний вираз:

Отриманий результат присвоїти y. Будьте уважні ‒ слідкуйте за операторами та


пам'ятайте про їхні пріоритети. Не вагаючись використовуйте стільки дужок,
скільки вам потрібно.

Ви можете використовувати додаткові змінні, щоб скоротити вираз (але це не


обов’язково). Ретельно тестуйте свій код.

Тестові Дані
2.6.11 LAB Оператори та вирази - 2

Сценарій

Ваше завдання полягає в тому, щоб підготувати простий код, який зможе
обчислити час закінчення відрізку часу, заданого у вигляді кількості хвилин (він
може бути як завгодно великим). Час початку подається у вигляді годин (0..23) і
хвилин (0..59). Результат має бути виведений на консоль.

Наприклад, якщо захід розпочався о 12:17 і триває 59 хвилин, то він завершиться


о 13:16.

Не турбуйтеся про будь-яку недосконалість вашого коду ‒ нічого страшного, якщо


він приймає невірний час ‒ головне, щоб код видавав правильні результати для
коректних вхідних даних.

Уважно перевірте свій код. Підказка: використання оператора % може бути ключем
до успіху.

Тестові Дані
2.6.12 ПІДСУМКИ РОЗДІЛУ
1. Функція print() відправляє дані на консоль, а функція input() отримує дані з
консолі.

2. Функція input() має необов'язковий параметр: рядок підказки. Це дозволяє


написати повідомлення перед введенням користувача, наприклад:

3. При зверненні до функції input() виконання програми зупиняється, символ


підказки продовжує мигати (він спонукає користувача до активних дій при переході
консолі в режим вводу) до тих пір, поки користувач не виконає введення та/або не
натисне на клавішу Enter.

Примітка

Ви можете протестувати можливості функції input() у повному обсязі локально на


своєму комп'ютері. З метою оптимізації ресурсів ми обмежили максимальний час
виконання програми в Edube до декількох секунд. Перейдіть до Пісочниці,
скопіюйте та вставте наведений вище фрагмент, виконайте програму і нічого не
робіть ‒ просто почекайте кілька секунд, щоб побачити, що станеться. Ваша
програма повинна автоматично зупинитися через короткий проміжок часу. А тепер
відкрийте IDLE і запустіть там ту ж саму програму ‒ відчуваєте різницю?

Порада: вищезгадана особливість функції input() може бути використана для того,
щоб запропонувати користувачу завершити програму. Подивіться на код нижче:

4. Результатом функції input() є рядок. Додавати рядки один до одного можна з


допомогою оператора склеювання (+). Перегляньте цей код:

5. Також можна множити (* — реплікація) рядки, наприклад:

2.6.13 КОНТРОЛЬНА РОБОТА

Запитання 1: Яким буде результат наступного фрагмента?

Відповідь: 55

Запитання 2: Який очікуваний результат від наступного фрагменту?

Відповідь: <class 'str'>


2.7 Завершення Модуля 2
ТЕСТОВЕ ЗАВДАННЯ

МОДУЛЬ 2 ТЕСТ
Чудово! Ви досягли кінця Модуля 2 і завершили важливий етап у вашому вивченні
програмування на Python. Нижче наведено короткий огляд тем, які було
розглянуто в Модулі 2:

 як написати та запустити прості програми на Python;


 що таке літерали, оператори та вирази Python;
 що таке змінні та якими правилами вони керуються;
 як виконувати основні операції введення та виведення.

Тепер ви готові скласти тест з модуля, який допоможе оцінити отримані вами
навички.

Наступні тестові запитання базуються на знаннях, які ви щойно отримали. Вам


пропонується двадцять запитань. Щоб скласти завдання вам потрібно набрати не
менше 70%.

Удачі!
3.1 Розділ 1 – Прийняття рішень у Python
Ласкаво просимо до третього модуля! У першому розділі ми дізнаємося про умовні
оператори та як їх використовувати для прийняття рішень у Python.

3.1.1 Питання та відповіді


Програміст пише програму, а програма задає запитання.

Комп'ютер виконує програму і видає відповіді. Програма повинна


вміти реагувати відповідно до отриманих відповідей.

На щастя, комп'ютери знають лише два варіанти відповідей:

 так, це істина;
 ні, це хибність.

Ви ніколи не отримаєте відповідь на кшталт Дайте мені подумати...., Я не знаю


або Можливо так, але Я не знаю напевно.

Для того, щоб задавати запитання, Python пропонує набір дуже особливих
операторів. Розглянемо їх один за одним, ілюструючи їхню дію на простих
прикладах.

3.1.2 Порівняння: оператор рівності


Запитання: чи рівні дві величини?

Щоб поставити це запитання, використовується оператор == (дорівнює дорівнює).

Не забувайте про цю важливу відмінність:

 = це оператор присвоєння, наприклад, a = b присвоює a значення b;


 == запитує, чи рівні ці величини? Тобто a == b порівнює a та b.

Це бінарний оператор з лівою асоціативністю. Він потребує двох аргументів


і перевіряє їх рівність.

3.1.3 Вправи
Тепер давайте поставимо кілька запитань. Спробуйте вгадати відповіді.

Запитання №1: Який результат наступного порівняння?

2 == 2

True - звичайно, 2 дорівнює 2. Python відповість True (запам'ятайте цю пару


попередньо визначених літералів, True і False - це також ключові слова Python).

Запитання №2: Який результат наступного порівняння?

2 == 2.

Це питання не таке просте, як перше. На щастя, Python може перетворити ціле


число в його дійсний еквівалент, і, отже, відповідь така: True.

Запитання №3: Який результат наступного порівняння?

1 == 2

Це повинно бути легко. Відповідь буде (вірніше, завжди) False.

You might also like