4. Конвертация типов данных

Функция type() возвращает тип объекта. Ее назначение очевидно, и на примерах можно понять, зачем эта функция нужна.

Также в этом материале рассмотрим другие функции, которые могут помочь в процессе конвертации типа данных. Некоторые из них — это int(), float() или str().

type() — это базовая функция, которая помогает узнать тип переменной. Получившееся значение можно будет выводить точно так же, как обычные значения переменных с помощью print.

Где используется

  • Функция type() используется для определения типа переменной.
  • Это очень важная информация, которая часто нужна программистам.
  • Например, программа может собирать данные, и будет необходимость знать тип этих данных.
  • Часто требуется выполнять определенные операции с конкретными типами данных: например, арифметические вычисления на целых или числах с плавающей точкой или поиск символа в строках.
  • Иногда будут условные ситуации, где с данными нужно будет обращаться определенным образом в зависимости от их типа.
  • Будет и много других ситуаций, где пригодится функция type().

Рекомендации по работе с типами данных

  1. Типы int и float можно конвертировать в str, потому что строка может включать не только символы алфавита, но и цифры.
  2. Значения типа str всегда представлены в кавычках, а для int, float и bool они не используются.
  3. Строку, включающую символы алфавита, не выйдет конвертировать в целое или число с плавающей точкой.

Примеры конвертации типов данных


>>> game_count = 21
>>> print(type(game_count))
<class 'int'>

В следующих материалах речь пойдет о более сложных типах данных, таких как списки, кортежи и словари. Их обычно называют составными типами данных, потому что они могут состоять из значений разных типов. Функция type() может использоваться для определения их типов также.


>>> person1_weight = 121.25
>>> print(type(person1_weight))
<class 'float'>

Функция int()

С помощью функции int() можно попробовать конвертировать другой тип данных в целое число.

В следующем примере можно увидеть, как на первой строке переменной inc_count присваивается значение в кавычках.

Из-за этих кавычек переменная регистрирует данные как строку. Дальше следуют команды print для вывода оригинального типа и значения переменной, а затем — использование функции int() для конвертации переменной к типу int.

После этого две функции print показывают, что значение переменной не поменялось, но тип данных — изменился.

Можно обратить внимание на то, что после конвертации выведенные данные не отличаются от тех, что были изначально. Так что без использования type() вряд ли удастся увидеть разницу.


>>> inc_count = "2256"
>>> print(type(inc_count))
>>> print(inc_count)
>>> inc_count = int(inc_count)
>>> print(type(inc_count))
>>> print(inc_count)
<class 'str'>
2256
<class 'int'>
2256

Функция float()

Функция float() используется для конвертации данных из других типов в тип числа с плавающей точкой.


>>> inc_count = "2256"
>>> print(type(inc_count))
>>> print(inc_count)
>>> inc_count = float(inc_count)
>>> print(type(inc_count))
>>> print(inc_count)
<class 'str'>
2256
<class 'float'>
2256.0

Функция str()

Как и int() с float() функция str() помогает конвертировать данные в строку из любого другого типа.


>>> inc_count = 2256
>>> print(type(inc_count))
>>> print(inc_count)
>>> inc_count = str(inc_count)
>>> print(type(inc_count))
>>> print(inc_count)
<class 'int'>
2256
<class 'str'>
2256

Советы:

  1. Не любой тип можно конвертировать в любой другой. Например, если строка состоит только из символов алфавита, то при попытке использовать с ней int() приведет к ошибке.
  2. Зато почти любой символ или число можно привести к строке. Это будет эквивалентно вводу цифр в кавычках, поскольку именно так создаются строки в Python.

Как можно увидеть в следующем примере, поскольку переменная состоит из символов алфавита, Python не удается выполнить функцию int(), и он возвращает ошибку.


>>> my_data = "Что-нибудь"
>>> my_data = int(my_data)
ValueError: invalid literal for int() with base 10: 'Что-нибудь'

Задачи к уроку

Попробуйте решить задачи к этому уроку для закрепления знаний.

1. Измените и дополните код, что бы переменная salary_type хранила результат функции type() со значением int.

# данный код
salary = "50000"
salary_type = 
print(salary_type)
# требуемый вывод:
# <class 'int'>

2. Исправьте ошибку в коде, что бы получить требуемый вывод.

# данный код
mark = int("5+")
print(mark, "баллов")
# требуемый вывод:
# 5+ баллов

3. Конвертируйте переменные и введите только целые числа через дефис.

# данный код
score1 = 50.5648
score2 = 23.5501
score3 = 96.560
print()
# требуемый вывод:
# 50-23-96

Файл со всем заданиями: https://gitlab.com/PythonRu/python-dlya-nachinayushih/-/blob/master/lesson_4.py.

Тест по конвертации типов данных

Пройдите тест к этому уроку для проверки знаний. В тесте 5 вопросов, количество попыток неограниченно.

Какой тип данных вернет этот код print(type(88))
Что выведет этот код:
price = 68.5
print(int(price))
Что выведет этот код:
x = int("2.6 odds")
print(x)
Как превратить дестичное число (5.5) в str?
Что выведет этот код: print(float(str(int(68.5))))

Если нашли ошибку, опечатку или знаете как улучшить этот урок, пишите на почту. Ее можно найти внизу сайта.

Подписывайтесь на канал в Дзене

Полезный контент для начинающих и опытных программистов в канале Лента Python разработчика — Как успевать больше, делать лучше и не потерять мотивацию.

Обучение Python и Data Science

Профессия Data Scientist

Профессия Data Scientist

11 520 5 760 ₽/мес.
Профессия Python-разработчик

Профессия Python-разработчик

7 820 3 910 ₽/мес.
Профессия Python Fullstack

Профессия Python Fullstack

7 820 3 910 ₽/мес.
Курс Аналитик данных с нуля

Курс Аналитик данных с нуля

6 500 3 900 ₽/мес.

Появились вопросы? Задайте на Яндекс.Кью

У сайта есть сообщество на Кью >> Python Q <<. Там я, эксперты и участники отвечаем на вопросы по python и программированию.