Валидация ИНН

Для собственных нужд понадобилось соорудить на Python функцию для проверки корректности ИНН. Собственно, вот результат. Работает и со второй, и с третьей версиями Python.

def is_valid_inn(inn):
    '''функция проверяет корректность ИНН
    (длина, набор символов, контрольная сумма)
    :param inn: строка с ИНН (10 или 12 символов)
    :type inn: str or unicode
    :returns: True если ИНН корректный
    :rtype: bool
    '''
    multiplier = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
    try:
        inn = [int(i) for i in inn]
    except ValueError:
        return False
 
    def checksum(digit):
        _inn = [0] * (12 - digit) + inn
        s = sum([multiplier[i] * _inn[i] for i in range(11)])
        return _inn[11] == s % 11 % 10
 
    if len(inn) == 12:
        return checksum(11) and checksum(12)
    elif len(inn) == 10:
        return checksum(10)
    return False

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

one + 9 =