Binnen het ISBN-10 (International Standard Book Numbering) systeem dat tot eind 2006 gebruikt werd, kreeg elk boek een unieke code toegewezen die bestaat uit 10 cijfers. De eerste 9 daarvan geven informatie over het boek zelf, terwijl het laatste louter een controlecijfer is dat dient om foutieve ISBN-10 codes te detecteren.

ISBN
ISBN in tekst en streepjescode.

Indien $$x_1, \ldots, x_9$$ de eerste 9 cijfers van een ISBN-10 code voorstellen, dan wordt het controlecijfer $$x_{10}$$ als volgt berekend: \[x_{10} = (x_1+ 2x_2+ 3x_3+ 4x_4+ 5x_5+ 6x_6+ 7x_7+ 8x_8+ 9x_9)\!\!\!\!\mod{11}\] Het controlecijfer $$x_{10}$$ kan m.a.w. de waarden 0 tot en met 10 aannemen. Indien het controlecijfer gelijk is aan 10, dan wordt dit in de ISBN-10 code genoteerd als de hoofdletter X.

Opgave

Schrijf een functie isISBN waaraan één enkel argument moet doorgegeven worden. De functie moet een Booleaanse waarde teruggeven, die aangeeft of het argument een string (str) is die een geldige ISBN-10 code voorstelt.

Opmerking

De functie moet expliciet controleren of het argument dat wordt doorgegeven wel degelijk een string (str) is. Alle argumenten die geen string zijn, beschouwen we immers als ongeldige ISBN-10 codes.

Voorbeeld

>>> isISBN('9971502100')
True
>>> isISBN('9971502108')
False
>>> isISBN('53WKEFF2C')
False
>>> isISBN(4378580136)
False

Pythia spreekt …

In onderstaande video legt Pythia uit hoe je deze opgave kunt aanpakken. Bekijk deze video als opstapje naar het oplossen van de oefeningen over functies1.