我正在尝试使用自己的信用卡验证器(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()
答案 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'
在您的代码中,在最顶层将输入转换为数字,然后尝试进行切片操作。
当您想对输入进行数学运算时,只将输入转换为数字,否则将其保留为字符串。