Python - TypeError:' int'对象不可订阅

时间:2016-07-01 11:38:16

标签: python python-3.x

我写了一些代码:

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;对象不可订阅     在这里输入代码

1 个答案:

答案 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的长度,索引就会起作用。