Как проверить, что данные являются int, float в python
Я знаю, что подобные вопросы уже задавались и на них давались ответы, например, здесь: Как проверить, является ли строка числом (float или Int ) в Python?
Однако это не дает ответа, который я ищу. Я пытаюсь сделать следующее:
def is_int_or_float(s):
try:
a = float(s)
return 1 if s.count('.')==0 else 2
except ValueError:
return -1
val = input("Enter your value: ")
data = is_int_or_float(val)
print(data)
Что если пользователь введет => "22" # Тогда вышеприведенный код выдаст -1.Пожалуйста, помогите мне решить это с помощью обработки исключения (сообщение пользователя)
Один из способов проверки, например, целого числа, использовать isinstance:
x = 1
if isinstance(x, int):
# Do something
Попробуйте это:
def is_int_or_float(value):
try:
tmp = float(value)
return 1 if tmp.is_integer() else 2
except ValueError:
return -1
И тестирование:
>>> is_int_or_float("a")
-1
>>> is_int_or_float("22")
1
>>> is_int_or_float("22.646")
2
>>> is_int_or_float("22.64.6")
-1
>>> is_int_or_float("22.000")
1
>>> is_int_or_float("1e-4")
2
Для этого можно создать простую ручку.
Проверьте код. Вам необходимо реализовать логику обработки исключений.
class AbstractHandler:
def is_float(self):
raise NotImplementedError
def is_int(self):
raise NotImplementedError
def verify(self):
raise NotImplementedError
class Handler(AbstractHandler):
def is_float(self, number):
try:
float(number)
return True
except ValueError:
# Your exception handler here
return False
def is_int(self, number):
try:
int(number)
return True
except ValueError:
# Your exception handler here
return False
def verify(self, var):
if self.is_float(var) or self.is_int(var):
return True
else:
return False
def is_number(var):
"""
Verify if input is a instance of int or float
Args:
var (str): input to be verified
"""
handler = Handler()
return handler.verify(var)
Некоторые тесты:
1 is True
1.1 is True
1.1.1 is False