Вступление
В этой статье мы рассмотрим несколько примеров того, как проверить, является ли переменная числом в 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.