Операції та застосування 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) # 5
max(<числа>)
— максимальне значення серез чисел;max(5, 10, 25) # 25
abs(<число>)
— абсолютне значення, тобто модуль числа;abs(-7.2) # 7.2
pow(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-символ\a
lert — програвання звуку “біп” або “дінь”, якщо підтримується; здебільшого не працює на сучасних пристроях\b
ackspace — стирає попередній символ\f
orm feed — нова сторінка\n
ew line — новий рядок\r
eturn carriage — повернення на початок рядка\t
ab — відступ\v
ertical 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 | Форматування | див. нижче |
Обов’язково перегляньте другу частину для продовження інформації про текст!