0 знаков
10. Преобразование и проверка типов в Python
Кратко- В предыдущем уроке рассмотрены условные инструкции
if/elif/else
в Python.- Умение преобразовывать типы является полезным навыком при работе с языком с сильной типизацией.
- Рассмотрены 7 функций для преобразования типов:
int()
,bin()
,hex()
,list()
,set()
,tuple()
иstr()
.- Функции
bin()
иhex()
возвращают результат в виде строки.- Списки могут быть преобразованы только в итерируемые объекты.
- Функция
set()
используется для преобразования строки или другого итерируемого объекта во множество.- При преобразовании типов могут возникнуть проблемы, такие как ошибки проверки типов.
- Метод
isdigit()
используется для проверки строки на наличие только цифр.- Функция
type()
возвращает тип объекта, переданного в параметре.
Введение
В предыдущем уроке мы познакомились с условной инструкцией if/elif/else
в Python. Хотя мы уже касались преобразования типов в уроке про типы данных, и вы на практике ощутили их необходимость для языка с сильной типизацией, давайте все равно еще раз рассмотрим и научимся проверять их, чтобы избежать нелепых ситуаций при преобразовании из одного типа в другой.
Преобразование типов
Рассмотрим 7 функций: int()
, bin()
, hex()
, list()
, set()
, tuple()
и str()
.
Чтобы преобразовать строку в число, воспользуйтесь функцией int()
:
a = int('20')
type(a) # => <class 'int'>
С помощью функции int()
можно преобразовать число, записанное двоичным форматом, в десятичную запись:
a = int('110011', 2)
a # => 51
Преобразовать десятичное число в двоичный формат можно при помощи функции bin()
:
a = bin(20)
a # => 0b10100
Аналогично можно преобразовать в шестнадцатеричный формат при помощи функции hex()
:
a = hex(20)
a # => 0x14
Обратите внимание, функции bin()
и hex()
возвращают результат в виде строки.
Мы еще не рассматривали списки (они будут рассмотрены далее), но все равно рассмотрим, как преобразовать строку в список:
a = list('Hello')
a # => ['H', 'e', 'l', 'l', 'o']
Обратите внимание, в список можно преобразовывать только итерируемые объекты (строки, кортежи, словари, файлы), т.е. те объекты, которые могут возвращать элементы по одному. Сейчас это может быть не совсем понятно, но далее все прояснится.
Для преобразования строки (или другого итерируемого объекта) во множество, используйте функцию set()
:
a = set('Hello, World')
a # => {'H', 'd', 'l', 'o', ' ', 'W', 'r', ',', 'e'}
Напомню, множество – это изменяемая, неупорядоченная последовательность уникальных элементов. Далее пример, как получить все уникальные элементы списка:
a = set([1, 1, 2, 2, 3, 3, 3, 3, 3, 5])
a # => {1, 2, 3, 5}
Для преобразования объекта в кортеж, существует функция tuple()
:
a = tuple([1, 2, 3, 4, 5])
a # => (1, 2, 3, 4, 5)
Напомню, кортеж – это неизменяемый список.
И последняя функция str()
, для преобразования объекта в строку:
a = str(10)
print("Ответ: " + a) # => Ответ: 10
Проверка типов
При преобразовании типов могут возникнуть проблемы, например:
a = list(10) # => TypeError: 'int' object is not iterable
Или такая:
a = int('b') # => invalid literal for int() with base 10: 'b'
Проблема кажется надуманной. Но все же иногда возникает необходимость проверить, с каким типом данных мы работаем. Например, вам нужно пройтись по списку строк и преобразовать все элементы, содержащие числа, в числовой тип. Для этих целей есть метод isdigit()
. Метод isdigit()
вернет True
, если строка состоит только из цифр:
'a'.isdigit() # => False
'20a'.isdigit() # => False
'20'.isdigit() # => True
Чтобы проверить строку на наличие в своем составе только букв, используйте метод isalpha()
.
'a'.isalpha() # => True
'20a'.isalpha() # => False
И последний метод isalnum()
, который проверяет, состоит ли строка из цифр или букв.
Часто, исходя из полученного результата (строка, число, список и т.д.) необходимо строить ход программы с использованием условной конструкции, о которой вы узнали в предыдущем уроке:
a = 'Hello'
a = list(a)
if (type(a) == str):
print('Строка')
elif (type(a) == list):
print('Список)
В этом помогает функция type()
, которая возвращает тип объекта, переданного в параметре.
В этом уроке мы еще раз повторили преобразование одних типов в другие и научились определять тип переменной для последующей корректной ее обработки.
В следующем уроке научимся вызывать методы Python цепочкой.
Тест
Похожие уроки Codebra
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ