异常出现的直接原因即是,对于一个浮点数的字符('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'