File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
solutions/python/isbn-verifier/6 Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ ISBN Verifier.
3+
4+ The ISBN-10 verification process is used to validate book identification
5+ numbers. These normally contain dashes and look like: 3-598-21508-8
6+
7+ ISBN
8+ The ISBN-10 format is 9 digits (0 to 9) plus one check character
9+ (either a digit or an X only). In the case the check character is an X,
10+ this represents the value '10'. These may be communicated with or without
11+ hyphens, and can be checked for their validity by the following formula:
12+
13+ (d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 +
14+ d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0
15+
16+ If the result is 0, then it is a valid ISBN-10, otherwise it is invalid.
17+ """
18+
19+
20+ def is_valid (isbn : str ) -> bool :
21+ """
22+ Verify ISBN.
23+
24+ :param isbn: 9 digits ISBN 10 format
25+ :return: Tru if isbn is valid, False otherwise
26+ """
27+ isbn_digits : list [int ] = []
28+ for char in isbn :
29+ if char == "-" :
30+ continue
31+ elif char .isdigit ():
32+ isbn_digits .append (int (char ))
33+ elif char .upper () == "X" and len (isbn_digits ) == 9 :
34+ isbn_digits .append (10 )
35+ else :
36+ return False
37+ # ISBN total length should be = 10
38+ if len (isbn_digits ) != 10 :
39+ return False
40+
41+ return (
42+ sum (digit * (10 - i ) for i , digit in enumerate (isbn_digits )) % 11 == 0
43+ )
You can’t perform that action at this time.
0 commit comments