Last active
February 13, 2017 09:44
-
-
Save worldmind/a66e801ddc9de2ed6817c91b4ef69883 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def validate_check_sum(card_number): | |
newlist = list(map(lambda x: double_and_sum_digits4odd(*x), enumerate(card_number[::-1]))) | |
val = sum(newlist[::-1]) | |
if val % 10 == 0: | |
return 'valid' | |
else: | |
return 'not valid' | |
def sum_digits(x): | |
digits = str(x) | |
return sum(map(int, digits)) | |
def double_and_sum_digits4odd(i, x): | |
if i % 2 == 0: | |
return x | |
else: | |
return sum_digits(x*2) | |
card_number_int = int(input()) | |
card_number = list(map(int,str(card_number_int))) | |
print(validate_check_sum(card_number)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
можно сделать в одну строку всё это дело (но не очень читаемо, см. ниже). Зависит от того, какие цели преследуешь
некоторые вычисления можно сделать lazy
проверка на чётную/нечётную позицию можно вынести на битовую арифметику (у нечётных числе последний бит всегда 1)
сумма цифр двузначного числа будет равно этому числу за вычетом девяти
когда считаешь сумму, нет смысла в том, чтобы обратно массив разворачивать