Операції та застосування Python, 1 частина
За шість попередніх розділів у жодному не було розказано про оператори та часто використовувані функції та класи стандартної бібліотеки, тому що я вирішив виділити на це окремий розділ. Тут Ви навчитеся практичним застосуванням мови Python для обчислення повсякденних задач та автоматизації процесів.
Python — це також скриптова мова програмування. Це означає, що за допомогою неї можна автоматизувати виконання деяких процесів, які б доводилося робити вручну. Найпростіший приклад: якщо часто виникає необхідність рахувати площу кругів, навіщо кожен раз вручну множити за формулою числа, якщо можна написати цю формулу у Python і просто вводити радіус кругів, щоб отримувати результати? ;)
Математика
Одним із базових застосувань програмування, задля якого й винайшли комп’ютери є обчислення математичних задач різної складності. У Пайтоні існують 7 базових операторів для арифметичних дій над цілими та дійсними числами. Присвоєння, що доповнює (augmented assignment) існує і тут: +=, /= тощо; а от інкрементів та декрементів немає.
| Математика | Python | Опис |
|---|---|---|
| a+b | a+b | Додавання чисел |
| a-b | a-b | Віднімання чисел |
| a×b | a*b | Множення чисел |
| a÷b | a/b | Ділення чисел |
| a mod b | a%b | Остача від ділення |
| aᵇ | a**b | Піднесення до степеня |
| ⌊a÷b⌋ | a//b | Цілочисельне ділення |
Цілочисельне ділення при діленні двох чисел відкидає дробову частину і залишає лише ціле число: 20 // 3 == 6 бо ⅔ відкидаються. Окрім того, у мові є деякі вбудовані функції, які одразу можна використовувати:
min(<числа>)— мінімальне значення серез чисел;min(5, 10, 25) # 5max(<числа>)— максимальне значення серез чисел;max(5, 10, 25) # 25abs(<число>)— абсолютне значення, тобто модуль числа;abs(-7.2) # 7.2pow(a, b)— аналогічно доa**b
І це не все: стандартна бібліотека включає модуль (набір функцій, класів, констант) math. Підключити цей модуль можна інструкцією import math. Модулі схожі на простори імен у C++ або ж пакети у Java. Цей модуль містить багато функцій та констант; основні наведені нижче.
sin(a),cos(a),tan(a)— синус, косинус, тангенс числа у радіанах; котангенс можна знайти як1/math.tan(a)asin(a),acos(a),atan(a)— арксинус, арккосинус, арктангенс числа у радіанахatan2(y, x)— арктангенс y/x у радіанах; корисно для кута між векторами (або прямими)round(a, [знаків після коми]),ceil(a),floor(a)— округлення, округлення вгору, округлення внизdegrees(a),radians(a)— перевести у градуси з радіанів, навпакиcomb(n, k),perm(n, k)— комбінацій вибору k з n предметів, перестановокfactorial(a)— факторіал числаsqrt(a)— квадратний корінь числа-
log(a, [основа]),log10(a),log2(a)— логарифм натуральний або за основою, за основою 10, за основою 2 e— число Ойлераinf— “нескінченність”nan— “не число”pi— число Піtau— 2 × число Пі (число Тау)
У випадку піключення за допомогою import math необхідно писати перед кожною функцією і константою math.. Існує й інший спосіб: імпортувати необхідні функції і константи у поточну область видимості інструкцією видом from math import <перелік>, тоді писати модуль не потрібно. * імпортує все, що є у модулі, однак це не рекомендується робити для уникнення засмічення програми не використовуваними речами. Нижче показані всі три варіанти коду з використанням модуля math.
import math
print( math.sqrt(9) )
from math import sqrt
print( sqrt(9) )
from math import *
print( sqrt(9) )
Логіка
Побітові оператори у більшості мов однакові, і Пайтон — не виключення: &, |, ^, ~, <<, >>. А от щодо логічних, то вони запусуються словами.
| Java | Python | Опис |
|---|---|---|
| a && b | a and b | “І” |
| a || b | a or b | “АБО” |
| !a | not a | “НЕ” |
Булеві значення у Python можна вважати числовими, як у C.
True == 1 # True
False == 0 # True
True + False / True # 1 + 0 / 1 == 1(.0)
Текст
Якщо у Вас виникло якось питання, чому рядки можна писати у одинарних і у подвійних лапках, а не лише в одному єдиному стилі, то моя відповідь: не знаю. Історично так склалося, що Python розцінює обидва стилі однаково на рівні семантики. Тим не менш, є загальні рекомендації писати здебільшого у подвійних лапках задля можливості використання апострофів. Одинарні лапки корисні для односимвольних рядків.
Окрім таких, ще є потрійні лапки (""" або '''), які використовують для багаторядкових рядків (звучить дивно, згоден), коментарів, документування коду. Також є особливий вид “сирих рядків” (raw strings), які виглядають так: r'рядок' або r"рядок". Вони сприймають усі символи буквально, тобто print( r'\n' ) виведе не новий рядок, а \n як є.
Звичайні рядки підтримують такі екранування — особливе сприйняття та заміну деяких послідовностей символів:
\'— одинарні лапки, наприклад:'слово з а\'острофом'\"— подвійні лапки\\— сам символ\\0— null-символ\alert — програвання звуку “біп” або “дінь”, якщо підтримується; здебільшого не працює на сучасних пристроях\backspace — стирає попередній символ\form feed — нова сторінка\new line — новий рядок\return carriage — повернення на початок рядка\tab — відступ\vertical tab — вертикальний відступ; не всюди працює\<число>— символ у вісімковій системі числення\x<число>— символ у шістнадцятковій системі числення\u<число>— Unicode символ (максимум FFFF)
Існують такі оператори з рядками:
| Оператор | Опис | Приклад |
|---|---|---|
| a+b | Конкатенація (з’єднання) | "Hello " + "world!" |
| a*n | Повторення — копіює рядок n разів | "Spam" * 3 |
| a[n] | Символ на n-ій позиції | "Python"[2] |
| a[n1:n2] | Зріз — отримати підрядок з n1-го до n2-го символів | "Ivypool"[0:3] |
| b in a | Перевірка, чи є символ чи підрядок у рядку | "snow" in "snowflake" |
| b not in a | Перевірка, чи немає підрядка у рядку | 'w' not in "star" |
| a % f | Форматування | див. нижче |
Обов’язково перегляньте другу частину для продовження інформації про текст!