29 lines
463 B
Python
29 lines
463 B
Python
ISBN_LENGTH = 10
|
|
|
|
|
|
def is_valid(isbn):
|
|
|
|
isbn = isbn.replace('-', '')
|
|
if len(isbn) != ISBN_LENGTH:
|
|
return False
|
|
|
|
checksum = 0
|
|
|
|
for ch, i in zip(isbn, range(ISBN_LENGTH, 1, -1)):
|
|
if not ch.isdigit():
|
|
return False
|
|
|
|
checksum += int(ch)*i
|
|
|
|
ch = isbn[-1]
|
|
|
|
if ch.isdigit():
|
|
x = int(ch)
|
|
elif ch == 'X':
|
|
x = 10
|
|
else:
|
|
return False
|
|
|
|
checksum += x
|
|
|
|
return checksum % 11 == 0
|