@Velays

Как сделать проверку if на тип переменной?

есть переменная "a" она типа str, в ней могут быть такие значения: "lknfmv", "1", "1.05".

я делаю проверку так:
try:
     a1 = float(a)
exept:
    pass


if a1 is float:
    print("a1 теперь float")
else:
    print("a1 не float")


мне постоянно выводит "a1 не float" не зависимо от того какое значение у переменной
  • Вопрос задан
  • 724 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну во-первых, оператор 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 - нужно подумать, что программа должна делать, если введено не число.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Lord_of_Rings
@Lord_of_Rings
Python developer
Во-первых, вы неправильно проверяете на тип, надо делать так if type(a1) is float
Во-вторых, конечно, если у неё значения могут быть только "lknfmv", "1", "1.05", то она всегда будет строкой, а не float
Ответ написан
@wintreist
if type(a1) == float
Ответ написан
Комментировать
@Kaladdin
if a.isdigit():
print('это число')
else:
try:
float(a)
print("это флоат")
except:
print("это строка")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы