Преобразование типов данных в Python 3
Python | Комментировать запись
Типы данных в Python позволяют классифицировать данные, определить значения, которые можно присвоить, и операции, которые можно выполнить с этими данными. В программировании бывает необходимо конвертировать один тип данных в другой, чтобы получить доступ к другим функциям: например, склеить числовые значения со строками или представить целые числа в виде десятичных.
Данное руководство научит вас преобразовывать числа, строки, кортежи и списки.
Преобразование числовых типов
В Python существует два числовых типа данных: целые числа и числа с плавающей точкой. Для преобразования целых чисел в числа с плавающей точкой и наоборот Python предоставляет специальные встроенные методы.
Преобразование целых чисел в числа с плавающей точкой
Метод float() преобразовывает целые числа в числа с плавающей точкой. Число указывается в круглых скобках:
float(57)
Это преобразует число 57 в 57.0.
Также можно использовать переменные. Объявите переменную f = 57, а затем выведите число с плавающей точкой:
f = 57
print(float(f))
57.0
Преобразование чисел с плавающей точкой в целые числа
Встроенная функция int() предназначена для преобразования чисел с плавающей точкой в целые числа.
Функция int() работает так же, как и float(). Чтобы преобразовать число, добавьте его в круглые скобки:
int(390.8)
Число 390.8 преобразуется в 390.
Эта функция также может работать с переменными. Объявите переменные:
b = 125.0
c = 390.8
Затем преобразуйте и отобразите их:
print(int(b))
print(int(c))
125
390
Чтобы получить целое число, функция int() отбрасывает знаки после запятой, не округляя их (потому 390.8 не преобразовывается в 391).
Преобразование чисел с помощью деления
При делении Python 3 может преобразовать целое число в число с плавающей точкой (в Python 2 такой функции нет). К примеру, разделив 5 на 2, вы получите 2.5.
a = 5 / 2
2.5
Python не преобразовывает тип данных во время деления; следовательно, деля целое число на целое число, в результате вы получили бы целое число, 2.
Читайте также: Python 2 vs Python 3: краткий обзор и практические соображения
Преобразование строк
Строка – это последовательность из одного или больше символов (цифр, букв и других символов). Строки – очень распространённый тип данных в программировании. Существует много способов преобразования строк.
Читайте также: Основы работы со строками в Python 3
Преобразование чисел в строки
Чтобы конвертировать число в строку, используйте метод str(). Поместите число или переменную в круглые скобки.
Попробуйте преобразовать целое число, например:
str(12)
Запустив метод str(12) в интерактивной оболочке Python (с помощью команды python), вы получите вывод:
'12'
Кавычки означают, что теперь 12 является строкой, а не числом.
Особенно полезно преобразовывать числа в строки, используя переменные. К примеру, можно отследить, сколько строк кода в день пишет тот или иной пользователь. Если пользователь пишет больше 50 строк, программа отправит ему поощрительное сообщение.
user = "Michael"
lines = 50
print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")
Запустив этот код, вы получите ошибку:
TypeError: Can't convert 'int' object to str implicitly
Python не может склеивать строки с числами, потому нужно преобразовать значение lines в строку.
user = "Michael"
lines = 50
print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")
Теперь, запустив код, вы увидите:
Congratulations, Michael! You just wrote 50 lines of code.
Метод str() может преобразовать в строку и число с плавающей точкой. Поместите в круглые скобки число или переменную:
print(str(421.034))
f = 5524.53
print(str(f))
421.034
5524.53
Попробуйте выполнить конкатенацию строки и преобразованного в строку числа:
f = 5524.53
print("Michael has " + str(f) + " points.")
Michael has 5524.53 points.
Преобразование строк в числа
Строки можно преобразовать в числа с помощью методов int() и float()
Если в строке нет десятичных знаков, лучше преобразовать её в целое число. Для этого используется int().
Попробуйте расширить предыдущий пример кода, который отслеживает количество написанных строк. Пусть программа отслеживает, сколько строк пишет пользователь каждый день.
lines_yesterday = "50"
lines_today = "108"
lines_more = lines_today - lines_yesterday
print(lines_more)
TypeError: unsupported operand type(s) for -: 'str' and 'str'
При запуске возникла ошибка, поскольку Python не может выполнить сложение строк. Преобразуйте строки в числа и попробуйте снова запустить программу:
lines_yesterday = "50"
lines_today = "108"
lines_more = int(lines_today) - int(lines_yesterday)
print(lines_more)
58
Значение переменной lines_more – это число, в данном случае это 58.
Также можно преобразовать числа в предыдущем примере в числа с плавающей точкой. Для этого используйте метод float() вместо int().
К примеру, очки начисляются в десятичных значениях.
total_points = "5524.53"
new_points = "45.30"
new_total_points = total_points + new_points
print(new_total_points)
5524.5345.30
В данном случае оператор + склеивает две строки, а не складывает числа. Потому в результате получилось довольно странное значение.
Конвертируйте эти строки в числа с плавающей точкой, а затем выполните сложение.
total_points = "5524.53"
new_points = "45.30"
new_total_points = float(total_points) + float(new_points)
print(new_total_points)
5569.83
Как видите, теперь программа возвращает ожидаемый результат.
Если вы попробуете преобразовать строку с десятичными значениями в целое число, вы получите ошибку:
f = "54.23"
print(int(f))
ValueError: invalid literal for int() with base 10: '54.23'
Преобразование в кортежи и списки
Чтобы преобразовать данные в кортеж или список, используйте методы tuple() и list() соответственно. В Python:
- Список – это изменяемая упорядоченная последовательность элементов, взятая в квадратные скобки ([ ]).
- Кортеж – неизменяемая упорядоченная последовательность элементов, взятая в круглые скобки.
Преобразование списка в кортеж
Преобразовывая список в кортеж, вы можете оптимизировать программу. Для преобразования в кортеж используется метод tuple().
print(tuple(['pull request', 'open source', 'repository', 'branch']))
('pull request', 'open source', 'repository', 'branch')
Выведенные на экран данные являются кортежем, а не списком, поскольку они взяты в круглые скобки.
Попробуйте использовать tuple() с переменной:
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
('shark', 'cuttlefish', 'squid', 'mantis shrimp')
В кортеж можно преобразовать любой итерируемый тип, включая строки:
print(tuple('Michael'))
('M', 'i', 'c', 'h', 'a', 'e', 'l')
Конвертируя в кортеж числовой тип данных, вы получите ошибку:
print(tuple(5000))
TypeError: 'int' object is not iterable
Преобразование в списки
Вы можете преобразовать кортеж в список, чтобы сделать его изменяемым.
Обратите внимание: при этом в методах list() и print() используется две пары круглых скобок. Одни принадлежать собственно методу, а другие – кортежу.
print(list(('blue coral', 'staghorn coral', 'pillar coral')))
['blue coral', 'staghorn coral', 'pillar coral']
Если данные, которые вывел метод print, заключены в квадратные скобки, значит, кортеж преобразовался в список.
Чтобы избежать путаницы с круглыми скобками, можно создать переменную:
coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)
Строки тоже можно преобразовывать в списки:
print(list('Michael'))
['M', 'i', 'c', 'h', 'a', 'e', 'l']
Заключение
Теперь вы умеете преобразовывать различные типы данных Python с помощью встроенных методов, благодаря чему код вашей программы может стать более гибким.
Tags: Python 3