Перейти до змісту

Перевірка типів даних

При перетворенні типів даних можуть виникнути такі помилки:

In [1]: int('a')
------------------------------------------------------
ValueError           Traceback (most recent call last)
<ipython-input-42-b3c3f4515dd4> in <module>()
----> 1 int('a')

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

Помилка логічна - ми намагаємося перетворити на десятковий формат рядок "a".

Така помилка може виникнути, наприклад, коли потрібно пройтись по списку рядків і перетворити на число кожен рядок. Щоб уникнути її, було б добре мати можливість перевірити, із чим ми працюємо. У Python є ряд методів і функцій, які дозволяють це перевірити.

isdigit

Наприклад, щоб перевірити, чи складається рядок з одних цифр, можна використовувати метод isdigit:

In [2]: "a".isdigit()
Out[2]: False

In [3]: "a10".isdigit()
Out[3]: False

In [4]: "10".isdigit()
Out[4]: True

isalpha

Метод isalpha дозволяє перевірити, чи складається рядок з одних літер:

In [7]: "a".isalpha()
Out[7]: True

In [8]: "a100".isalpha()
Out[8]: False

In [9]: "a--  ".isalpha()
Out[9]: False

In [10]: "a ".isalpha()
Out[10]: False

isalnum

Метод isalnum дозволяє перевірити, чи складається рядок із букв або цифр:

In [11]: "a".isalnum()
Out[1]: True

In [12]: "a10".isalnum()
Out[12]: True

type

Іноді, залежно від результату, бібліотека чи функція можуть повертати різні типи об'єктів. Наприклад, якщо об'єкт один, повертається рядок, якщо кілька, то повертається кортеж.

Відповідно нам треба побудувати хід програми по-різному, залежно від того, чи було повернуто рядок чи кортеж.

У цьому може допомогти функція type:

In [13]: type("string")
Out[13]: str

In [14]: type("string") == str
Out[14]: True

Аналогічно з кортежем (та іншими типами даних):

In [15]: type((1, 2, 3))
Out[15]: tuple

In [16]: type((1, 2, 3)) == tuple
Out[16]: True

In [17]: type((1, 2, 3)) == list
Out[17]: False