我写了一些代码:
def ICP(x):
numofrepeat=0
warning=0
while numofrepeat<len(str(x)) or (x[numofrepeat]==2) or (x[numofrepeat]==3) or (x[numofrepeat]==5) or (x[numofrepeat]==7):
if (x[numofrepeat]==0):
warning=warning+1
if warning>1:
numofrepeat=len(x)+1
if warning>1:
return("false")
else:
return("true")
运行后,Python给了我一个错误:
TypeError: 'int' object is not subscriptable
我该怎么办?
我知道,那个:
ICP(121)的结果是正确的。 ICP(999)的结果是错误的。
完整错误:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
ICP(999)
File "<location>", line 5, in ICP
if (x[numofrepeat]==0):
TypeError:&#39; int&#39;对象不可订阅 在这里输入代码
答案 0 :(得分:1)
问题应该从错误中看起来很清楚:
TypeError:'int'对象不可订阅
int
类型的对象既不可迭代也不可可订阅。我真的不知道你为什么要索引x
,因为你显然传递了一个整数。
您可以直接测试整数:
x==2 or x==3 or x==5 or x==7
如果x
是一个包含多个数字的整数,并且您打算在订单中测试数字,则可以执行以下操作:
x_str = str(x)
x_str[numofrepeat]=='2' or x_str[numofrepeat]=='3' or x_str[numofrepeat]=='5' or x_str[numofrepeat]=='7'
通过此转换为字符串,x
变为可订阅,只要numofrepeat
不大于或等于x
的长度,索引就会起作用。