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

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

У задачі з використанням математичної константи "пі" її значення доводилося вводити самостійно, при цьому, звісно, округлюючи її значення до сотих, оскільки реальне значення "пі" нескінченне. Для нашого приблизного обчислення площі кільця цього цілком достатньо, але для більш точних підрахунків може знадобитися більше знаків після коми. То що, кожного разу, в залежності від потрібної кількості знаків, зазирати у довідник?

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

from math import pi

Цей рядок означає, що ми до своєї програми долучаємо одну з функцій (функція pi) модуля math (від mathematics - математика).

А тепер усе те ж саме тільки у перекладі на людську мову 😄

Кожна програма містить набір певних команд, які сприймає і виконує процесор. Коли ми, наприклад, подаємо команду print, то повинні бути впевненими, що нас зрозуміють, інакше нашу команду просто не буде виконано! Тому, в мові програмування повинен міститися не тільки перелік команд, а й набір інструкцій, як їх виконувати. Оскільки набір інструкцій для команди print у Python є, то ця команда виконується без проблем але варто нам замість print написати write (просто сплутавши Python з мовою Pascal, де саме ця команда призначена для виведення на екран), то одразу ж отримаємо повідомлення про помилку: "name 'write' is not defined". Оскільки write у мові Python не визначене, не описане, то він просто не знає, що це таке, а, отже, й не може це виконати. Відсутнє головне: інструкція ЯК виконувати write!

Однак, усі інструкції до усіх команд мови програмування втискувати в саму мову немає потреби, адже не усі вони в кожній програмі використовуються. Зайвий набір інструкцій тільки збільшує розмір виконуваного файлу і сповільнює його роботу. Тому в програмуванні поширений такий спосіб, коли в саме середовище розробки "зашивають" лише набір основних, часто вживаних інструкцій, а решту виносять в окремі т.зв. модулі - свого роду довідники для мови програмування, де й описано ЯК виконувати ту чи іншу команду чи функцію, яка відсутня в основному середовищі розробки. От рядком from math import pi ми якраз і долучаємо до свого коду ще й інструкцію, як видобути значення числа "пі" (не весь модуль цілком, а лише одну інструкцію з нього, яка стосується "пі"). В результаті тепер, якщо ми після цього запишемо виклик функції pi, то одразу ж потрібне нам і отримаємо:

Для допитливих

Взагалі кажучи, модулів у Python дуже багато. Ознайомитися з їх переліком можна, якщо в Python Shell ввести команду help('modules'). Той величезний перелік - це тільки модулі стандартної бібліотеки, а ще є можливості й підключення інших, користувацьких модулів, яких немає в стандартному наборі, у тому числі й тих, які може власноруч створити сам програміст. Можливості Python практично необмежені для написання найрізноманітніших типів програм. Шляхи ж зберігання модулів на вашому комп'ютері стануть вам доступними після введення у тому ж Python Shell спочатку import sys, а потім sys.path.

Поняття функції вам уже знайоме з курсу алгебри. В математиці функцією називають правило (закон), який описує залежність одних величин від інших. Наприклад, функція залежності площі квадрата від його сторони може бути математично виражена як S(x)=x². (залежність S від x виражається формулою x²). Іншими словами кажучи, функція задає результат, який ми отримаємо, якщо візьмемо якесь конкретне значення x. Буде x=2 - отримаємо S=2²=4. Якщо x=6, тоді матимемо S=6²=36 і т.д.

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

Функція, яка до введеного числа додає число 3. "Завантажуємо" число 5 - на виході отримуємо число 8

У старших класах ви навчитеся створювати такі функції (їх ще називають "функціями користувача") самостійно.

Ознайомитися з усіма функціями модулю math можна, якщо у Python Shell ввести команду help('math') або другий спосіб: import math, а потім dir(math). Їх перелік можна знайти ТУТ. Оскільки ви ще не до кінця вивчили навіть шкільний курс математики, а тим більше не всю математику, то не всі з цих функцій вам будуть зрозумілими, а, значить, і потрібними. Тому розберемося лише з деякими з них, які можуть бути корисними в ході виконання обчислень.

  • ceil - округлення до більшого цілого (наприклад, число 3,14 буде округлено до числа 4; функція корисна, наприклад тоді, коли ми обчислюємо щось, що на частини не ділиться: якщо, наприклад, нам потрібно півтори пачки масла (300 г), тоді купуємо усе одно дві, оскільки пів пачки нам ніхто не продасть, ceil(1.5)=2).

  • floor - те саме, що і ceil тільки округлення не до більшого, а до меншого (floor(3.14)=3)

  • fabs - обчислення модуля числа (fabs(-3)=3)

  • trunc - результат буде такий же, як і при застосуванні функції floor: уся дробова частина числа просто відкидається (trunc(pi)=3)

  • gcd - найбільший спільний дільник: gcd(5,10,20)=5; кількість чисел у дужках довільна, усі - цілі й усі записуються через кому

  • lcm - найменше спільне кратне: lcm(5,10,20)=20

Якщо ми хочемо використати з модуля math не одну функцію, а декілька, то їх можна перерахувати через кому: from math import pi, ceil або ж просто, щоб не заморочуватися, додати одразу увесь модуль: from math import *.

Окрім цих функцій модуля math корисною може бути і ще функція, що є в основному модулі Python - це функція округлення round(). Для її використання не потрібно підключати math і її синтаксис такий же, як і в Excel: у дужках ставимо два числа - першим те, яке округлюємо, а потім через кому, до якої кількості знаків округлюємо round(pi,3)=3.142 (число "пі" округлено до трьох знаків після коми).

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

Завдання 5

Дано три числа. Обчислити їх середнє арифметичне.

Розв'язання задачі

a = float(input('Введіть перше число: '))

b = float(input('Введіть друге число: '))

c = float(input('Введіть третє число: '))

res = (a+b+c)/3

print(round(res,2))

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

Завдання 6

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

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

Створюємо програму самостійно і перевіряємо себе:

from math import pi, ceil #підключаємо тільки ті функції, які потрібні

a = float(input('Введіть сторону плитки (в см): ')) #подбаємо про відповідність одиниць вимірювання

d = float(input('Введіть діаметр круга (в см): '))

r = d/2 #обчислюємо радіус

s_kr = pi*r**2 #обчислюємо площу круга

s_pl = a**2 #обчислюємо площу однієї плитки

n = ceil(s_kr/s_pl) #обчислюємо кількість плиток і округлюємо до цілих в більшу сторону

print('Плиток: ', n) #виводимо результат

Завдання 7

Обчислити значення виразу |x³-5x-120|

Зовсім просто. Знайдіть як позначається функція модуля числа...

from math import fabs

x = float(input('Введіть число х: '))

y = fabs(x**3-5*x-120)

print(y)

ПІДСУМКИ

Отже, з цього уроку ви дізналися і маєте запам'ятати:

  • що функція в програмуванні - це якась "секретна" послідовність команд, яку нам не показують, але яка дозволяє ввести дані й отримати відповідний результат лише одним зверненням до цієї функції;

  • що функції існують як вбудовані в сам Python, так і зовнішні, які згруповані за відповідною тематикою у модулі;

  • що переглянути усі функції будь-якого модуля можна за допомогою однієї команди help('назва_модуля') або двома командами import назва_модуля, а потім dir(назва_модуля).

  • що для використання функцій модуля цей модуль потрібно спочатку підключити до програми за допомогою рядка from <назва модуля> import <перелік функцій модуля>; цей рядок ставлять на початку програми;

  • що можна підключити або певні функції модуля (для цього їх потрібно після слова import перерахувати через кому), або увесь модуль повністю (тоді після слова import потрібно поставити "зірочку" *);

  • що у математичному модулі math є дуже великий набір функцій, призначених для математичних обчислень, наприклад, такі: ceil - для округлення до більшого цілого, floor - для округлення до меншого цілого, trunc - для відкидання дробової частини від десяткового дробу, fabs - для обчислення модуля числа, gcd - для обчислення найбільшого спільного дільника, lcm - для обчислення найменшого спільного кратного;

  • що для округлення результатів обчислень можна використовувати функцію round; вона є стандартною в IDLE Python і для її використання ніякі модулі підключати не потрібно.

ДОМАШНЄ ЗАВДАННЯ