出错语句 ValueError: invalid literal for int() with base 10: ‘123a’
问题解决思路:
(1)问题分析 首先对于语句的错误大概意思为 值错误,对于int()类型进行无效的迭代。‘:’后面的为输入’xxx’导致值迭代出现错误的原因 ;
(2)解决办法 寻找可进行int()类型转换,了解到int()只能转化由纯数字组成的字符串。(如下图1)
图1 错误示例
(3)解决方案
1:分析对值进行int()类型的强制转换是否是必须的,若无关,则可以将int()类型删去
2:当输入的字符型中有小数点时(如图2),如下图‘12.3’,或者另一种‘[1,2,3,4]’数组形式。可以通过eval()函数,可以将字符串str当成有效的表达式来求值并返回计算结果。
对于包含小数点的字符,另外一种解决方案 ,首先利用float将其变成浮点型,然后进行强制int()变换
图2 当字符传含有小数点时
改正结果:
a=‘12.3’ #输入的为带小数点的数 类型str
type(a)
<class ‘str’>b=eval(a) #通过eval()进行将str内容进行有效的内容进行返回
type(b)
<class ‘float’>print(b) #得到浮点型数据 12.3
12.3print(int(b)) #进行强制int型转换
12c=float(a)
print( c)
12.3type( c)
<class ‘float’>print(int( c))
12