0
Credit card validator (need help)
Why I don't make test 3,4 , where I wrong? Почему не получается пройти тест 3, 4. Где ошибка? card=list(input()) stand=["1","2","3","4","5","6","7","8","9","0"] for y in card: if y not in stand: print("not valid") break elif y in stand: rev_card=card[::-1] x=0 sec_card=[] big=[] for i in rev_card: c=i x+=1 if x%2==1: c2=int(c) c2*=2 sec_card.append(c2) for b in sec_card: b2=int(b) if b2>9: b2-=9 big.append(b2) all_sum=sum(big) if all_sum%10==0 and len(big)==16: print("valid") break else: print("not valid") break
17 Answers
+ 2
Is that this code coach?
You need to verify if the given credit card number is valid. For that you need to use the Luhn test.
Here is the Luhn formula:
1. Reverse the number.
2. Multiple every second digit by 2.
3. Subtract 9 from all numbers higher than 9.
4. Add all the digits together.
5. Modulo 10 of that sum should be equal to 0.
Task:
Given a credit card number, validate that it is valid using the Luhn test. Also, all valid cards must have exactly 16 digits.
Input Format:
A string containing the credit card number you need to verify.
Output Format:
A string: 'valid' in case the input is a valid credit card number (passes the Luhn test and is 16 digits long), or 'not valid', if it's not.
Sample Input:
4091131560563988
Sample Output:
valid
+ 2
I took the sample Input and put it into your code and received "not valid". I then went through and added print statements to see what the code does.
I think you have 2 indentation errors. Check the line sec_card.append(c2) and big.append(2).
I also changed the len(big) to len(card) but I don't think that affects the result other than I like to check the original input instead of whatever is left after all the work your code does.
+ 2
Sorry, see if this helps.
https://code.sololearn.com/cKDs9Bm1Wise/?ref=app
+ 2
I'm sorry, I don't understand that. The sample input prints valid, so it shouldn't be cutting any numbers.
+ 1
Ausgrindtube, yes, this code
+ 1
I don't understand last words about check...
About checking two line, I don't know, where I can move this line, do you have ideas? I try move this line to the left, no affects. Move to the right, error.
+ 1
Sorry, you help, I see what all number of card multiply 2 🙏🙏🙏
0
Thanks for the attention, but don't help, if move two line to the right, cut number of card😢
0
If move line to the right, program take in list sec_card only number, which true of operator if.
0
Smith Welder Интересно, но ничего не понятно, я не сильна в таких лаконичных кодах🙀 Скопировала в окно проверки, чёт все равно не то😳
0
Smith Welder спасибо, я ступила и не так как надо скопировала. Всё правильно написано, просто я баран 😢
0
Что именно не понятно?
0
Честно, весь код, и что там обозначено, мой уровень очень низкий, такого уровня кодировки никогда не видела...
0
Что такое g?
u первоначальное значение цифр номера карты
x так понимаю это каждая цифра номера карты после вычислений
0
g это порядковый номер цифры числа. Функция enumerate() пронумировывает всю строку от нуля и до конца.
Используйте функцию print() , если что либо не понятно.
print(g)
0
Спасибо за исчерпывающий ответ😊🤝