python(ValueError: invalid literal for int() with base 10: 'abc' ‘1.0‘’’)强制类型转换

int()函数只能转化数字组成的字符串,看例子:

>>> a='123'
>>> int(a)
123
>>> b='abc'
>>> int(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'

另一种把小数转成整数

异常出现的直接原因即是,对于一个浮点数的字符('1.4'),直接使用 int 进行强制类型转换:

>>> int('1.5')
ValueError: invalid literal for int() with base 10: '1.5'
>>> int('1.0')
ValueError: invalid literal for int() with base 10: '1.0'

也即,使用 int 对一个字符类型的数据进行强制类型转换,要求改字符类型只能为整数,不能为浮点数。

所以一种稳妥的做法:

>>> int(float('1.5'))
1

显然,我们不会直接对这样的数据类型进行 int 强转,然而程序的潜在逻辑却令被转换的数据的类型,不那么直,也即我们并不知道它是'1.5'还是1,所以使用 int 对字符进行强转,一定要格外的小心。

再次强调下面的情况:

>>> int('1.0')
ValueError: invalid literal for int() with base 10: '1.0'
原文地址:https://www.cnblogs.com/caiyishuai/p/9141965.html