Функції користувача

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

Функція складається з трьох частин: імені, параметрів і тіла.
У Python функції визначаються за допомогою зарезервованого слова def.
Опис функції:

def ім’я_функції(<перелік параметрів>):
    тіло функції

Тіло функції являє собою послідовність операторів, які будуть виконані після викликання функції.
Правила створення функцій у Python
- Блок функції починається з ключового слова def, після якого пишуть назву функції й круглі дужки ().
- Усередині дужок пишуть параметри — імена змінних, які отримують значення під час виклику функції. Ці параметри ще називають формальними. Якщо функції не треба
передавати значення, необхідно записати порожні дужки.
- Після дужок ставиться двокрапка і з нового рядка з відступом записуються оператори тіла функції.

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

Щоб викликати функцію, потрібно:
1) ввести ім’я функції й додати дужки;
2) у дужках перелічити аргументи функції — значення, які треба присвоїти формальним параметрам.
Якщо формальних параметрів немає, то при виклику після імені функції потрібно писати порожні дужки.
Під час виклику відбувається виконання команд тіла функції. Опис функції має міститися вище від виклику функції. Це пояснюється тим, що інтерпретатор зчитує код порядково, і про те, що міститься в рядках, які розташовані далі, йому невідомо.
Якщо виклик функції записано раніше, ніж її опис, то виникає помилка NameError.

Створимо і викличемо функцію, яка виводить у консоль квадрат числа. Призначення операторів у цьому програмному коді пояснюється на рис. 23.4.

def kv(x):       # заголовок функції
    print(x*x)   # тіло функції

kv(5)                # виклик функції

 Обчислення з використанням функцій користувача
Припустимо, що в тілі функції виконуються деякі обчислення. Якщо результат обчислень у подальшому треба використовувати в основній програмі, у тілі функції потрібно записати оператор: return <вираз>.
Оператор return припиняє виконання функції й повертає значення виразу на місце виклику функції.
Оператор return може не бути взагалі. У цьому випадку виконуються всі вказівки всередині функції і повертається значення None.

def avr(c1,c2):
      return (c1+c2)/2
sar1 = avr(x1,x2)

Ім’я і параметри функції слід слід записати у правій частині оператора присвоєння. Можна також викликати функцію зі списку виведення оператора print().

Складемо програму для розв’язування задачі.
У першому магазині мобільні телефони двох видів коштують х1, х2 грн, а в другому — у1, у2 грн. Визначимо, у якому магазині середня ціна телефонів нижча.

# Приклад 1 def avr(c1, c2):        # average - середнє 
    sar = (c1+c2)/2
    return sar
x1 = int(input('x1 = '))
x2 = int(input('x2 = '))
sar1 = avr(x1, x2)
y1 = int(input('y1 = '))
y2 = int(input('y2 = '))
sar2 = avr(y1, y2)
if sar1<sar2: 
    print('Нижчі ціни у І магазині')
elif sar1>sar2: 
    print('Нижчі ціни у ІI магазині')
else
    print('Ціни однакові')

Проаналізуємо програмний код.
•• В операторі sar1 = avr(x1, x2) функція avr викликається з фактичними параметрами x1, x2. Формальному параметру с1 присвоюється значення х1, параметру с2 — значення х2.
Значення, що повертається, присвоюється змінній sar1.
•• В операторі sar2 = avr(y1, y2) функція avr викликається з параметрами у1, у2. Значення, що повертається, присвоюється змінній sar2.

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

Область видимості — це та частина програмного коду, в якій змінна доступна для використання.
Змінні, створені всередині тіла функції, є локальними — їх «не видно» з інших функцій і з основної програми.

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

# Приклад 2
def info():
    global a
    a += 1       
    b = 22      # локальна змінна b

a= 44           # глобальна змінна a
info()
print('a =', a)

Алгоритм створення функції в Python
Алгоритм знаходження найбільшого спільного дільника (НСД) двох чисел m і n НСД(m, n) описано в ІІІ ст. до н. е. в трактаті «Початки» грецького математика Евкліда:
 поки a ≠ b, від більшого числа віднімати менше.

Розглянемо алгоритм створення функції для обчислення деякого значення на прикладі пошуку НСД двох чисел.

# Приклад 3
def nsd(m,n):        # Обчислення НСД 2 аргументів
    while m != n:
        if m>n:
            m=m-n
        else:
            n=n-m
        print("m=",m,' '," n=",n)
    return m
m=90
n=54
print("m=",m,' '," n=",n)
print('nsd =', nsd(m, n))

Скриншот результату роботи програми:

Запитання
1.У наведеному програмному коді назвіть заголовок функції, тіло функції, оператор виклику функції.

def sum(a, b):
    return a+b
s = sum(3, 5)

2. Що надрукує програма, якщо x = 123; x = 54 321?

def f(x):
    k = 0
    while x>0:
        x = x // 10
        k += 1

    return k
x = int(input('x = '))
print(f(x))

3. Описано функцію для визначення більшого з двох чисел. Як використати цю функцію для визначення найбільшого з трьох чисел x, y, z?

def m(a, b):
    if a>b: 
        k = a
    else
        k = b
    return k

4. Створіть функцію, яка друкує добуток двох чисел.

Завдання
1. Дано п'ять дійсних чисел. Написати програму визначення більшого з них, за умови, що функції max(), min() використовувати не можна.

2. Дано функцію для обчислення найбільшого спільного дільника nsd(m, n). Користуючись нею, знайти найменше спільне кратне (nck) чисел a, b, c, d, якщо відомо, що
nck(a, b) = a*b//nsd(a, b).











Комментариев нет:

Отправить комментарий