Ну во-первых, оператор is проверяет
идентичность объектов. Учи язык.
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True - списки имеют одинаковое содержимое
print(a is b) # False - a и b ссылаются на разные объекты-списки, а не на один и тот же.
Если тебе нужно узнать, содержит ли переменная ссылку на объект указанного типа, используй isinstance().
a = 1
b = 1.0
print(isinstance(a, int), isinstance(a, float)) # True False - a это int, но не float
print(isinstance(b, int), isinstance(b, float)) # False True - b это не int, это float
print(isinstance(a, (int, float))) # True - a является чем-то из двух: или int, или float
Но это работает только для значений корректного типа - это НЕ позволит проверить, содержит ли строка корректное представление числа, к примеру. Для этого либо используй try-except, либо регулярные выражения. Только вот в except не стоит писать pass - нужно подумать, что программа должна делать, если введено не число.