У меня есть своя с моим кодом. Он работает довольно хорошо, но в некоторых случаях (например, input = 8913266562747895) он дает неправильные ответы. Вот мой код:Python: Код подтверждения кредитной карты
def ccv(s):
k=list(s)
if len(k)==19:
for i in(0,1,2,3,5,6,7,8,10,11,12,13,15,16,17,18):
if not k[i].isdigit():
return False
for i in(4,9,14):
if k[i]!=" " and k[i]!="-":
return False
l=[int(c) for c in s if c.isdigit()]
if not 4<=l[0]and l[0]<=7:
return False
s=0
for i in range(0,16, 2):
l[i]=2*l[i]
if l[i]/10!=0:
l[i]= l[i]/10+(l[i]%10)
for i in range(16):
s=s+l[i]
return s%10==0
elif len(k)==16:
for i in range(16):
if not k[i].isdigit():
return False
l=[int(c) for c in s if c.isdigit()]
if not 4<=l[0]and l[0]<=7:
return False
else:
s=0
for i in range(0,16, 2):
l[i]=2*l[i]
if l[i]/10!=0:
l[i]= l[i]/10+(l[i]%10)
for i in range(16):
s=s+l[i]
return s%10==0
else:
return False
n=raw_input()
while n!="END" and n!="end":
print ccv(n)
n=raw_input()
Можете ли вы сказать мне, где проблема?
Это тот код, в котором он мог бы помочь либо разбить его на более мелкие функции, которые каждый проверьте одно состояние или (еще лучше) используйте библиотеку, которая помогает с проверкой CC. –
Почему бы не использовать [регулярное выражение для таких вопросов] (http://www.regular-expressions.info/creditcard.html)? – damienfrancois
Необходимо использовать python. – GeorgeDavidKing