Как проверить, что данные являются 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
Вернуться на верх