Skip to content

Instantly share code, notes, and snippets.

@ashumkin
Created June 27, 2019 13:55
Show Gist options
  • Save ashumkin/ffe2b06e11eed04cc0e16ace1e36baab to your computer and use it in GitHub Desktop.
Save ashumkin/ffe2b06e11eed04cc0e16ace1e36baab to your computer and use it in GitHub Desktop.
Calculated INN
import sys
if len(sys.argv) > 1:
supposed_inn = sys.argv[1]
else:
supposed_inn = "123456789"
def calc_checksum_digit(weights, inn):
inn_splitted = list(map(int, inn))
res = 0
for i in range(len(inn_splitted)):
res += inn_splitted[i] * weights[i]
res %= 11
if res > 9:
res %= 10
return str(res)
def calc_checksum_digit_individuals(inn):
inn = inn[:10]
c1 = calc_checksum_digit((7,2,4,10,3,5,9,4,6,8,0), inn)
c2 = calc_checksum_digit((3,7,2,4,10,3,5,9,4,6,8,0), inn + c1)
return inn + c1 + c2
def calc_checksum_digit_jl(inn):
inn = inn[:9]
c = calc_checksum_digit((2,4,10,3,5,9,4,6,8,0), inn)
return inn + c
def calc_checksum_digit_for_inn(inn):
if len(inn) >= 10:
return calc_checksum_digit_individuals(inn)
elif len(inn) >= 9:
return calc_checksum_digit_jl(inn)
else:
return None
inn = calc_checksum_digit_for_inn(supposed_inn)
if inn is None:
print("Invalid INN", supposed_inn)
else:
print(inn)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment