Вступление
В этой статье мы рассмотрим несколько примеров того, как проверить, является ли переменная числом в Python.
Python имеет динамическую типизацию. Нет необходимости объявлять тип переменной при ее создании - интерпретатор определяет тип во время выполнения:
variable = 4
another_variable = 'hello'
Кроме того, переменную можно переназначить новому типу в любой момент времени:
# Assign a numeric value
variable = 4
# Reassign a string value
variable = 'four'
Этот подход, имея преимущества, также знакомит нас с несколькими
проблемами. А именно, когда мы получаем переменную, мы обычно не знаем,
какого она типа. Если мы ожидаем число, но получаем variable , мы
захотим проверить, является ли это числом, прежде чем работать с ним.
Использование функции type ()
Функция type() в Python возвращает тип аргумента, который мы передаем
ей, поэтому это удобная функция для этой цели:
myNumber = 1
print(type(myNumber))
myFloat = 1.0
print(type(myFloat))
myString = 's'
print(type(myString))
Это приводит к:
<class 'int'>
<class 'float'>
<class 'str'>
Таким образом, способ проверки типа:
myVariable = input('Enter a number')
if type(myVariable) == int or type(myVariable) == float:
# Do something
else:
print('The variable is not a number')
Здесь мы проверяем, является ли тип переменной, введенной пользователем,
int или float , продолжая выполнение программы, если это так. В
противном случае мы уведомляем пользователя о том, что он ввел
нечисловую переменную. Имейте в виду, что если вы сравниваете несколько
типов, например int или float , вы должны использовать type()
оба раза.
Если бы мы просто сказали if type(var) == int or float , что, казалось
бы, нормально, возникла бы проблема:
myVariable = 'A string'
if type(myVariable) == int or float:
print('The variable a number')
else:
print('The variable is not a number')
Это, независимо от ввода, возвращает:
The variable is a number
Это потому, что Python проверяет значения истинности утверждений.
Переменные в Python могут быть оценены как True за исключением False
, None , 0 и пустых контейнеров, таких как [] , {} , set() ,
() , '' или "" .
Следовательно, когда мы пишем or float в нашем if , это эквивалентно
написанию or True которое всегда будет оцениваться как True .
числа.
Хороший способ проверить, является ли переменная числом, - это модуль
numbers Вы можете проверить, является ли переменная экземпляром
Number , с помощью функции isinstance() :
import numbers
variable = 5
print(isinstance(5, numbers.Number))
Это приведет к:
True
Примечание. Этот подход может неожиданно работать с числовыми типами
вне ядра Python. Определенные структуры могут иметь не- Number
реализации числовой, в этом случае этот подход будет ложно возвращать
значение False .
Использование блока try-except
Другой способ проверить, является ли переменная числом, - использовать
блок try-except. В блоке try мы приводим данную переменную к int или
float . Успешное выполнение try означает, что переменная является
числом, т.е. int или float :
myVariable = 1
try:
tmp = int(myVariable)
print('The variable a number')
except:
print('The variable is not a number')
Это работает как для int и для float потому что вы можете привести
int к float и float к int .
Если вы конкретно хотите только проверить, является ли переменная одной
из них, вам следует использовать функцию type()
Заключение
Python - это язык с динамической типизацией, что означает, что мы можем получить тип данных, отличный от того, который мы ожидаем.
В тех случаях, когда мы хотим принудительно применять типы данных, стоит проверить, имеет ли переменная желаемый тип. В этой статье мы рассмотрели три способа проверить, является ли переменная числом в Python.