Вбудовані функції та модуль math

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

Використання вбудованих функцій

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

Функція abs()

Функція abs() повертає абсолютне значення (модуль) числа, тобто саме число без знака. Наприклад, абсолютне значення 10 дорівнює 10, а абсолютне значення -10 теж дорівнює 10. При виконанні функції abs() потрібно передати число або змінну таким чином:

>>> abs(10)
10
>>> abs(-10)
10

Функція dir()

Функція dir() видає інформацію про будь-яке передане їй значення. По суті, вона повідомляє, які функції можна використовувати з цим значенням, перераховуючи їх імена в алфавітному порядку. Наприклад, щоб отримати імена функцій, які можна використовувати зі змінною типу int, введіть:

 >>> a = 5

>>> dir(a)
[
'__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

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

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

Функція help()

Скориставшись функцією help() можна отримати коротку довідку по будь-якій функції. Наприклад, довідка для функції abs:

>>> help(abs)
Help on built-
in function abs in module builtins:

abs(x, /)
    Return the absolute value of the argument.

Функція eval()

Функція eval() приймає в якості аргументу рядок і виконує його, вважаючи, що це код на мові Python. Наприклад, в результаті виклику eval('print("Hello world!")')Буде виконана команда print("Hello world!"). Але, функція eval працює тільки з простими виразами. Її часто використовують, щоб обробити введення користувача як Python-вираз. Наприклад, можна написати просту програму-калькулятор, яка запитує математичний вираз і за допомогою eval обчислює результат. Введений користувачем вираз зчитується як рядок, і для його обчислення треба перетворити рядок в числа і оператори. Функція eval зробить це автоматично:

>>> myCalculation = input("Введіть математичний вираз:\n")
Введіть математичний вираз:
25*45-(89+23)/12
>>> eval(myCalculation)
1115.6666666666667

Ми використали input для зчитування введеного користувачем рядка і його збереження в змінній myCalculation. Як вираз , було введено 25*45-(89+23)/12 . Потім викликали функцію eval, яка обчислила та вивела результат: 1115.6666666666667.

Функція len()

Функція len() повертає «довжину» об'єкта, тобто кількість елементів в ньому. Якщо це рядок, функція поверне кількість символів. Наприклад, так можна дізнатися довжину рядка «Любіть Україну, як сонце любіть…»:

>>> txt = "Любіть Україну, як сонце любіть…"
>>> len(txt)
32

Функції max() і min()

Функція max() повертає найбільший елемент списку, кортежу,  рядка або послідовності чисел. Наприклад, для послідовності чисел:

>>> max(12, 154, -254, 458, 0, 18)
458

Можна також знайти найбільший символ в рядку:

>>> max("Інформатика")

'ф' 

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

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

>>> min(12, 154, -254, 458, 0, 18)
-
254

Математичні функції (модуль math)

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

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

>>> import math

Дана команда імпортує модуль math.

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

>>> import math
>>> dir(math)

['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc'] 

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

Більш детально основні функції модуля math описані в таблиці:

Назва функції

Опис

Функції в бібліотеці math

ceil(x)

Повертає округлене x як найближче ціле значення типу int, яке дорівнює або перевищує x (округлення "вгору").

fabs(x)

Повертає абсолютне значення (модуль) числа x. В Python є вбудована функція abs, але вона повертає модуль числа з тим же типом, що число, тут же завжди float abs (fabs).

factorial(x)        

Повертає факторіал цілого числа x, якщо x не ціле виникає виключення ValueError.

floor(x)               

На противагу ceil (x) повертає округлене x як найближче ціле значення типу int, менше або рівне x (округлення "вниз").

fsum(iterable)

Повертає float суму від числових елементів об'єкта iterable.

isinf(x)

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

isnan(x)              

Перевіряє, чи є float об'єкт x об'єктом NaN (not a number).

modf(x)              

Повертає дробову і цілу частину float числа. Обидва результати зберігають знак вихідного числа x і представлені типом float.

trunc(x)              

Повертає цілу частину числа x у вигляді int об'єкта.

Степеневі та логарифмічні функції

exp(x) 

Повертає e**x.

log(x[, base])   

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

log10(x)              

Повертає десятковий логарифм x.

pow(x, y)           

Повертає x в ступені y. На відміну від операції ** перетворює обидва аргументи в тип float.

sqrt(x) 

Квадратний корінь (square root) з x.

 

Основа натуральних логарифмів e = 2.71828.

Тригонометричні функції

acos(x)

Повертає арккосинус x, в радіанах.

asin(x) 

Повертає арксинус x, в радіанах.

atan(x)

Повертає арктангенс x, в радіанах.

cos(x)  

Повертає косинус x, де x виражений в радіанах.

hypot(x, y)        

Повертає sqrt (x ** 2 + y ** 2). Зручно для обчислення гіпотенузи і довжини вектора.

sin(x)   

Повертає синус x, де x виражений в радіанах.

tan(x)  

Повертає тангенс x, де x виражений в радіанах.

pi

Константа π = 3.1415 ...

Перетворення кутів

degrees(x)        

Конвертує значення кута x з радіан в градуси.

radians(x)          

Конвертує значення кута x з градусів в радіани.

 Для того, щоб звернутися до функції з імпортованого модуля необхідно вказати його ім'я, поставити крапку і написати ім’я потрібної функції:

>>> math.ім’я_функції(…)

Наприклад, нехай потрібно округлити перше число вгору (ceil), а друге – вниз(floor). Відповідна функція ceil з одним аргументом викликається, наприклад, так: math.ceil (x) (тобто явно вказується, що з модуля math використовується функція ceil). Замість числа x може бути будь-яке число, змінна або вираз. Функція повертає значення, яке можна вивести на екран, присвоїти іншій змінній або використати у виразі:

>>> import math
>>> x = math.ceil(9.1)
>>> y = math.floor(9.9)
>>> print(x, y, sep = '\n')
10

9 

Інший спосіб використовувати функції з бібліотеки math, при якому не потрібно буде кожного разу при використанні функції  вказувати назву цього модуля, виглядає так: 

>>> from math import pow
>>> a = pow(2, 3)
>>> b = pow(4, 5)
>>> a
8.0
>>> b

1024.0 

Або навіть так:

>>> from math import*
>>> a = 3
>>> b = 4
>>> sqrt(pow(a, 2) + pow(b, 2))
5.0
>>> hypot(a, b)

5.0 

Завдання для самостійного виконання:

Вправа

Виконайте в командному рядку інтерпретатора Python наступні інструкції:

>>> import math
>>> help(math)

Ознайомтеся з описом модуля і функцій, які входять до нього. Якщо виникне бажання, можете «погратися» з цими функціями, написавши кілька простеньких програмок з їх використанням. Де їх можна застосовувати?

Задачі

1. Створіть програму для обчислення довжини кола та площі круга за введеним радіусом. (Використати функцію pi модуля math)

2. Створіть програму для обчислення площі круга за введеним діаметром. (Використати функцію pi модуля math)

3. Створіть програму для обчислення радіуса кола за введеною довжиною кола.(Використати функцію pi модуля math)

4. Створіть програму для обчислення діаметра кола за введеною площею круга.(Використати функції pi та sqrt модуля math)

5. Створіть програму для обчислення довжини гіпотенузи прямокутного трикутника, за введеними катетами. (Використати функцію hypt модуля math)

6. Створіть програму для обчислення довжини катета прямокутного трикутника, за введеними катетом та гіпотенузою. (Використати функції sqrt та pow модуля math)

Використана література:

  1. Программирование для детей / К.Вордерман, Дж. Вудкок, Ш. Макаманус
  2. Дистанционная подготовка по информатике
  3. ПИТОНТЬЮТОР
  4. Фоксфорд.Учебник