
Це фрагмент книги Python з нуля, яка допоможе вам навчитися програмуванню з нуля. Ви можете знайти його на Allegro, Empik та в інтернет-книгарнях.
print("Встань із ліжка") print("Почисть зуби") print("Підсмаж м’ясо") print("Підсмаж булочку") print("Додай помідор") print("З’їж бургер") print("Працюй") print("Підсмаж м’ясо") print("Підсмаж булочку") print("Додай помідор") print("З’їж бургер") print("Працюй") print("Підсмаж м’ясо") print("Підсмаж булочку") print("Додай помідор") print("З’їж бургер") print("Пограй у гру") print("Іди спати")
make_and_eat_hamburger. Її тіло міститиме окремі кроки для приготування та споживання бургера, тому ми зможемо запустити усі ці кроки, викликавши цю функцію.# Визначення функції def make_and_eat_hamburger(): # Тіло функції print("Підсмаж м’ясо") print("Підсмаж булочку") print("Додай помідор") print("З’їж бургер") print("Встань із ліжка") print("Почисть зуби") make_and_eat_hamburger() # Використання функції print("Працюй") make_and_eat_hamburger() # Використання функції print("Працюй") make_and_eat_hamburger() # Використання функції print("Пограй у гру") print("Іди спати")
def [^107_1], далі йде її назва, круглі дужки, які можуть містити визначення параметрів (про них ми поговоримо згодом), і, нарешті, двокрапка, після якої з наступного рядка починається тіло функції. У тілі функції ми можемо використовувати все, чого ми навчилися досі: змінні, цикли чи навіть самі функції. Перед інструкцією в тілі функції має стояти відповідний відступ, оскільки саме він позначає, що є частиною тіла, а що — ні.
print, — це інструкція. Зрештою print — це також функція, а print("а") — виклик функції.def print_a(): print("a") def print_a_and_b(): print_a() print("b") print_a() # a print_a_and_b() # a # b print_a() # a
# ... def wear_shoes(): put_on_shoe() tie_shoelace() # ... def go_to_store(): wear_shoes() put_on_jacket() leave_house() # ...
return, про яке ми поговоримо незабаром), ми повертаємося до місця, в якому була викликана функція, та продовжуємо звідти. Якщо коротко, то так працюють функції. Нижче наведено приклади функцій із номерами, які показують порядок, у якому вони перелічені.def first_function(): print("3") # 3 print("4") # 4 def second_function(): print("6") # 6 print("7") # 7 print("1") # 1 print("2") # 2 first_function() print("5") # 5 second_function() print("8") # 8 # Буде виведено по черзі 1 2 3 4 5 6 7 8
_. Ця конвенція встановлена розробниками мови, її дотримується більшість програмістів. Ми з нею вже знайомі, адже використовуємо її, називаючи змінні.
name, user, result). Назва функції вказує, що має статися під час її виклику. Тому найчастіше це дієслово (cheer, go_to_store, print).print. Якби ми не змогли передати значення для виведення на екран, ця функція мала би небагато користі. Щоб наші функції могли набувати потрібного нам значення, достатньо у визначенні функції визначити змінні в дужках (просто вказуємо їхні назви). Такі змінні називаються параметрами. Вони визначають, що потрібно передати певній функції. З іншого боку, викликаючи функцію, ми повинні вказати значення, які будуть надані цим параметрам. Такі значення називаються аргументами. У прикладі нижче who_to_cheer — це параметр функції, а "Читачу", "Усі" та 42 — це значення, які використовуються як аргументи.def cheer(who_to_cheer): print(f"Хей, {who_to_cheer}!") cheer("Читачу") # Хей, Читачу! cheer("Усі") # Хей, Усі! cheer(42) # Хей, 42!

def b(x): print(x) b() # Traceback (most recent call last): # File "<input>", line 1, in <module> # TypeError: b() takes exactly 1 argument (0 given) print("Це не буде виведено")
- виводить суму двох чисел, переданих як аргументи;
- виводить послідовні числа від
aдоb, деaіb— це параметри функції (припускаємо, що значенняa < b); - виводить визначену кількість зірочок в одному рядку (найпростіший спосіб зробити це — створити змінну з порожнім рядком, потім виконати цикл, щоб додати більше зірочок до цієї змінної, і, нарешті, надрукувати цю змінну);
- виводить квадрат із зірочок вказаного розміру (пам’ятай, що Ти можеш використати функцію
print_starsз попереднього завдання); - друкує рівнобедрений трикутник заданого розміру із зірочок.
print_sum(1, 2) # 3 print_sum(3, 4) # 7 print_sum(20, 10) # 30 print_numbers(2, 4) # 2 # 3 # 4 print_stars(3) # *** print_stars(5) # ***** print_stars(8) # ******** print_square(2) # ** # ** print_square(3) # *** # *** # *** print_triangle(3) # * # ** # *** print_triangle(4) # * # ** # *** # ****
return, а потім вказуємо значення, яке має повернути виклик функції.def return_number(): return 42 result = return_number() print(result) # 42
def return_num(num): return num res = return_num(10) print(res) # 10
def double(num): return num * 2 print(double(13)) # 26
def square(x): return x * x print(square(2)) # 4 print(square(4)) # 16 print(square(10)) # 100
- вхідне значення, якщо воно більше або дорівнює нулю;
- протилежне вхідному значенню, коли воно менше нуля.

def absolute(x): if x >= 0: return x else: return -x print(absolute(0)) # 0 print(absolute(2)) # 2 print(absolute(-2)) # 2 print(absolute(10)) # 10 print(absolute(-10)) # 10
return негайно завершує виклик функції та повертає результат. Тому формально блок else не потрібний, оскільки, якщо перша умова використовує return, після цієї команди у функції вже нічого не виконуватиметься. Таким чином робота наведених вище функцій буде аналогічною до представлених нижче.def square(x): return x * x print("Це ніколи не буде виведено ") def absolute(x): if x >= 0: return x return -x
1 * 2 * 3 * 4 * 5, тобто 120. Факторіал чисел, менших за 1, вважається рівним 1. Ми можемо реалізувати це за допомогою циклу for. Щоб використовувати числа від 1 до n включно, ми використаємо range(1, num + 1). Визначимо змінну res, яка зберігатиме наш результат, і на кожному кроці циклу ми будемо множити цей результат на наступне число.def factorial(num): result = 1 for i in range(1, num + 1): result *= i return result
! після числа):1! = 1.2! = 1 * 2.3! = 1 * 2 * 3.4! = 1 * 2 * 3 * 4.5! = 1 * 2 * 3 * 4 * 5.- ...
2! = 1! * 2.3! = 2! * 3.4! = 3! * 4.5! = 4! * 5.- ...
5, достатньо взяти факторіал з 4 і помножити результат на 5. Те ж стосується інших чисел, більших за 1. Щоб обчислити факторіал з n, потрібно обчислити факторіал з n — 1 і помножити його на n. Винятком є числа, менші за 1, для яких ми завжди повинні повертати значення 1. Цей алгоритм можна представити таким чином:def factorial(num): if num <= 1: return 1 return num * factorial(num — 1) print(factorial(0)) # 1 print(factorial(1)) # 1 print(factorial(2)) # 2 print(factorial(3)) # 6 print(factorial(4)) # 24 print(factorial(5)) # 120
factorial(3). Оскільки 3 більше ніж 1, ми можемо підставити 3 * factorial(2). Так само, оскільки 2 більше ніж 1, ми можемо його замінити: 3 * 2 * factorial(1). Оскільки 1 дорівнює 1, factorial(1) повертає 1, отже factorial(3) повертає 3 * 2 * 1, тобто 6.num зменшується, і, коли функція доходить до 1, рекурсія завершується.- переводить дні у мілісекунди (одна секунда дорівнює 1000 мілісекунд);
- обчислює площу прямокутного трикутника, виходячи з довжини його перпендикулярних сторін (формула
a * b / 2); - повертає найбільше з трьох значень;
- обчислює суму чисел у діапазоні, заданому як аргумент (без останнього числа, як у функції
range).
print(days_to_millis(1)) # 86400000 print(days_to_millis(3)) # 259200000 print(triangle_area(1, 1)) # 0.5 print(triangle_area(10, 20)) # 100 print(biggest(2, 3, 1)) # 3 print(biggest(2, 3, 5)) # 5 print(biggest(3, 3, 1)) # 3 print(sum_range(1, 4)) # 1 + 2 + 3, тобто 6 print(sum_range(2, 5)) # 2 + 3 + 4, тобто 9 print(sum_range(10, 12)) # 10 + 11, тобто 21
return, вона за замовчуванням повертає None.def fun(): print("Just chillin’") ret = fun() # Just chillin’ print(ret) # None
def open_website(url, incognito=False): # Значення анонімного режиму за замовчуванням False if incognito: print(f"Opening {url} in incognito") else: print(f"Opening {url}") open_website("a.com") # Opening a.com open_website("b.com", True) # Opening b.com in incognito
open_website("b.com", True). Що означає True? Незрозуміло. Тут у нагоді стає ще один функціонал: іменування аргументів. Ми використовуємо його, додаючи перед аргументом (тобто у виклику функції) назву параметра і знак рівності.open_website(url="c.com") # Opening c.com open_website("b.com", incognito=True) # Opening b.com in incognito open_website(url="b.com", incognito=True) # Opening b.com in incognito
open_website(incognito=True, url="b.com") # Opening b.com in incognito
[^107_2]: На початку і в кінці цієї назви стоїть по два підкреслення. Що стосується атрибутів, то про них ми поговоримо в наступному розділі.
