Перетворення типів даних у Python
Перетворення типів
Часто виникає необхідність перейти від одного типу даних до іншого. Наприклад, число, яке виводиться на екран, спочатку може знадобитися перетворити в текст. Цю операцію за вас виконує команда print, але бувають ситуації, коли потрібно поміняти тип без виведення інформації на екран або здійснити перетворення рядка в число (таке перетворення команда print виконувати не вміє). Ця операція називається перетворенням типів (type conversion). Яким чином вона реалізується? Насправді інтерпретатор Python не «перетворює» типи один в одного. Він створює з вихідного елемента новий елемент потрібного вам типу. Ось ряд функцій, які вміють виконувати цю операцію:
- float () створює нове число з плаваючою точкою (десяткове) з рядка або цілого числа.
- int () створює нове ціле число з рядка або числа з плаваючою крапкою.
- str () створює новий рядок з числа (або значення будь-якого іншого типу).
Дужки в кінці вказують, що перед нами не команди мови Python (такі як print), а вбудовані в нього функції. Детально функції будуть розглянуті трохи пізніше, а на даному етапі вам досить знати, що значення яке підлягає перетворенню вказується в дужках. Найкраще помітно це на прикладах. Розглянемо їх в інтерактивному режимі оболонки IDLE.
Перетворення цілого в десяткове
Візьмемо ціле число і за допомогою функції float () створимо на його основі число з плаваючою точкою:
>>> a = 12
>>> b = float(a)
>>> a
12
>>> b
12.0
Зверніть увагу на десяткову точку і завершальний 0 при виведенні змінної b. Саме за цими ознаками ми бачимо, що перед нами не ціле, а десяткове число. При цьому змінна a не змінюється, так як на початкове значення функція float () не впливає - вона створює нове значення. В інтерактивному режимі досить ввести ім'я змінної (без команди print), і інтерпретатор Python виведе на екран її значення. (Ви вже робили так) Однак в програмах це не працює.
Перетворення десяткового в ціле
Тепер спробуємо зробити зворотний перехід - візьмемо десяткове число і за допомогою функції int () отримаємо з нього ціле:
>>> c = 36.6
>>> d = int(c)
>>> c
36.6
>>> d
36
Ми створили нову змінну d, яка представляє собою цілу частину змінної c.
Розглянемо ще один приклад:
>>> e = 99.98
>>> f = int(e)
>>> e
99.98
>>> f
99
Незважаючи на те що 99.98 - це майже 100, відповідь буде 99. Функція int() не виконує округлення, а просто відкидає дробову частину. Тому вона дає нам не найближче ціле, а менше з двох цілих.
Перетворення рядків у числа з плаваючою точкою
Отримати з рядка число можна наступним чином:
>>> a = '36.6'
>>> b = float(a)
>>> a
'36.6'
>>> b
36.6
Зверніть увагу, що змінна a виводиться в лапках. Так інтерпретатор Python показує, що це рядок. А для змінної b виводиться значення з плаваючою точкою.
Отримуємо додаткову інформацію
Раніше, за наявністю лапок ми визначали, що саме перед нами - число або рядок. Але це можна дізнатися і іншим способом. В Python існує функція type (), що повідомляє в явному вигляді тип змінної. Подивимося, як вона працює:
>>> a = '36.6'
>>> b = 36.6
>>> c = 36
>>> type(a)
<class 'str'>
>>> type(b)
<class 'float'>
>>> type(c)
<class 'int'>
Функція type () для змінної a виводить class 'str', що відповідає рядку, для змінної b - class 'float', а , для змінної c - class 'int'. Вам більше не потрібно нічого вгадувати!
Помилки при перетворенні типів
Якщо дати функції int () або float () щось відмінне від числа, вона не спрацює. Переконайтеся самі:
>>> print(float('Hello!'))
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
print(float('Hello!'))
ValueError: could not convert string to float: 'Hello!'
Ми отримали повідомлення про помилку, в якому говориться, що інтерпретатор Python не знає, як перетворити рядок "Hello!" в число. А ви знаєте?
(Джерело: http://nikolay.in.ua/navchaemos/python-3/612-tipi-danikh-funktsiji-peretvorennya-tipiv-operatsiji-z-chislovimi-tipami)
Немає коментарів:
Дописати коментар