Binnen het ISBN-13 (International Standard Book Numbering) systeem krijgt elk boek een unieke code toegewezen die bestaat uit 13 cijfers. De eerste 12 daarvan geven informatie over het boek zelf, terwijl het laatste louter een controlecijfer is dat dient om foutieve ISBN-13 codes te detecteren.
Indien $$x_1, \ldots, x_{12}$$ de eerste 12 cijfers van een ISBN-13 code voorstellen, dan wordt het controlecijfer $$x_{13}$$ als volgt berekend: \[\begin{align} o &= x_1 + x_3 + x_5 + x_7 + x_9 + x_{11} \\ e &= x_2 + x_4 + x_6 + x_8 + x_{10} + x_{12} \\ x_{13} &= (10 - (o + 3e)\!\!\!\!\mod{10})\!\!\!\!\!\mod{10}\end{align}\] Het controlecijfer $$x_{13}$$ kan m.a.w. de waarden 0 tot en met 9 aannemen, waardoor ISBN-13 codes uitsluitend uit cijfers bestaan.
Schrijf een functie is_isbn13 waaraan één enkel argument moet doorgegeven worden. De functie moet een Booleaanse waarde teruggeven, die aangeeft of het argument een string is die een geldige ISBN-13 code voorstelt.
De functie moet expliciet controleren of het argument dat wordt doorgegeven wel degelijk een string is. Alle argumenten die geen string zijn, beschouwen we immers als ongeldige ISBN-13 codes.
>>> is_isbn13('9780547125329') True >>> is_isbn13('9780136110678') False >>> is_isbn13(9780547125329) False