From 1613b65d5befc1a2e5a5b87c90e5b545d5cac23d Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Fri, 22 Oct 2021 20:54:30 +0300 Subject: [PATCH 1/9] Update students.rst --- students.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/students.rst b/students.rst index f874a21..7c7199f 100644 --- a/students.rst +++ b/students.rst @@ -4,6 +4,6 @@ Student List ============= ======================= Student Directory ============= ======================== -Name Lastname `dk91_lastname `_ +Kobets Viktor `dk92_Viktor `_ ============= ======================== From 93c0c2c8dc7fdbdde1d68a671a48ba2c238b0d43 Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Fri, 22 Oct 2021 20:57:03 +0300 Subject: [PATCH 2/9] Add files via upload --- CoinFlip__Lab0.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 CoinFlip__Lab0.py diff --git a/CoinFlip__Lab0.py b/CoinFlip__Lab0.py new file mode 100644 index 0000000..e107bf8 --- /dev/null +++ b/CoinFlip__Lab0.py @@ -0,0 +1,29 @@ +import random + +def flip(): + flip = random.random() + if (flip>=.5): + return True + else: + return False + +def main(num): + + heads = 0 + tails = 0 + resultString = "" + + for i in range(int(num)): + if (flip()): + heads+=1 + resultString += "H" + else: + tails+=1 + resultString += "T" + + print ("Number of Heads: %i" % (heads)) + print ("Number of Tails: %i" % (tails)) + print (resultString) +userInput = input("Please enter a number of flips: ") +main(userInput) + From 116545bffcf7f620be9207108444e7b7b7fd1b3f Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Sat, 23 Oct 2021 22:55:47 +0300 Subject: [PATCH 3/9] Update students.rst --- students.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/students.rst b/students.rst index 7c7199f..faf2e84 100644 --- a/students.rst +++ b/students.rst @@ -4,6 +4,6 @@ Student List ============= ======================= Student Directory ============= ======================== -Kobets Viktor `dk92_Viktor `_ +Kobets Viktor `dk92_Kobets`_ ============= ======================== From 142073c3f32fb45ef42f0f34003f89538095451d Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Sat, 23 Oct 2021 22:57:18 +0300 Subject: [PATCH 4/9] Update CoinFlip__Lab0.py --- CoinFlip__Lab0.py | 1 - 1 file changed, 1 deletion(-) diff --git a/CoinFlip__Lab0.py b/CoinFlip__Lab0.py index e107bf8..42e4d94 100644 --- a/CoinFlip__Lab0.py +++ b/CoinFlip__Lab0.py @@ -26,4 +26,3 @@ def main(num): print (resultString) userInput = input("Please enter a number of flips: ") main(userInput) - From c5a62b773183f666fe484cb58afd24a7591132d1 Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Sat, 23 Oct 2021 23:14:02 +0300 Subject: [PATCH 5/9] Rename CoinFlip__Lab0.py to coin_flip__Lab0.py --- CoinFlip__Lab0.py => coin_flip__Lab0.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CoinFlip__Lab0.py => coin_flip__Lab0.py (100%) diff --git a/CoinFlip__Lab0.py b/coin_flip__Lab0.py similarity index 100% rename from CoinFlip__Lab0.py rename to coin_flip__Lab0.py From 4fd2f64992ad5ce6fbfa1915dc2ee89a69575e0c Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Thu, 11 Nov 2021 14:33:54 +0200 Subject: [PATCH 6/9] MKR1 --- ============================== | 130 +++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 ============================== diff --git a/============================== b/============================== new file mode 100644 index 0000000..2bb87a9 --- /dev/null +++ b/============================== @@ -0,0 +1,130 @@ +============================== +Кобець Віктор Андрійович +============================== + + +#. Гілки в Git: для чого використовуються, який принцип роботи з гілками. Наведіть команди для створення нової гілки та переключення + між гілками. + + -Відповідь + Гілки потрібні розгалудження проекту + + $ git branch (-NAME-) - створення нової гілки + $ git checkout (-NAME-) - переключення між гілками + +#. Як підтягнути зміни, що відбулись у віддаленому upstream-репозиторії (гілка master) до локального репозиторію? Наведіть команду. + + -Відповідь + git pull - стягуємо всі оновлення. + + git merge master - синхронізуємо в нашу гілку с гілкою мастер. + + git rebase master - якщо особиста гілка можно так. + +#. Множина (set). Для чого слугує? Чим відрізняється від списку (list) та кортежа (tuple)? Наведіть приклади використання. + + -Відповідь + Множина(set) — невпорядкована послідовність, що не індексується. Однакові елементи не допускаються. + + Кортеж(tuple) - послідовність, яка впорядкована, але не змінюється. Допускаються однакові елементи. + + Список(list) — впорядкована послідовність, яку можна змінювати. Допускаються однакові елементи. + + exemple = {"Kobets", "Vity", "Viktor", "Viktor"} + print(exemple) + + Вивод: + + {"Kobets", "Viktor", "Vity"} + +#. Яким чином можна виконати замір швидкості виконання блоку коду Python? + Що є швидшим для розрахунку квадратного кореня: оператор піднесення до степеню, функція піднесення для степеню з бібліотеки + ``math`` чи спеціалізована функція взяття квадратного кореню з ``math``? Наведіть приклад коду, що визначає швидкість виконання + для кожного з випадків. + + -Відповідь + import datetime + import math + + start = datetime.datetime.now() + + num = 25 + sqrt = num ** (0.5) + print("Квадратный корень из числа "+str(num)+" это "+str(sqrt)) + + finish = datetime.datetime.now() + print finish-start + + start = datetime.datetime.now() + + num = 25 + sqrt = math.sqrt(num) + print("Квадратный корень из числа " + str(num) + " это " + str(sqrt)) + + finish = datetime.datetime.now() + print finish-start + +#. Аргументи функцій. Які типи (концептуально) аргументів бувають? Наведіть приклад функції, яка виводить свої аргументи. + + -Відповідь + позиційні - передаються у тому порядку, у якому визначено під час створення функції. Тобто порядок передачі аргументів визначає, яке значення набуде кожен аргумент + + ключові - передаються із зазначенням імені аргументу та його значення. У такому разі аргументи можуть бути вказані в будь-якому порядку, тому що їх ім'я вказується явно. + + Спочатку завжди йдуть позиційні. + + def Argument(v): + print('Argument.v = ', v) + return + +#. Наведіть приклад функції, що **коректно** приймає в якості значення за замовчанням immutable-об'єкт. + Чому коректно робити саме так? + + -Відповідь + Функції що **коректно** приймає в якості значення за замовчанням immutable-об'єкт - bool, int, float, tuple, str, frozenset. + + Об'єкти вбудованих типів, таких як (int, float, bool, str, tuple, frozenset) є незмінними. + Об'єкти вбудованих типів, таких як (list, set, dict) змінюються. + Користувальницькі класи зазвичай змінюються. Щоб змоделювати незмінність у класі, необхідно перевизначити встановлення та видалення атрибутів, щоб викликати винятки. + + +#. Конструкція умовного виконання Python. Яким чином можна реалізувати перевірку логічного виразу *A x B*, де x – XOR. + Наведіть приклад коду. + + -Відповідь + a = int(input()) + b = int(input()) + + if a!= b: + print("1") + else: + print("0") + +#. Створити клас Animal. Унаслідувати від нього два класи *Mammal* та *Amphibian*. + Від класу *Mammal* унаслідувати два класи – *Cat* та *Dog*. + Клас Animal передбачає наявність поля ``likes_water`` (на рівні класу, не об'єкта), яке за замовчуванням задане рівним ``False`` + і перевизначається в дочірніх класах (за необхідності). + Для класу *Mammal* визначити метод ``milk()``, який виводитиме в стандартний вивід *"{name}: delicious!"*. + Для *Amphibian* та *Dog* визначити метод ``swim()``, який виводитиме в стандартний вивід *"{name}: swimming makes me feel good"*. + При написанні ``swim()`` уникати copy-paste, натомість, згрупувати єдину логіку в окрему функцію, яку викликатиме кожен клас. + Замість *{name}* підставляти значення атрибута ``name``, який задається при створенні об'єкту. + Навести приклад використання. + + -Відповідь + class Animal: + likes_water + + class Mammal(Animal): + def milk() + {name}: delicious!" + + class Cat(Mammal): + + + class Dog(Mammal): + def swim() + {name}: swimming makes me feel good + + class Amphibian(Animal): + def swim() + {name}: swimming makes me feel good \ No newline at end of file From e68bdc42799b5f46be492590ca60867052d15e21 Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Thu, 11 Nov 2021 14:37:25 +0200 Subject: [PATCH 7/9] Create MKR1 --- MKR1 | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 MKR1 diff --git a/MKR1 b/MKR1 new file mode 100644 index 0000000..6ea7b76 --- /dev/null +++ b/MKR1 @@ -0,0 +1,130 @@ +============================== +Кобець Віктор Андрійович +============================== + + +#. Гілки в Git: для чого використовуються, який принцип роботи з гілками. Наведіть команди для створення нової гілки та переключення + між гілками. + + -Відповідь + Гілки потрібні розгалудження проекту + + $ git branch (-NAME-) - створення нової гілки + $ git checkout (-NAME-) - переключення між гілками + +#. Як підтягнути зміни, що відбулись у віддаленому upstream-репозиторії (гілка master) до локального репозиторію? Наведіть команду. + + -Відповідь + git pull - стягуємо всі оновлення. + + git merge master - синхронізуємо в нашу гілку с гілкою мастер. + + git rebase master - якщо особиста гілка можно так. + +#. Множина (set). Для чого слугує? Чим відрізняється від списку (list) та кортежа (tuple)? Наведіть приклади використання. + + -Відповідь + Множина(set) — невпорядкована послідовність, що не індексується. Однакові елементи не допускаються. + + Кортеж(tuple) - послідовність, яка впорядкована, але не змінюється. Допускаються однакові елементи. + + Список(list) — впорядкована послідовність, яку можна змінювати. Допускаються однакові елементи. + + exemple = {"Kobets", "Vity", "Viktor", "Viktor"} + print(exemple) + + Вивод: + + {"Kobets", "Viktor", "Vity"} + +#. Яким чином можна виконати замір швидкості виконання блоку коду Python? + Що є швидшим для розрахунку квадратного кореня: оператор піднесення до степеню, функція піднесення для степеню з бібліотеки + ``math`` чи спеціалізована функція взяття квадратного кореню з ``math``? Наведіть приклад коду, що визначає швидкість виконання + для кожного з випадків. + + -Відповідь + import datetime + import math + + start = datetime.datetime.now() + + num = 25 + sqrt = num ** (0.5) + print("Квадратный корень из числа "+str(num)+" это "+str(sqrt)) + + finish = datetime.datetime.now() + print finish-start + + start = datetime.datetime.now() + + num = 25 + sqrt = math.sqrt(num) + print("Квадратный корень из числа " + str(num) + " это " + str(sqrt)) + + finish = datetime.datetime.now() + print finish-start + +#. Аргументи функцій. Які типи (концептуально) аргументів бувають? Наведіть приклад функції, яка виводить свої аргументи. + + -Відповідь + позиційні - передаються у тому порядку, у якому визначено під час створення функції. Тобто порядок передачі аргументів визначає, яке значення набуде кожен аргумент + + ключові - передаються із зазначенням імені аргументу та його значення. У такому разі аргументи можуть бути вказані в будь-якому порядку, тому що їх ім'я вказується явно. + + Спочатку завжди йдуть позиційні. + + def Argument(v): + print('Argument.v = ', v) + return + +#. Наведіть приклад функції, що **коректно** приймає в якості значення за замовчанням immutable-об'єкт. + Чому коректно робити саме так? + + -Відповідь + Функції що **коректно** приймає в якості значення за замовчанням immutable-об'єкт - bool, int, float, tuple, str, frozenset. + + Об'єкти вбудованих типів, таких як (int, float, bool, str, tuple, frozenset) є незмінними. + Об'єкти вбудованих типів, таких як (list, set, dict) змінюються. + Користувальницькі класи зазвичай змінюються. Щоб змоделювати незмінність у класі, необхідно перевизначити встановлення та видалення атрибутів, щоб викликати винятки. + + +#. Конструкція умовного виконання Python. Яким чином можна реалізувати перевірку логічного виразу *A x B*, де x – XOR. + Наведіть приклад коду. + + -Відповідь + a = int(input()) + b = int(input()) + + if a!= b: + print("1") + else: + print("0") + +#. Створити клас Animal. Унаслідувати від нього два класи *Mammal* та *Amphibian*. + Від класу *Mammal* унаслідувати два класи – *Cat* та *Dog*. + Клас Animal передбачає наявність поля ``likes_water`` (на рівні класу, не об'єкта), яке за замовчуванням задане рівним ``False`` + і перевизначається в дочірніх класах (за необхідності). + Для класу *Mammal* визначити метод ``milk()``, який виводитиме в стандартний вивід *"{name}: delicious!"*. + Для *Amphibian* та *Dog* визначити метод ``swim()``, який виводитиме в стандартний вивід *"{name}: swimming makes me feel good"*. + При написанні ``swim()`` уникати copy-paste, натомість, згрупувати єдину логіку в окрему функцію, яку викликатиме кожен клас. + Замість *{name}* підставляти значення атрибута ``name``, який задається при створенні об'єкту. + Навести приклад використання. + + -Відповідь + class Animal: + likes_water + + class Mammal(Animal): + def milk() + {name}: delicious!" + + class Cat(Mammal): + + + class Dog(Mammal): + def swim() + {name}: swimming makes me feel good + + class Amphibian(Animal): + def swim() + {name}: swimming makes me feel good From 73031f40c1188702a9183a2c3d0f532caf5ae5c6 Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Thu, 11 Nov 2021 14:37:34 +0200 Subject: [PATCH 8/9] Delete ============================== --- ============================== | 130 --------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 ============================== diff --git a/============================== b/============================== deleted file mode 100644 index 2bb87a9..0000000 --- a/============================== +++ /dev/null @@ -1,130 +0,0 @@ -============================== -Кобець Віктор Андрійович -============================== - - -#. Гілки в Git: для чого використовуються, який принцип роботи з гілками. Наведіть команди для створення нової гілки та переключення - між гілками. - - -Відповідь - Гілки потрібні розгалудження проекту - - $ git branch (-NAME-) - створення нової гілки - $ git checkout (-NAME-) - переключення між гілками - -#. Як підтягнути зміни, що відбулись у віддаленому upstream-репозиторії (гілка master) до локального репозиторію? Наведіть команду. - - -Відповідь - git pull - стягуємо всі оновлення. - - git merge master - синхронізуємо в нашу гілку с гілкою мастер. - - git rebase master - якщо особиста гілка можно так. - -#. Множина (set). Для чого слугує? Чим відрізняється від списку (list) та кортежа (tuple)? Наведіть приклади використання. - - -Відповідь - Множина(set) — невпорядкована послідовність, що не індексується. Однакові елементи не допускаються. - - Кортеж(tuple) - послідовність, яка впорядкована, але не змінюється. Допускаються однакові елементи. - - Список(list) — впорядкована послідовність, яку можна змінювати. Допускаються однакові елементи. - - exemple = {"Kobets", "Vity", "Viktor", "Viktor"} - print(exemple) - - Вивод: - - {"Kobets", "Viktor", "Vity"} - -#. Яким чином можна виконати замір швидкості виконання блоку коду Python? - Що є швидшим для розрахунку квадратного кореня: оператор піднесення до степеню, функція піднесення для степеню з бібліотеки - ``math`` чи спеціалізована функція взяття квадратного кореню з ``math``? Наведіть приклад коду, що визначає швидкість виконання - для кожного з випадків. - - -Відповідь - import datetime - import math - - start = datetime.datetime.now() - - num = 25 - sqrt = num ** (0.5) - print("Квадратный корень из числа "+str(num)+" это "+str(sqrt)) - - finish = datetime.datetime.now() - print finish-start - - start = datetime.datetime.now() - - num = 25 - sqrt = math.sqrt(num) - print("Квадратный корень из числа " + str(num) + " это " + str(sqrt)) - - finish = datetime.datetime.now() - print finish-start - -#. Аргументи функцій. Які типи (концептуально) аргументів бувають? Наведіть приклад функції, яка виводить свої аргументи. - - -Відповідь - позиційні - передаються у тому порядку, у якому визначено під час створення функції. Тобто порядок передачі аргументів визначає, яке значення набуде кожен аргумент - - ключові - передаються із зазначенням імені аргументу та його значення. У такому разі аргументи можуть бути вказані в будь-якому порядку, тому що їх ім'я вказується явно. - - Спочатку завжди йдуть позиційні. - - def Argument(v): - print('Argument.v = ', v) - return - -#. Наведіть приклад функції, що **коректно** приймає в якості значення за замовчанням immutable-об'єкт. - Чому коректно робити саме так? - - -Відповідь - Функції що **коректно** приймає в якості значення за замовчанням immutable-об'єкт - bool, int, float, tuple, str, frozenset. - - Об'єкти вбудованих типів, таких як (int, float, bool, str, tuple, frozenset) є незмінними. - Об'єкти вбудованих типів, таких як (list, set, dict) змінюються. - Користувальницькі класи зазвичай змінюються. Щоб змоделювати незмінність у класі, необхідно перевизначити встановлення та видалення атрибутів, щоб викликати винятки. - - -#. Конструкція умовного виконання Python. Яким чином можна реалізувати перевірку логічного виразу *A x B*, де x – XOR. - Наведіть приклад коду. - - -Відповідь - a = int(input()) - b = int(input()) - - if a!= b: - print("1") - else: - print("0") - -#. Створити клас Animal. Унаслідувати від нього два класи *Mammal* та *Amphibian*. - Від класу *Mammal* унаслідувати два класи – *Cat* та *Dog*. - Клас Animal передбачає наявність поля ``likes_water`` (на рівні класу, не об'єкта), яке за замовчуванням задане рівним ``False`` - і перевизначається в дочірніх класах (за необхідності). - Для класу *Mammal* визначити метод ``milk()``, який виводитиме в стандартний вивід *"{name}: delicious!"*. - Для *Amphibian* та *Dog* визначити метод ``swim()``, який виводитиме в стандартний вивід *"{name}: swimming makes me feel good"*. - При написанні ``swim()`` уникати copy-paste, натомість, згрупувати єдину логіку в окрему функцію, яку викликатиме кожен клас. - Замість *{name}* підставляти значення атрибута ``name``, який задається при створенні об'єкту. - Навести приклад використання. - - -Відповідь - class Animal: - likes_water - - class Mammal(Animal): - def milk() - {name}: delicious!" - - class Cat(Mammal): - - - class Dog(Mammal): - def swim() - {name}: swimming makes me feel good - - class Amphibian(Animal): - def swim() - {name}: swimming makes me feel good \ No newline at end of file From 391079fa48332acf8b2229ed5fa5258f858ad161 Mon Sep 17 00:00:00 2001 From: Eisenhoen16 <55437369+Eisenhoen16@users.noreply.github.com> Date: Thu, 11 Nov 2021 14:46:59 +0200 Subject: [PATCH 9/9] Create MKR1.rst --- MKR1.rst | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 MKR1.rst diff --git a/MKR1.rst b/MKR1.rst new file mode 100644 index 0000000..6ea7b76 --- /dev/null +++ b/MKR1.rst @@ -0,0 +1,130 @@ +============================== +Кобець Віктор Андрійович +============================== + + +#. Гілки в Git: для чого використовуються, який принцип роботи з гілками. Наведіть команди для створення нової гілки та переключення + між гілками. + + -Відповідь + Гілки потрібні розгалудження проекту + + $ git branch (-NAME-) - створення нової гілки + $ git checkout (-NAME-) - переключення між гілками + +#. Як підтягнути зміни, що відбулись у віддаленому upstream-репозиторії (гілка master) до локального репозиторію? Наведіть команду. + + -Відповідь + git pull - стягуємо всі оновлення. + + git merge master - синхронізуємо в нашу гілку с гілкою мастер. + + git rebase master - якщо особиста гілка можно так. + +#. Множина (set). Для чого слугує? Чим відрізняється від списку (list) та кортежа (tuple)? Наведіть приклади використання. + + -Відповідь + Множина(set) — невпорядкована послідовність, що не індексується. Однакові елементи не допускаються. + + Кортеж(tuple) - послідовність, яка впорядкована, але не змінюється. Допускаються однакові елементи. + + Список(list) — впорядкована послідовність, яку можна змінювати. Допускаються однакові елементи. + + exemple = {"Kobets", "Vity", "Viktor", "Viktor"} + print(exemple) + + Вивод: + + {"Kobets", "Viktor", "Vity"} + +#. Яким чином можна виконати замір швидкості виконання блоку коду Python? + Що є швидшим для розрахунку квадратного кореня: оператор піднесення до степеню, функція піднесення для степеню з бібліотеки + ``math`` чи спеціалізована функція взяття квадратного кореню з ``math``? Наведіть приклад коду, що визначає швидкість виконання + для кожного з випадків. + + -Відповідь + import datetime + import math + + start = datetime.datetime.now() + + num = 25 + sqrt = num ** (0.5) + print("Квадратный корень из числа "+str(num)+" это "+str(sqrt)) + + finish = datetime.datetime.now() + print finish-start + + start = datetime.datetime.now() + + num = 25 + sqrt = math.sqrt(num) + print("Квадратный корень из числа " + str(num) + " это " + str(sqrt)) + + finish = datetime.datetime.now() + print finish-start + +#. Аргументи функцій. Які типи (концептуально) аргументів бувають? Наведіть приклад функції, яка виводить свої аргументи. + + -Відповідь + позиційні - передаються у тому порядку, у якому визначено під час створення функції. Тобто порядок передачі аргументів визначає, яке значення набуде кожен аргумент + + ключові - передаються із зазначенням імені аргументу та його значення. У такому разі аргументи можуть бути вказані в будь-якому порядку, тому що їх ім'я вказується явно. + + Спочатку завжди йдуть позиційні. + + def Argument(v): + print('Argument.v = ', v) + return + +#. Наведіть приклад функції, що **коректно** приймає в якості значення за замовчанням immutable-об'єкт. + Чому коректно робити саме так? + + -Відповідь + Функції що **коректно** приймає в якості значення за замовчанням immutable-об'єкт - bool, int, float, tuple, str, frozenset. + + Об'єкти вбудованих типів, таких як (int, float, bool, str, tuple, frozenset) є незмінними. + Об'єкти вбудованих типів, таких як (list, set, dict) змінюються. + Користувальницькі класи зазвичай змінюються. Щоб змоделювати незмінність у класі, необхідно перевизначити встановлення та видалення атрибутів, щоб викликати винятки. + + +#. Конструкція умовного виконання Python. Яким чином можна реалізувати перевірку логічного виразу *A x B*, де x – XOR. + Наведіть приклад коду. + + -Відповідь + a = int(input()) + b = int(input()) + + if a!= b: + print("1") + else: + print("0") + +#. Створити клас Animal. Унаслідувати від нього два класи *Mammal* та *Amphibian*. + Від класу *Mammal* унаслідувати два класи – *Cat* та *Dog*. + Клас Animal передбачає наявність поля ``likes_water`` (на рівні класу, не об'єкта), яке за замовчуванням задане рівним ``False`` + і перевизначається в дочірніх класах (за необхідності). + Для класу *Mammal* визначити метод ``milk()``, який виводитиме в стандартний вивід *"{name}: delicious!"*. + Для *Amphibian* та *Dog* визначити метод ``swim()``, який виводитиме в стандартний вивід *"{name}: swimming makes me feel good"*. + При написанні ``swim()`` уникати copy-paste, натомість, згрупувати єдину логіку в окрему функцію, яку викликатиме кожен клас. + Замість *{name}* підставляти значення атрибута ``name``, який задається при створенні об'єкту. + Навести приклад використання. + + -Відповідь + class Animal: + likes_water + + class Mammal(Animal): + def milk() + {name}: delicious!" + + class Cat(Mammal): + + + class Dog(Mammal): + def swim() + {name}: swimming makes me feel good + + class Amphibian(Animal): + def swim() + {name}: swimming makes me feel good