for a in y:
if a == '.' or a == ',':
num1 = float(y)
else:
num1 = int(y)
тестирует все символов строки и преобразует в число с плавающей точкой, если находит точку или запятую, в противном случае он преобразуется в целое число.
Это означает, что он будет преобразован несколько раз(неправильно) целое число или число с плавающей точкой.
Только не делайте этого.Используйте метод try и catch, начиная с наиболее ограниченного типа, который является int
, поскольку float
также принимает целое число:
try:
num1 = int(y)
except ValueError:
try:
num1 = float(y)
except ValueError:
print("{} isn't an int or float".format(num1)
raise
Пусть python выполнит для вас анализ (который может быть сложным)особенно в случае с плавающей точкой с показателями, знаками ...)
(обратите внимание, что 1,45
не является действительным с плавающей точкой, если вы не выполните num1 = num1.replace(",",".")
)