找回密码
 立即注册
首页 python python-基础 查看内容

int()与base10的文字无效


尽管我很难解释我的问题,但这里是最好的:

我试图在第一步中确认先前创建的数组的某个位置是否为0并且用字符串替换该0。之后我想确认这个位置是否再次为0,如果不是,则将前一个字符串加入一个新字符串。

为了更好地理解,我将展示一段代码:
room1=np.array([["chair","table","book","computer","person"],[0,0,0,0,0]])


以上是数组(或矩阵)
if int(room1[1,k])==0:
     room1[1,k]=tipoObjF[1] #tipoObjF[1] being the string I want to replace the 0
else:
     room1[1,k]=room1[1,k]+tipoObjF[1]


这就是我之前提到的我要做的事情:检查某个位置是否为0,如果是,请用String替换它。否则只需加入两个字符串。

当我运行它时出现以下错误:
ValueError: invalid literal for int() with base10: 'chair1'


我希望我能够正确解释我的问题。这个错误出现在我正在使用ROS的项目中,而chair1是第一个替换0的东西,应该在else语句中加入,使得Chair1Chair1成为我期待的结果。

提前感谢愿意提供帮助的人。

编辑:最后,数组应如下所示:
room1=np.array([["chair","table","book","computer","person"],["chair1chair",0,0,0,0]])


解决方法


如果试图施放room[1,k]到int 之后的元素已经被换成非整数字符串,你不能调用int()它的任何更长的时间。例如,int("chair1chair")抛出您看到的错误。

因为值可能是int或者string,您可以通过比较字符串值来开始,例如:
if str(room[1,k]) == "0": ...


这样做允许str(0) == "0"返回True但也str("hello") == "0"返回False。


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册