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'

 

posted on 2018-06-05 21:17  蔡军帅  阅读(1014)  评论(0编辑  收藏  举报