+ 2

Python Problem: CREDIT CARD VALIDATOR

While trying to solve the codecoach problem mentioned above, I wrote following code which passed only 5 out of 7 tests. Now I am stuck and can't understand the mistakes I did. Request you all to ponder over it a bit and help me fix bug in my code. Thanks. My code -- Problem link -- https://www.sololearn.com/coach/96?ref=app cc_number = input() cc_number = list(map(int,cc_number)) cc_number.reverse() for i in range(1,16,2): cc_number[i]*=2 for i in range(16): if cc_number[i]>9: cc_number[i] -=9 sum_cc = sum(cc_number) if sum_cc % 10 == 0 and len(cc_number)==16: print("valid") else: print ("not valid")

28th Dec 2020, 3:59 PM
CHANDAN ROY
CHANDAN ROY - avatar
7 Answers
+ 3
CHANDAN ROY If input length is not equal to 16 then your loop will not work. You first need to check if input length is equal to 16 then start loop. I sent you in DM. Check what was mistake.
29th Dec 2020, 4:00 AM
A͢J
A͢J - avatar
+ 1
I Am Groot ! Sir, please help.
29th Dec 2020, 2:02 AM
CHANDAN ROY
CHANDAN ROY - avatar
+ 1
def test_luhna (code): op_1 = list(map(int, (code[::-1]))) op_2 = [i*2 for i in op_1[1::2]] op_1[1::2] = op_2 for n, i in enumerate(op_1, 0): if i > 9: i -= 9 op_1[n] = i if sum(op_1) % 10 == 0 and len(op_1) == 16: print('valid') else: print('not valid') return card_number = input() test_luhna(card_number)
31st Aug 2021, 6:31 PM
Johny Bracker
Johny Bracker - avatar
+ 1
num = list(input()[::-1]) for i in range(1, len(num)+1, 2): num[i] = str((int(num[i]))*2) num_2 = num for i in range(0, len(num_2)): if int(num_2[i]) > 9: num_2[i] = str(int(num_2[i])-9) if len(num_2) == 16 and sum([int(i) for i in num_2 ]) % 2 == 0: print('valid') else: print('not valid')
24th Nov 2021, 1:19 PM
Mas'ud Saleh
Mas'ud Saleh - avatar
0
спасийО
29th Dec 2020, 8:15 AM
Elyor Emran
Elyor Emran - avatar
0
n = input()[::-1] s= 0 for i in range(len(n)): if i%2 ==0 or i ==0 : s += (int(n[i])) else: if int(n[i])*2 > 9: s += (int(n[i])*2-9) else : s += (int(n[i])*2) print("valid" if s%10 ==0 and len(n) == 16 else "not valid")
22nd Jul 2021, 10:03 AM
Almantas Seikis
Almantas Seikis - avatar
0
num = list(input()[::-1]) for i in range(1, len(num)+1, 2): num[i] = str((int(num[i]))*2) num_2 = num for i in range(0, len(num_2)): if int(num_2[i]) > 9: num_2[i] = str(int(num_2[i])-9) print('valid' if len(num_2) == 16 and sum([int(i) for i in num_2 ]) % 2 == 0 else 'not valid')
24th Nov 2021, 1:24 PM
Mas'ud Saleh
Mas'ud Saleh - avatar