Created
July 6, 2017 20:51
-
-
Save colyk/893b6b747bc8e07c37e19c84d5a14482 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
# coding: utf8 | |
import random | |
#def sumNumb(str):return sum(map(lambda x: int(x),str)) print(sumNumb("12")) | |
def sumNum(number): | |
return number//10+number%10 | |
def luna(cardNumber): | |
evenNumbers = cardNumber[::2] | |
oddNumbers = list(cardNumber[1::2]) | |
sumOddNumbers = 0 | |
for i in oddNumbers: | |
sumOddNumbers+=int(i) | |
k = 0 | |
summ = 0 | |
for i in evenNumbers: | |
k = int(i)*2 | |
summ+=sumNum(k) | |
return(summ+sumOddNumbers)%10 | |
def generateCardNumber(): | |
result = '4' | |
for i in range(2,16): | |
random.seed() | |
result+=str(random.randint(1,9)) | |
if(i%4 == 0): | |
result+=' ' | |
#print(result) | |
for i in range(0,9): | |
if(luna((result+str(i)).replace(" ",'')) == 0): | |
result+=str(i) | |
return result | |
cardNumber = input("Введите номер банковской карты: ").replace(" ",'') | |
if(len(cardNumber)!=16 or not cardNumber.isdigit()): | |
print("Не правильно набран номер!") | |
exit() | |
else: | |
if(luna(cardNumber) == 0): | |
print("Правильный номер карты!") | |
else: | |
print("Не правильный номер карты!") | |
print(generateCardNumber()) | |
input() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment