ValueError: invalid literal for int() with base 10: '123a'

出错语句 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.3

print(int(b)) #进行强制int型转换
12

c=float(a)
print( c)
12.3

type( c)
<class ‘float’>

print(int( c))
12

eval()函数的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值