Мне даны некоторые номера ISBN, например. 3-528-03851
(недействительно), 3-528-16419-0
(действительный). Я должен написать программу, которая проверяет, действительно ли номер ISBN.
Вот мой код:
def check(isbn):
check_digit = int(isbn[-1])
match = re.search(r'(\d)-(\d{3})-(\d{5})', isbn[:-1])
if match:
digits = match.group(1) + match.group(2) + match.group(3)
result = 0
for i, digit in enumerate(digits):
result += (i + 1) * int(digit)
return True if (result % 11) == check_digit else False
return False
Я использовал регулярное выражение для проверки a), если формат действителен и b) извлекает цифры в строке ISBN. Хотя, похоже, он работает, будучи новичком на Python, я очень хочу узнать, как улучшить код. Предложения?