ЛЕКЦІЯ 2 2.1 Рядки і операції над ... · ЛЕКЦІЯ 2 2.1 Рядки і...
TRANSCRIPT
1 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
ЛЕКЦІЯ 2 2.1 Рядки і операції над ними
Python часто використовують для обробки текстів: пошуку в тексті, заміни окремих частин тексту і т.д. Для роботи з текстом в Python передбачений спеціальний рядковий тип даних str.
Python створює рядкові об'єкти, якщо текст помістити в одинарні або подвійні лапки: >>> 'hello'
'hello'
>>> "Hello"
'Hello'
>>>
Без лапок Python розцінить текст як змінну і спробує вивести на екран її вміст (якщо така змінна була створена): >>> hello
Traceback (most recent call last):
File "<pyshell # 2>", line 1, in
<module> hello
NameError: name 'hello' is not defined
>>>
Можна створити порожній рядок: >>> ''
''
>>>
Для роботи з рядками в Python передбачена велика кількість вбудованих функцій, наприклад, len. Ця функція визначає довжину рядка, яка передається їй як аргумент. >>> help(len)
Help on built-in function len in module builtins:
len (obj, /)
Return the number of items in a container.
>>> len('Привіт!')
7
>>>
Наприклад, якщо ми хочемо об'єднати кілька рядків в одну, Python дозволяє це зробити за допомогою операції конкатенації (звичайний символ + для рядків): >>> 'Привіт,' + 'земляни!'
'Привіт, земляни!'
>>>
Тут беруть свій початок дивовижні речі! Пам'ятайте, ми говорили, що операції
2 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
залежать від типу даних? Над об'єктами певного типу можна робити тільки певні операції: числа - складати, множити і т.д. Так ось, для рядків символ + об'єднуватиме рядки, а для чисел - складати їх. А, що якщо скласти число і рядок? >>> 'Марс' + 5
Traceback (most recent call last):
File "<pyshell # 8>", line 1, in
<module> 'Марс' + 5
TypeError: Can not convert 'int' object to str implicitly
>>>
Python заплутався, тому що не зрозумів, що ми від нього хочемо: скласти числа або об'єднати рядки. Наприклад, ми хочемо об'єднати рядки. Для цього за допомогою функції str перетворимо число 5 в рядок '5' і виконаємо об'єднання: >>> 'Марс' + str(5)
'Марс5'
>>>
Чи можна виконати зворотне перетворення типів? Можна, можливо! >>> int("-5")
-5
>>>
Попросимо Python повторити наш рядок задане число раз: >>> "СПАМ" * 10
'СПАМСПАМСПАМСПАМСПАМСПАМСПАМСПАМСПАМСПАМ'
>>>
Операція множення для рядків придбала інший сенс. Рядки можна привласнювати змінним і далі працювати зі змінними:
>>> s = "Я вивчаю програмування"
>>> s
'Я вивчаю програмування'
>>> s * 4
'Я вивчаю програмуванняЯ вивчаю програмуванняЯ вивчаю
програмуванняЯ вивчаю програмування'
>>> s + "на мові Python"
'Я вивчаю програмування на мові Python'
>>>
Якщо хочемо помістити різні види лапок в рядок, то зробити це можна кількома способами: >>> "Hello's"
"Hello's"
>>> 'Hello \' s '
3 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
"Hello's"
>>>
Перший - взяти в лапки різних типів, щоб Python зрозумів, де закінчується рядок. Другий - використовувати спеціальні символи (керуючі escape-послідовності), які
записуються, як два символи, але Python бачить їх як один: >>> len("\'")
1
>>>
Корисно знати про ці символах, тому що вони часто використовуються при роботі з рядками:
\ n - перехід на новий рядок
\ t - символ табуляції
\\ - похила риса вліво
\ '-символ одиночної лапки
\ "-символ подвійної лапки
При спробі перенести довгий рядок на новий: >>>'Це довгий
SyntaxError: EOL while scanning string literal
>>> рядок
Traceback (most recent call last):
File "<pyshell # 20>", line 1, in
<module> рядок
NameError: name 'рядок' is not defined
>>>
Створимо багаторядковий рядок (необхідно укласти її в три одинарні лапки): >>> '''Це довгий
рядок'''
'Це довгий \ nрядок'
>>>
При виведенні на екран перенесення рядка відобразився у вигляді спеціального символа '\n'.
Раніше ми говорили про функції print, яка відображає на екрані об'єкти різних типів даних, переданих їй в якості вхідних аргументів. Тепер знову до неї повернемося. Передамо на вхід функції print рядок зі спеціальним символом: >>> print('Це довгий \nрядок')
Це довгий
рядок
>>>
Функція print спеціальний символ змогла розпізнати і зробити новий рядок.
4 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
Розглянемо ще кілька прикладів: >>> print(1, 3, 5)
1 3 5
>>> print(1, '2', 'зновурядок',56)
1 2 знову рядок 56
>>>
Переконалися, що print дозволяє виводити об'єкти різних типів. Насправді, у цій функції є кілька «прихованих» аргументів, які задаються за
умовчанням в момент виклику:
І знову кілька прикладів:
>>> print(1, 6, 7, 8, 9) 1 6 7 8 9 >>> print(1, 6, 7, 8, 9, sep =':')
1:6:7:8:9 >>>
За замовчуванням print використовує як роздільник пробіл, ми можемо змінити
роздільник, змінивши для цього примусово значення параметра sep =':'. Звідси висновок: корисно читати документацію. Додамо в наші програми інтерактивності, тобто будемо просити у користувача
ввести значення з клавіатури. В Python для цього є спеціальна функція input:
5 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
>>> s = input()
Земляни, ми прилетіли із миром!
>>> s
'Земляни, ми прилетіли із миром!'
>>> type(s)
<class 'str'>
>>>
У прикладі ми викликали функцію input і результат її роботи привласнили змінною
s. Далі користувач ввів значення з клавіатури і натиснув Enter, тобто закінчив введення. Вміст змінної вивели на екран. Викликали функцію type, яка дозволяє визначити тип
об'єкта. Побачили, що це рядок.
І тут УВАГА: не забувайте, що функція input повертає
рядковий об'єкт!
Ось, чим це може обернутися: >>> s = input("Введіть число: ")
Введіть число: 555
>>> s + 5
Traceback (most recent call last):
File "<pyshell # 33>", line 1, in
<module> s + 5
TypeError: Can not convert 'int' object to str implicitly
>>>
У цьому прикладі використовується вхідний аргумент функції input, який виведе рядок-запрошення перед призначеним для користувача введенням: "Введіть число: ".
Після введення значення з клавіатури ми намагаємося його скласти з числом 5,а замість очікуваного результату отримуємо повідомлення про помилку. Використання операції + для рядкового і числового об'єктів призвело Python в ступор. Як вирішити проблему? Перетворенням типів: >>> s = int(input("Введіть число:"))
Введіть число: 555
>>> s + 5
560
>>>
Тепер все вийшло! Будьте уважні!
Вправа 2.1 Попросіть користувача ввести своє ім'я і після цього відобразіть на екрані рядок виду: Привіт, <ім'я>! Замість <ім'я> має зазначатися те, що користувач ввів з клавіатури. Як тебе звати?
Вася
Привіт, Вася!
6 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
З рядками познайомилися, навчилися їх створювати. Тепер розглянемо операції над ними.
Кожен символ рядка має свій порядковий номер (індекс). Нумерація символів
починається з нуля. Тепер ми можемо звернутися до заданого символу рядка наступним чином: >>> s = 'Я люблю писати програми!'
>>> s [0]
'Я'
>>> s [-1]
'!'
>>>
У квадратних дужках вказується індекс символу. Нульовий індекс - перша буква рядки. А -1 індекс? Можна здогадатися, що останній. Якщо побачите негативний індекс, то визначити його позитивний аналог можна як довжина рядка + відємний індекс. Наприклад, для -1 це буде: len(s)-1, тобто 24. >>> len(s) -1
23
>>> s [24]
'!'
>>>
Яка ситуація зі зміною рядків в Python? >>> s = 'Я люблю писати програми!'
>>> s [0] ='J'
Traceback (most recent call last):
File "<pyshell # 41>", line 1, in
<module> s [0] = 'J'
TypeError: 'str' object does not support item assignment
>>>
Спроба змінити нульовий символ в рядку s привела до помилки. Справа в тому, що в Python рядки, як і числа, є незмінними.
Робота із рядковими об'єктами для Python не відрізняється від роботи з числовими об'єктами:
Змінюємо значення змінної s. Створюється новий рядковий об'єкт (а не змінюється
попередній) за адресою id2 і ця адреса записується в змінну s.
7 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
Перш ніж ми зрозуміємо, як рядки можна змінювати, познайомимося зі зрізами:
>>> s = 'Пітони водяться в Африці'
>>> s[1:3]
'іт'
>>>
s[1:3] - зріз рядка s, починаючи з індексу 1,закінчуючи індексом 3 (НЕ включно). Це легко запам'ятати, якщо індекси представити у вигляді зсувів:
З зрізами можна виробляти різні маніпуляції:
>>> s[:3] # з 0 індексу по 3-ий НЕ включно
'Піт'
>>> s[:] # весь рядок
'Пітони водяться в Африці'
>>> s[::2] # третій аргумент задає крок (за замовчуванням один)
'Птн ояьявАрц'
>>> s[::-1] # «зворотний» крок
'іцирфА в ясьтядов инотіП'
>>> s[:-1] # згадаємо, як ми знаходили негативний індекс
'Пітони водяться в Африц' >>> s[-1:] # знову негативний індекс
'і'
>>>
Сподіваюся, що зрізи стануть вашими вірними помічниками при роботі з рядками. Тепер повернемося до питання, як змінити перший символ в рядку? Із зрізами це «елементарно, Ватсон»!
8 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
>>> s = 'Я люблю писати програми!'
>>> 'J' + s [1:]
'J люблю писати програми!'
>>>
Вправа 2.2 Напишіть програму, яка визначить суму і добуток трьох чисел (типу int, float), введених з клавіатури. Приклад роботи програми:
Введіть перше число: 1
Введіть друге число: 4
Введіть третє число: 7
Сума введених чисел: 12
Добуток введених чисел: 28
2.2 Оператори відношення
Числа можна порівнювати. В Python для цього є наступні операції порівняння:
В інтерактивному режимі порівняємо два числа:
>>> 6> 5
True
>>> 7 <1
False
>>> 7 == 7 # не плутайте == та =
True
>>> 7! = 7
False
>>>
Python повертає True (Істина == 1), коли порівняння вірне і False (Брехня == 0) - в іншому випадку. True і False відносяться до логічного (булевого) типу даних bool. Важливо писати слова із великої літери. True інтерпретується Python як число 1, а False як число 0. >>> type(True)
<class 'bool'>
9 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
>>>
Окремої розмови заслуговує порівняння дійсних чисел, тому що воно може привести до несподіваних, на перший погляд, результатами (див. стандарт IEEE 754): >>> 0.1 + 0.1 == 0.2
True
>>> 0.1 + 0.1 + 0.1 == 0.3
False
>>>
З цілими числами все більш- менш просто і зрозуміло. Розглянемо тепер більш складні логічні вирази.
Логічним висловлюванням (предикатом) будемо називати будь-яке розповідне
речення, щодо якого можна однозначно сказати, істинно воно або помилкове. Наприклад, вислів: «6 - парне число». Істинно або хибно? Очевидно, що істинно.
А вислів: «6 більше 19»? Висловлення помилкове. Ніякого підступу в цьому немає. Чи є висловлюванням фраза: «у нього блакитні очі»? Хочеться запитати, у кого?
Однозначності в цій фразі немає, тому вона не є висловлюванням. Далі висловлювання можна комбінувати. Висловлювання «Петров - лікар»,
«Петров - шахіст» можна об'єднувати за допомогою зв'язку І, АБО.
«Петров - лікар І шахіст». Це висловлювання істинно, якщо ОБИДВА висловлювання «Петров - лікар» І «Петров - шахіст» є істинними.
«Петров - лікар АБО шахіст». Це висловлювання істинно, якщо істинним є ОДНЕ
З висловлювань «Петров - лікар» АБО «Петров - шахіст». Як це використовується в Python? Розглянемо приклад комбінацій з
висловлювань: >>> 2> 4
False
>>> 45> 3
True
>>> 2> 4 and 45> 3# комбінація False and (І) True поверне False
False
>>> 2> 4 or 45> 3 # комбінація False or (АБО) True поверне True
True
>>>
Все, що ми сказали про комбінацію логічних висловлювань, можна об'єднати і представити у вигляді таблиці (Її називають таблицею істинності.) де 0 - False,а 1 - True.
10 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
Для Python істинним або хибним може бути не тільки логічне висловлювання, а й
об'єкт. Так, що ж таке істина в Python?
В Python будь-яке число, не рівне нулю, або непорожній об'єкт
інтерпретується як істина. Числа, рівні нулю, порожні об'єкти і спеціальний об'єкт None (Він має тип
NoneType) інтерпретуються як брехня.
Розглянемо приклад: >>> '' and 2 # False and True
''
>>> '' or 2 # False or True
2
>>>
Ми виконали логічну операцію and (І) для двох об'єктів: порожнього рядкового об'єкта (він буде хибним) і ненульового числового об'єкта (він буде істинним). В результаті Python повернув нам порожній рядковий об'єкт. У чому тут справа?
Потім ми виконали аналогічно операцію or (АБО). В результаті отримали числовий об'єкт. Будемо розбиратися.
У Python є три логічних оператора and, or, not. not з них найпростіший:
>>> y = 6> 8
>>> y
False
>>> not y
True
>>> not None
True
>>> not 2
False
>>>
Результатом застосування логічного оператора not (НЕ) відбудеться заперечення операнда, тобто якщо операнд істинний, то not поверне - брехня, якщо помилковий, то -
11 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
істину. Логічний оператор and (І) поверне True (істину) або False (брехня)24,якщо його
операндами є логічні висловлювання. >>> 2> 4 and 45> 3# комбінація False and True поверне False
False
>>>
Якщо операндами оператора and є об'єкти, то в результаті Python поверне об'єкт: >>> '' and 2 # False and True
''
>> >
Для обчислення оператора and Python обчислює операнди зліва направо і повертає перший об'єкт, який має помилкове значення.
Подивимося на стовпець and таблиці істинності. Яка закономірність? Якщо серед операндів (X, Y) є помилковий, то отримаємо помилкове значення, але замість помилкового значення для операндів-об'єктів Python повертає перший помилковий операнд, що зустрівся в вираженні, і далі обчислення НЕ виробляє. Це називається обчисленням по короткій схемі. >>> 0 and 3 # поверне перший помилковий об'єкт-операнд
0
>>> 5 and 4 # поверне крайній правий об'єкт-операнд
4
>>>
Якщо Python не вдається знайти помилковий об'єкт-операнд, то він повертає крайній правий операнд.
Логічний оператор or діє схожим чином, але для об'єктів-операндов Python
повертає перший об'єкт, який має справжнє значення. Python припинить подальші обчислення, як тільки буде знайдений перший об'єкт, який має справжнє значення. >>> 2 or 3 # поверне перший справжній об'єкт-операнд
2
>>> None or 5 # поверне другий об'єкт-операнд, тому що перший завжди
помилковий
5
>>> None or 0 # поверне об'єкт-операнд, що залишився
0
Таким чином, кінцевий результат стає відомий ще до обчислення решти виразу. Логічні вирази можна комбінувати:
>>> 1 + 3> 7 # пріоритет + вище, ніж>
False
>>> (1 + 3)> 7 # дужки сприяють наочності
12 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
False
>>> 1 + (3> 7) # подумайте, що поверне вираз і чому 1
>>>
В Python можна перевіряти приналежність інтервалу: >>> x = 0
>>> -5 <x <10 # еквівалентно: x> -5 and x <10
True
>>>
Тепер ви без зусиль зможете розібратися в роботі наступного коду: >>> x = 5 <10 # True
>>> y = 2> 3 # False
>>> x or y
True
>>> (x or y) + 6
7
>>>
Вирішимо невелике завдання . Як обчислити 1/x, щоб не виникало помилки ділення на нуль. Для цього достатньо скористатися логічним оператором.
Прямий шлях приводить до помилки:
>>> x = 0
>>> 1 / x
Traceback (most recent call last):
File "<pyshell # 88>", line 1, in
<module> 1 / x
ZeroDivisionError: division by zero
>>>
Відповіддю буде наступний код:
>>> x = 1
>>> x and 1 / x
1.0
>>> x = 0
>>> x and 1 / x
0
Як вправа подумайте, чому так можна зробити. Рядки в Python теж можна порівнювати по аналогії з числами. Почнемо здалеку.
Символи, як і все інше, представлено в комп'ютері у вигляді чисел. Є спеціальна таблиця, яка ставить у відповідність кожному символу деяке число.
Визначити, яке число відповідає символу можна за допомогою функції ord: >>> ord('L')
76
13 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
>>> ord('Ф')
1060
>>> ord('A')
65
>>>
Тепер порівняння символів зводиться до порівняно чисел, які їм відповідають: >>> 'A'> 'L'
False
>>>
Для порівняння рядків Python їх порівнює посимвольний: >>> 'Aa'> 'Ll'
False
>>>
Наступний корисний оператор, з яким ми познайомимося - in. Він перевіряє наявність підрядка в рядку: >>> 'a' in 'abc'
True
>>> 'A' in 'abc' # великої літери А немає
False
>>> "" in 'abc' # порожній рядок є в будь-якому рядку
True
>>> '' in ''
True
>>>
Освоївши логічні операції, перейдемо до їх використання.
2.3 Умовна інструкція if
Найбільш часто логічні вирази використовуються всередині умовної інструкції if:
14 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
Блок виразів виконується тільки в тому випадку, якщо вираз, яке знаходиться в
умові, є істинним. Для прикладу звернемося до таблиці з водневими показниками з Вікіпедії для
різних речовин.
Зробимо перевірку: >>> pH = 5.0
>>> if pH == 5.0:
print(pH, "Кава")
5.0 Кава
>>>
У прикладі змінної pH присвоюється дійсне значення 5.0.Потім значення змінної порівнюється з водневим показником для кави і, якщо вони збігаються, то викликається функція print.
Можна проводити кілька перевірок поспіль, і вони виконаються по черзі: >>> pH = 5.0
>>> if pH == 5.0:
print(pH, "Кава")
5.0 Кава
>>> if pH == 8.0:
print(pH, "Вода")
>>>
15 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
Часто зустрічаються завдання, де виконувати всі перевірки не має сенсу. Наступну програму наберіть і виконайте в окремому файлі (не забувайте про відступи для блоку виразів if, їх повинно бути чотири): pH = 3.0
if pH == 8.0:
print(pH, "Вода")
elif 7.36 <pH <7.44:
print( pH, "Кров")
У цій програмі використовується ключове слово elif (скорочення від else if), яке перевіряє умова 7.36 <pH<7.44,якщо pH == 8.0 виявилося неправдивим. Графічно це представлено на блок-схемі алгоритму, розташованої праворуч від програми.
Умовний вираз може включати безліч перевірок. Загальний синтаксис у нього
наступний:
Блок виразів, що відноситься до else, виконується, коли всі вищі умови повернули
False. Розглянемо першу велику програму (наберіть її і виконайте в окремому файлі):
pH = float(input("Введіть pH:")) # рядок перетворили до матеріального типу
if pH == 7.0:
print(pH , "Вода")
elif 7.36 <pH <7.44:
print(pH, "Кров")
else:
print("Що це?!")
Далі ще більше «складний» приклад (також запустите його в окремому файлі і стежте за відступами - в Python це надзвичайно важливо): value = input("Введіть pH:")
if len(value)> 0: # перевіряємо, що користувач хоч що-небудь ввів
pH = float(value) # переводимо в дійсне число введення користувача
if pH == 7.0: # в оженився if
print(pH, "Вода")
elif 7.36 <pH <7.44:
print(pH, "Кров")
else:
print("Що це?!")
else:
16 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
print("Введіть значення pH!")
Щоб навчитися програмувати - необхідно експериментувати: змінювати код, дописувати його і дивитися, що при цьому станеться. 2.4 Рядки документації
Згадайте, коли ми викликали функцію help(len), отримали довідкову інформацію для len. Звідки Python її бере? Відповідь - з самої функції.
Напишемо власну функцію, яка нічого не буде робити (в тілі функції для цього вказується слово pass),але яка гордо оголосить, що вона нічого не робить.
В окремому файлі наберіть і виконайте: def my_function():
""" Ми не робимо нічого, але документуємо.
Ні, правда, ця функція нічого не робить."""
Pass
help(my_function)
Результат запуску програми: ====== ======= RESTART: C: /Python35-32/1.py ==============
Help on function my_function in module main :
My_function ()
Ми не робимо нічого, але документуємо.
Ні, правда, ця функція нічого не робить.
>>>
В """ потрійні подвійні лапки в тілі функції поміщається інформація, яку виводить на екран функція help. Тепер ви можете додавати опис до власних функцій.
2.5 Модулі у Python
Наприклад, ви написали кілька корисних функцій, які часто використовуєте в своїх програмах. Щоб до них швидко звертатися, зручно всі ці функції помістити в окремий файл і завантажувати їх звідти. В Python такі файли з набором функцій називаються модулями. Для того щоб скористатися функціями, які знаходяться в цьому модулі, його необхідно імпортувати за допомогою команди import:
>>> import math
>>>
Ми завантажили в пам'ять стандартний модуль math (містить набір математичних функцій), тепер можна звертатися до функцій всередині цього модуля. Сила Python у величезній кількості стандартних і корисних модулів.
Звернутися до функції модуля (в даному випадку для знаходження квадратного кореня з 9) можна наступним чином:
>>> math.sqrt(9)
3.0
17 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
>>>
Ми вказуємо ім'я модуля, точку і ім'я функції з аргументами. Дізнатися про функції, які містить модуль, можна через довідку: >>> help(math)
Help on built-in module math:
NAME
math
DESCRIPTION
This module is always available. It provides access to the
mathematical functions defined by the C standard.
FUNCTIONS
acos(...)
acos(x)
Return the arc cosine (measured in radians) of x.
…
>>>
Якщо хочемо подивитися опис конкретної функції модуля, то викликаємо довідку
окремо для неї: >>> help(math.sqrt)
Help on built-in function sqrt in module math:
sqrt(...)
sqrt(x)
Return the square root of x.
>>>
У момент імпортування модуля math створюється змінна з ім'ям math:
>>> type(math)
<class 'module'>
>>>
Функція type показала, що тип даних змінної math - модуль. Змінна math містить посилання (адресу) модульного об'єкта. В цьому об'єкті містяться
посилання на функції (функціональні об'єкти):
18 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
У момент виклику функції sqrt Python знаходить змінну math (модуль повинен бути попередньо імпортовано), переглядає модульний об'єкт, знаходить функцію sqrt всередині цього модуля і потім виконує її.
В Python можна імпортувати окрему функцію з модуля:
>>> from math import sqrt
>>> sqrt(9)
3.0
>>>
Таким чином, Python не створюватиме змінну math, а завантажить в пам'ять тільки функцію sqrt. Тепер виклик функції можна робити, не звертаючись до імені модуля math. Тут треба бути вкрай уважним. Наведу приклад, чому: >>> def sqrt(x):
return x * x
>>> sqrt(5)
25
>>> from math import sqrt
>>> sqrt(9)
3.0
>>>
Ми створили власну функцію з ім'ям sqrt, потім викликали її і переконалися, що вона працює. Після цього імпортували функцію sqrt з модуля math. Знову викликали sqrt і бачимо, що це не наша функція! Її підмінили! Тепер інший приклад: >>> def sqrt(x):
return x * x
>>> sqrt(6)
36
>>> import math
>>> math.sqrt(9)
19 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
3.0
>>> sqrt(7)
49
>>>
Знову створюємо власну функцію з ім'ям sqrt і викликаємо її. Потім імпортуємо модуль math і через нього викликаємо стандартну функцію sqrt. Бачимо, що корінь квадратний вважається і наша функція залишилася в цілості. Висновки зробіть самостійно.
На самому початку занять ми викликали функції для роботи з числами, наприклад, abs для знаходження модуля числа. Насправді, ця функція теж знаходиться в модулі, який Python завантажує в пам'ять в момент початку роботи. Цей модуль називається __builtins__ (два нижніх підкреслення до і після імені модуля).
Якщо викликати довідку для даного модуля, то побачите, що там величезна кількість функцій і змінних: >>> help(_ builtins _)
Help on built-in module builtins:
NAME
builtins - Built-in functions, exceptions, and other
objects.
DESCRIPTION
Noteworthy: None is the `nil' object; Ellipsis represents
`...' in slices.
…
>>>
В Python є корисна функція dir, яка повертає перелік імен всіх функцій і змінних, що містяться в модулі: >>> dir( _builtins_ )
…
>>>
Частину з цих функцій ви вже знаєте, з іншими - ми познайомимося трохи пізніше.
20 Обчислювальна техніка та програмування 2. Об’єктно-орієнтоване програмування
2.6 Вправи до лекції 2
Вправа 2.1
Попросіть користувача ввести своє ім'я і після цього відобразіть на екрані рядок виду: Привіт, <ім'я>! Замість <ім'я> має зазначатися те, що користувач ввів з клавіатури. Як тебе звати?
Вася
Привіт, Вася! Вправа 2.2
Напишіть програму, яка визначить суму і добуток трьох чисел (типу int, float), введених з клавіатури.
Приклад роботи програми:
Введіть перше число: 1
Введіть друге число: 4
Введіть третє число: 7
Сума введених чисел: 12
Добуток введених чисел: 28
Вправа 2.3 Напишіть програму для визначення індексу маси тіла (BMI).
Вправа 2.4 Напишіть власну програму, яка визначить максимальне з двох введених чисел.
Реалізувати у вигляді виклику власної функції, що повертає більше з двох переданих їй чисел.
Вправа 2.5 Напишіть програму, яка перевіряє ціле число на парність. Реалізувати у вигляді виклику
власної функції.
Вправа 2.6 Напишіть програму, яка обчислює значення функції (на вхід подається дійсне число):
2 якщо 2,4 5,74 в іншому випадкуx xf
− =
Вправа 2.7
Напишіть програму, яка за кодом міста і тривалістю переговорів обчислює їх вартість і результат виводить на екран:
Київ - код 44, 1,5 грн/хв; Харків - код 57, 1,8 грн/хв; Львів - код 32, 1,3 грн/хв; Дніпро - код 56, 1,1 грн/хв.