Рубрики
Без рубрики

Python: Проверьте, является ли переменная числом

В этом уроке мы рассмотрим три примера того, как проверить, является ли переменная числом в Python. Это функция type (), модуль numbers и подход try-catch.

Автор оригинала: 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.