Найти в Дзене
Будни питониста

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

Как уже отмечалось ранее, функция type() позволяет определить тип переменной. Например:

>>> а = "1"

>>> type(a)

<class ‘str’>

>>>

Данную функцию можно использовать не только для вывода типа, но и для сравнения возвращаемого нею значения с названием типа данных:

>>> if type(a) == str:

print("String");

String

Иногда нужно преобразовать один тип данных в другой. Эта операция называется приведением типа. Стоит отметить, что далеко не всегда можно преобразовать один тип данных в другой без потери самих данных. Некоторые типы данных вообще не совместимы. Например, никак нельзя преобразовать вещественное число в целое без потери данных. А при преобразовании строки в число вы вообще увидите сообщение об ошибке:

>>> int("String")

Traceback (most recent call last):

File "<pyshel#60>", line 1, in <module>

int("String")

ValueError: invalid literal for int() with base 10:

'String'

Ниже перечислены функции приведения типов, а также примеры их использования.

Функции приведения типов:

Функция - Описание – Пример

bool() - Преобразование объекта в логический тип данных >>> bool(1) True

int() - Преобразование объекта в целое число. Обратите внимание: дробная часть потеряна >>> int(5.5) 5

float() - Преобразование целого числа в вещественное >>> float(5) 5.0

str() - Преобразование объекта в строку >>> str ( [5, 4' 3]) '[5, 4, 3]'

bytes() - Преобразует строку в объект типа bytes(). Первый параметр - это строка, второй - кодировка, третий параметр необязательный и может указывать способ обработки ошибок (strict, replace, ignore) >>> bytes("String", "utf-8") b'String'

bytearray() - Преобразует строку в объект типа bytearray >>> bytearray("Hello", "utf-8") bytearray(b'Hello')

list() - Используется для преобразования последовательности в список >>> list("Hello") [ 'Н', 'е', , l', 'l', 'о']

tuple() – Преобразует последовательность в кортеж >>> tuple("Hello") ( 'Н', 'е', 'l', 'l', 'о')

Зачем необходимо преобразование типов, если в Python используется динамическая типизация и типы приводятся автоматически? Далеко не всегда функции возвращают значения в ожидаемом типе. Представим, что нам нужно написать простейшую программу, вычисляющую сумму двух чисел, введенных пользователем:

х = inрut("Введите х = \n")

у= inрut("Введите у \n")

print (х + у)

input ()

Запустите программу и введите числа 5 и 7. Хотя вы ввели числа, функция input() всегда возвращает введенное значение, как строку. В результате вместо числа 12 вы увидели строку 57 (рисунок).

Неожиданный результат работы программы
Неожиданный результат работы программы

Изменим программу так:

х = float(input("Bвeдитe х = \n"))

у= float(input("Bвeдитe у \n"))

print (х + у)

nput ()

Здесь мы приводим введенное пользователем значение к типу float, а затем вычисляем сумму двух вещественных чисел. В результате получаем значение 15.0, что соответствует нашим ожиданиям (рисунок).

Теперь программа работает, как нужно
Теперь программа работает, как нужно

Наука
7 млн интересуются