Skip to content

Instantly share code, notes, and snippets.

@colyk
Created July 6, 2017 20:51
Show Gist options
  • Save colyk/893b6b747bc8e07c37e19c84d5a14482 to your computer and use it in GitHub Desktop.
Save colyk/893b6b747bc8e07c37e19c84d5a14482 to your computer and use it in GitHub Desktop.
Генератор номера банковской карты и проверка номера карты с помощью алгоритма Луна
# 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