为什么我的信用卡验证器得到" int对象不可订阅"?

时间:2018-03-18 19:29:20

标签: python python-3.x

我正在尝试使用自己的信用卡验证器(Luhn算法)。这就是我的问题:

int object is not subscriptable

我试图理解这意味着什么,但是其他有这个问题的人似乎把这个问题放在了一个" str"他们的代码。有人可以帮我解释一下为什么需要它吗?

def main():
creditNums = int(input("Enter your credit card number mate: "))


reverseNums = creditNums[::-1]
oddNum = reverseNums[3:]
oddNums =  oddNum[::2]
for num in oddNums:
    nums_sum1 += num

evenNum = reverseNum[2:]
evenNums = evenNum[::2]
for i in evenNums:
    evenDouble.append(i*i)
if i in evenDouble > 9:
    i - 9
else:
    i
for num in evenDouble:
    nums_sum2 += num



sumNum = nums_sum2 + nums_sum1 
modNum = sumNum % 10

if m

odNum == 0:
        print("your card number is chill")
    else:
        print("your card is invalid bitch, your going to jail mamene")

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

这里的问题是数字不支持切片(使用[])。

这就是为什么解决方案是使用字符串,因为字符串确实支持切片。

这是一个简单的例子:

>>> i = 4356789
>>> i[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable
>>> i = '4356789'
>>> i[3]
'6'

在您的代码中,在最顶层将输入转换为数字,然后尝试进行切片操作。

当您想对输入进行数学运算时,只将输入转换为数字,否则将其保留为字符串。