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'