Програмування Python за моїми конспектами Лекція 10
Піст можна топити, мінусити і всіляко вбивати, бо в гарячому він нахер не потрібен, а ось передплатникам знадобиться.
Для тих хто не в темі, тут я перекладаю свої лекції з пітона з мови німецької на мову людську, тому-якщо-я не винен. Ці лекції створені не для того, щоб зробити з людини гівнокодера, а для того, щоб допомогти у складних темах, які нема кому пояснити, а книга з програмування не може з цим допомогти. Якщо ви ніколи не були в такій ситуації - значить ви вундеркінд і я хочу від вас дітей.
Відповідаючи на 90% однакових питань-
Я знаю, що це є в кожній книзі пітону. Це логічно. Не логічно було б, якби це було в книзі з анатомії хом'яків.
Я це роблю, тому що мені це подобається.
Список минулих лекцій
Всім привіт. Як обіцяв, сьогодні ми поговоримо про функції.
Але спочатку ми домовимося про виключення помилок.
Іноді виникають такі випадки (особливо під час роботи з файлами), коли помилок може бути дві чи три. І ми не знаємо яку саме очікувати. У такому разі ми можемо використовувати множинний вилов помилок.
Ось такий приклад


Зверніть увагу на те, що тут були передбачені дві різні помилки. І на те що є else, який, в іншому працює як звичайний else. Тобто, якщо ми не заходимо в except, то потрапляємо в else.
Та останнє- finally. Cюди ми потрапляємо у будь-якому разі. Тож прошу звернути увагу на результат виконання програми. Ми спочатку потрапили у except, а потім у finally через що та вивівся порожній список.
Далі ми вводимо коректне число, обходимо обидва try, потрапляємо в else і finally, куди ми потрапляємо в будь-якому випадку.
Ну а тепер переходимо до функцій. Якщо тут єостанні герої, які з нами з перших лекцій живуть, то вони пам'ятають приклад із заводом та дошками. Якщо ні, я повторюся.
Для поняття що таке функція варто уявити собі завод, який випускає нулу скажемо стільці.
А тепер дивимося, як це працює. Ось у нас є завод. Але що йому потрібне, щоб працювати? Ну крім працівників та наглядача з батогом.
Заводу потрібний матеріал. Нехай це будуть у нас дошки. Так ось. Отримуємо таку картинку.
ми подаємо дошки в завод, який вже знає що йому з ними робити, тобто має алгоритм (про який ми раніше говорили) по переробці дощок, і за допомогою цього алгоритму завод робить стільці, і віддає готовий товар. Так працюють функції. Кожна функція має своє завдання, і свій алгоритм дій. Наприклад, може бути функція, яка складає два числа, і повертає нам результат, або функція, яка ділить число на нуль, викликаючи помилку. Деякі функції потребують вхідного матеріалу, який називається параметром функції (за прикладом наших дощок), а деякі ні. А ще ми вже вивчили пару функцій на минулих лекціях.
Наприклад- Це функції type і id. У минулій лекції, швидше за все, було не зрозуміло як це працює, але зараз ми трохи наблизимося до розгадки. Візьмемо, наприклад, функцію type. Ми хотіли дізнатися, який тип даних буде у числа 123. Для цього ми брали нашу функцію type, відкривали дужки після неї, виходило так type(), а всередині дужок вже й писали наші аргументи (дрова для заводу). Виходило так type(123). Іншими словами, заводу з ім'ям type, ми відправили матеріал у вигляді числа 123, і ми знаємо, що у відповідь завод дає нам назву типу даних. Або це буде ціле число, або рядок, або число з комою і т.д.

А тепер, ну щоб взагалі зрозуміло стало. Ми ще на одну функціюпобачимо. Називається вона min()
У функцію ми передаємо будь-яку кількість чисел через кому, і функція, ґрунтуючись на свій внутрішній алгоритм, видає нам мінімальне число.
Наприклад min(10,5,3,6,9)

Почнемо з того, що функції в пітоні-це об'єкт.
отже, ось як виглядає наша функція в природному середовищі
Складається функція з голови (перший рядок) та тіла.
Голова починається зі слова def (від слова define) та назви функції. Імена функцій повинні складатися з маленьких літер, а слова розділятися символами підкреслення – це необхідно, щоб збільшити читабельність. Далі відкриваються дужки і туди ми пишемо параметри чи ні. Про це згодом.
Тіло функції часто починається з так званого docstring, де ми пишемо те, що наша функція робить.
""" функція збільшує два числа і повертає результат"""
Далі ми пишемо самі інструкції, які нам варто виконати. А ось потім дуже важлива штука, яка або є чи ні у функції. Називається вона return
Але про все по порядку.
Давайте напишемо просту функцію.

Перший рядок-декларуємо функцію print_something
друга- ми пишемо те, що функція робить
і нижче ми викликаємо саму функцію.
а зараз я вам покажу приклад, коли функція набуває значення, передане їй за допомогою аргументу функції. Як на картинці вище, де я розповідав про функцію type()
У нас була ця функція і аргументом у ній було 123. Тобто ми ці 123 кудись відправляємо. Але куди?
Зараз ми створимо свою функцію і зрозуміємо, куди йдуть аргументи. рис нижче.
Аргументи наші передаються параметрам функції. Параметром функції у нас є name. Кількість параметрів ви можете регулювати самі взалежно від ваших потреб.
У тілі функції ми прописуємо команду-вивести змінну name на екран. Після цього дії функції закінчується.
Для того, щоб вся ця справа запрацювала, нам необхідно щось передати в нашу функцію.
Тому передаємо їй рядок, яку вказує змінна n.
Тому ми n робимо аргументом функції так print_name (n)
Інакше кажучи, ми говоримо. Надішліть нашу n функції print_name ().
Функцію ми можемо виконувати скільки завгодно раз.

Ну а тепер давайте напишемо функцію, яка робить меблі. Ми їй даємо цвяхи та дошки, а вона нам меблі.

Все аналогічно, тільки тепер у нас два параметри та два аргументи.
Важливо не переплутати аргументи місцями, оскільки параметри приймають аргументи у порядку, де вони перебувають. Хоча це можна обійти. Про це трохи пізніше
Нині нас цікавить містичне return (повертати).
В даному випадку return повертає рядок 'меблі'. А взагалі може повертати будь-що. Навіть кортежі, які включають інші об'єкти.
Отже, ми відправили два аргументи, отримали відповідь, і її вивели на екран.
Бувають випадки, коли нам необхідно зробити аргументи за умовчанням. Ось приклад.

Я передаю лише один аргумент, а другий уже прописаний за умовчанням name='user'
Якщо цей аргумент нічого не прийме, він за замовчуванням набуде значення 'user', а якщо ми передамо йому що-небудь, то він вкаже на те, що ми йому передали.
І останнє на сьогодні, але не останнє із функціями.
Вище я говорив, що не варто плутати місцями аргументи функції.

Тепер я міняю аргументи місцями, і отримуємо яку.

Щоб цього не було, потрібно або стежити за порядком аргументів, або робити як нижче

У разі ці аргументи називаються Іменованими. Ми одразу прописали якому параметру, який аргумент належить. І нам уже відкрито похер у якому порядку вони стоять.
я особисто не користуюся цим способом, але якщо вам подобається-користуйте на здоров'я.
За допомогою вищесказаного ви вже можете почати завдання з минулої лекції.
Тепер ми трохи занесемо життя до нашого космосу.

Першим пунктом меню було у нас-інформація про планету.
Завдання таке. При введенні номера планети (з картки)
1. виводиться випадковогенерована з українського алфавіту назва планети. Важливо дотримуватися чергування голосних та приголосних.
2.Виводиться кількість населення планети і расу, що її заселяє (аналогічно випадковогенерована назва)
3 Виводимо Основні ресурси, які видобуває планета та їх кількість. Це також відбувається рандомно. Ресурси-газ, електрика, їжа.
4 Виводимо ставлення планети до нас. Хороше негативне чи нейтральне
5 Виводимо кількість армії
6 виводимо коротку історію планети.
Всі ці дані повинні бути готові до зміни будь-якої миті.
Раджу використовувати двомірний масив (послідовність). Самі вибирайте якийсь.

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