Лекція 30. Типи даних. Функції вводу-виводу Python. Умовні оператори та цикли в Python
Python відноситься до мов програмування з динамічною типізацією. Це означає, що змінні не мають наперед визначеного типу даних, а набувають його в момент присвоєння значення.
До основних типів даних мови Phyton відносять наступні: цілі числа (int) довільної довжини (4, 67, -145, 0); дійсні числа (float) з роздільником у вигляді точки (5.6, 3.87845, -12.0004334); текстові рядки (str) – набір символів, заключений в одинарні чи подвійні лапки ('Деякий текст', "ще деякий текст"); логічний тип (bool), який приймає всього два значення – True або False; комплексні числа (complex) – числа виду 4 + 2j, де j = √-1.
При виконанні операцій над змінними з різними типами даних їх переведення до одного типу даних відбувається автоматично, де це можливо (наприклад, при додаванні цілого та дійсного числа, ціле число буде переведено в дійсне). Однак, часто виникає необхідність зробити це явно, скориставшись для цього відповідними функціями int, float, str, bool, які перетворюють змінні з інших типів даних у цілочисельний, дійсний, текстовий чи логічний тип відповідно, якщо це можливо.
Імена змінних в Python можуть складатися з алфавітних символів, цифр та знаку підкреслення, з дотриманням певних правил:
- Бажано давати змінним імена, що говорять про призначення даних, на які вони посилаються.
- Ім'я змінної не повинно збігатися з командами мови (зарезервованими ключовими словами).
- Ім'я змінної має починатися з букви або символу підкреслення.
Логічні оператори та умовний оператор if
Як і в інших мовах програмування, в Python в якості умовних операторів використовуються спеціальні знаки, подібні до тих, які використовуються в математичних виразах: > (більше), < (менше), >= (більше або дорівнює), <= (менше або дорівнює), а також знак рівності (==) та нерівності (!=).
На практиці доволі часто використовуються більш складні логічні вирази. Може знадобитися отримати відповіді "Так" або "Ні" в залежності від результату виконання двох простих виразів. Наприклад, "змінна new містить значення більше 12 і менше 20" і т.п.
У таких випадках використовуються спеціальні оператори, що об'єднують два і більше простих логічних вирази. Широко використовуються два способи об'єднання: через, так звані, логічні І (and) і АБО (or).
Щоб отримати істину (True) при використанні оператора and, необхідно, щоб результати обох простих виразів, які пов'язує цей оператор, були істинними. Якщо хоча б в одному випадку результатом буде False (неправда), то і весь складний вираз буде хибним.
Щоб отримати істину (True) при використанні оператора or, необхідно, щоб результати хоча б одного простого виразу, що входить до складу складного, був істинним. У разі використання оператора or складний вираз стає хибним лише тоді, коли хибні всі прості вирази, що входять до нього:
x > 3 and x < 10
x < 3 or x > 10
В деяких випадках, для оператора and можливий дещо спрощений формат запису:
3 < x < 10
Для реалізації розгалужень, як і в іншим мовах програмування, використовується умовний оператор if:
if умова:
тіло
Приклад реалізації:
if a <100: # якщо значення змінної a менше 100
c = a ** b # піднести значення змінної a до степеню b
Перший рядок конструкції if – це заголовок, в якому перевіряється умова виконання рядків коду після двокрапки (тіла конструкції).
Python – це мова програмування з доволі зрозумілим кодом, що легко читається. Це пов'язано з тим, що в ньому було зведено до мінімуму допоміжні елементи (дужки, крапка з комою), а для поділу синтаксичних конструкцій використовуються відступи від початку рядка. З огляду на це, в конструкції if код, який виконується при дотриманні умови, повинен обов'язково мати відступ вправо. Решта коду (основна програма) повинна мати той же відступ, що і слово if (рис. 30.1). Зазвичай відступ робиться за допомогою клавіші Tab.
Рисунок 30.1 – Форматування коду в мові Python
Однак, логіка програми зазвичай буває складнішою, ніж вибір одного з двох розгалужень. Наприклад, в залежності від значення тієї чи іншої змінної, може виконуватися одна з трьох (або більше) гілок програми.
Зазвичай таку задачу можна вирішити за допомогою вкладених конструкцій if-else. В мові Python, передбачено спеціальне розширення інструкції if, що дозволяє направити потік виконання програми по одному з розгалужень. Дана розширена інструкція, крім необов'язкової частини else, містить ряд рогалужень elif (скорочення від "else if" – "ще якщо"). Частин elif може бути як завгодно багато (в межах розумного, звичайно).
На відміну від використання кількох одиночних інструкцій if, інструкція if-elifelse припиняє перегляд наступних розгалужень, як тільки логічний вираз в поточному розгалуженні поверне значення true. Наприклад, якщо вираз при if (перше розгалуження) буде істинним, то після виконання вкладеного блоку виразів, програма повернеться до основного коду. Приклад використання:
if x > 0:
print(1)
elif x < 0:
print(-1)
else:
print(0)
Цикли
Цикли – це інструкції, які виконують одну й ту ж послідовність дій, поки діє задана умова.
У комп'ютерних програмах поряд з інструкціями розгалуження також існують інструкції циклів (повторення дії). Якби інструкцій циклу не існувало, довелося б багато разів вставляти в програму один і той же код поспіль стільки раз, скільки потрібно виконати однакову послідовність дій.
Універсальним організатором циклу в мові програмування Python (як і в багатьох інших мовах) є конструкція while. Конструкцію while на мові Python можна описати наступним чином:
while умова:
тіло циклу
зміна параметрів
Зміна одного з параметрів умови потрібна обов’язково, оскільки якщо цього не зробити, умова буде істинною завжди, а отже – цикл не завершиться.
Одна з найпростіших реалізацій циклу наведено далі:
i = 0
while i < 10
print(i)
i = i + 1
Змінна i використовується в якості лічильника та набуває початкового значення (i = 0) до виконання циклу. Умовою виходу з циклу є досягнення змінною i значення рівного або більшого 10. В тілі циклу здійснюється виведення поточного значення змінної i. Зміною параметру умови в даному випадку є збільшення значення змінної i на одиницю.
Введення даних з клавіатури
Комп'ютерні програми обробляють дані, виконуючи над ними операції, які визначив програміст, і які були обумовлені поставленими завданнями. Дані в програму можна «закласти» в процесі її розробки. Однак така програма завжди буде обробляти одні й ті ж дані і повертати один і той же результат. Найчастіше потрібно зовсім інше – програма повинна обробляти різні дані, які надходять в неї з зовнішніх джерел. В якості останніх можуть виступати файли або введення з клавіатури. Коли інформація вводиться з клавіатури, а результати виводяться на екран монітора, можна говорити про інтерактивний режим роботи програми. Для виведення даних в мові програмування Python використовується функція print(), як це вже було описано раніше.
Введення даних з клавіатури в програму (починаючи з версії Python 3.0) здійснюється за допомогою функції input(). Якщо цю функцію виконується, то потік виконання програми зупиняється в очікуванні даних, які користувач повинен ввести за допомогою клавіатури. Після введення даних і натискання Enter, функція input() завершує своє виконання і повертає результат, який є рядком символів, введених користувачем.
Коли виконувана програма пропонує користувачеві що-небудь ввести, то користувач може не зрозуміти, що від нього хочуть. З цією метою функція input() може приймати необов'язковий аргумент-запрошення рядкового типу; при виконанні функції повідомлення буде з'являтися на екрані і інформувати користувача про запитувані дані:
n = input("Введіть ціле число: ")