Python信用卡号校验

求问这个代码错在哪

cardid=input("请输入信用卡号")
#代码开始
x=0
y=0
c=eval(cardid)
for i in range(c):
x=x+c[-1::-2]
z=(c[-2::-2])*2
if z>9:
z=z-9
y=y+z
m=x+y
if m%10 == 0:
print('合法卡号')
if m%10 != 0:
print('非法卡号')
#代码结束

line14,TypeError: 'int' object is not subscriptable

img

你的卡号应该是一个字符串类型的,但是在c=eval(cardid)之后,c就变成了一个非常大的整形数了,在x=x+c[-1::-2],你尝试将c分割,但c是一个int型的无法分割。建议你对cardid进行分割,然后计算的时候再转为int型,像这样int(cardid[-1::-2])

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^