Преобразование типов данных в Python 3

Типы данных в Python позволяют классифицировать данные, определить значения, которые можно присвоить, и операции, которые можно выполнить с этими данными. В программировании бывает необходимо конвертировать один тип данных в другой, чтобы получить доступ к другим функциям: например, склеить числовые значения со строками или представить целые числа в виде десятичных.

Данное руководство научит вас преобразовывать числа, строки, кортежи и списки.

Читайте также: Типы данных в Python 3

Преобразование числовых типов

В 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:

Добавить комментарий