Как сделать проверку if на тип переменной?
Ну во-первых, оператор 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 - нужно подумать, что программа должна делать, если введено не число.
Во-первых, вы неправильно проверяете на тип, надо делать так if type(a1) is float 
Во-вторых, конечно, если у неё значения могут быть только "lknfmv", "1", "1.05", то она всегда будет строкой, а не float