Автор оригинала: Hassan Saeed.
Вступление
В этой статье мы рассмотрим несколько примеров того, как проверить, является ли переменная числом в Python.
Python динамически типизирован. Нет необходимости объявлять тип переменной при ее создании – интерпретатор выводит этот тип во время выполнения:
variable = 4 another_variable = 'hello'
Кроме того, переменная может быть переназначена новому типу в любой момент времени:
# Assign a numeric value variable = 4 # Reassign a string value variable = 'four'
Этот подход, хотя и имеет свои преимущества, также вводит нас в некоторые вопросы. А именно, когда мы получаем переменную, мы обычно не знаем, какого она типа. Если мы ожидаем число, но получаем переменную
, мы захотим проверить, является ли оно числом, прежде чем работать с ним.
Использование функции type()
Функция type()
в Python возвращает тип аргумента, который мы ей передаем, так что это удобная функция для этой цели:
myNumber = 1 print(type(myNumber)) myFloat = 1.0 print(type(myFloat)) myString = 's' print(type(myString))
Это приводит к:
Таким образом, способ проверки типа:
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) или 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
и пустые контейнеры вроде []
, {}
, набор()
, ()
, "
или ""
.
Следовательно, когда мы пишем или float
в нашем if
условии, это эквивалентно написанию или True
, которое всегда будет вычисляться как Правда
.
Следовательно, когда мы пишем || или float || в нашем || if || условии, это эквивалентно написанию || или True||, которое всегда будет вычисляться как || Правда || .
Хороший способ проверить, является ли переменная числом, – это модуль numbers
. Вы можете проверить, является ли переменная экземпляром класса Number
, с помощью функции isinstance()
:
import numbers variable = 5 print(isinstance(5, numbers.Number))
Это приведет к:
True
Примечание: Этот подход может неожиданно вести себя с числовыми типами вне ядра Python. Некоторые фреймворки могут иметь не- Числовую
числовую реализацию, и в этом случае этот подход будет ложно возвращать 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.