Submit | All submissions | Best solutions | Back to list |
PROG0184 - ISBN |
In the new ISBN-13 system, each book is assigned a unique 13-digit code. The first twelve digits identify the book itself, whereas the last digit merely serves as a check digit to detect invalid ISBN-13 codes.
If $x_1, \ldots, x_{12}$ represent the first twelve digits of an ISBN-13 code, the check digit $x_{13}$ is calculated as $$x_{13} = (10 - (x_1 + x_3 + x_5 + x_7 + x_9 + x_{11} + 3(x_2 + x_4 + x_6 + x_8 + x_{10} + x_{12}))\!\!\!\!\!\mod{10})\!\!\!\!\!\mod{10}$$ As a result $x_{13}$ always takes a value in between 0 and 9, so that ISBN-13 codes only contain digits.
The website ISBNdb.com is a database of books. It offers a so-called API that allows programs to retrieve information about a particular book via the ISBN-13 code of that book. For example, if you open the URL
you will download a file with the following content
<?xml version="1.0" encoding="UTF-8"?> <ISBNdb server_time="2012-11-19T07:28:26Z"> <BookList total_results="1" page_size="10" page_number="1" shown_results="1"> <BookData book_id="the_practice_of_computing_using_python" isbn="0136110673" isbn13="9780136110675"> <Title>The Practice of Computing using Python</Title> <TitleLong></TitleLong> <AuthorsText>William F Punch, Richard Enbody, </AuthorsText> <PublisherText publisher_id="addison_wesley_a01">Addison Wesley</PublisherText> </BookData> </BookList> </ISBNdb>
This is a file in XML format. It contains a lot of information, but for this exercise we are only interested in titles, authors and publishers. The most important part of the URL
is the part highlighted in red. At this location, you have to insert the ISBN-13 code of the book that you wish to lookup information for.
Assignment
Write a function
displayBookInfo(code)
that takes an ISBN-13 code as its argument. If the ISBN-13 code is valid, the title, authors and publisher must be printed in the format as used in the example below. If the ISBN-13 code is invalid, and error message must be printed as shown in the example below.
Example
>>> displayBookInfo('9780136110675') Title: The Practice of Computing using Python Authors: William F Punch, Richard Enbody Publisher: Addison Wesley >>> displayBookInfo('9780136110678') Wrong ISBN-13 code
Binnen het nieuwe 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-code voorstellen, dan wordt het controlecijfer $x_{13}$ als volgt berekend: $$x_{13} = (10 - (x_1 + x_3 + x_5 + x_7 + x_9 + x_{11} + 3(x_2 + x_4 + x_6 + x_8 + x_{10} + x_{12}))\!\!\!\!\!\mod{10})\!\!\!\!\!\mod{10}$$ $x_{13}$ kan m.a.w. de waarden 0 tot en met 9 aannemen, waardoor ISBN-13 codes uitsluitend uit cijfers bestaan.
De website ISBNdb.com is een databank van boeken. Deze website biedt ook een zogenaamde API (Application Programming Interface) aan die toelaat dat programma's gegevens opvragen over bepaalde boeken via de ISBN-13 code van dat boek. Als je bijvoorbeeld de URL
opent, dan krijg je het onderstaande bestand.
<?xml version="1.0" encoding="UTF-8"?> <ISBNdb server_time="2012-11-19T07:28:26Z"> <BookList total_results="1" page_size="10" page_number="1" shown_results="1"> <BookData book_id="the_practice_of_computing_using_python" isbn="0136110673" isbn13="9780136110675"> <Title>The Practice of Computing using Python</Title> <TitleLong></TitleLong> <AuthorsText>William F Punch, Richard Enbody, </AuthorsText> <PublisherText publisher_id="addison_wesley_a01">Addison Wesley</PublisherText> </BookData> </BookList> </ISBNdb>
Dit is een bestand in het XML-formaat. Het bevat heel wat informatie, maar voor deze oefening zijn we enkel geïnteresseerd in de titel, de auteurs en de uitgevers. Het belangrijkste deel van de URL
is het rode gedeelte. Op deze plaats moet je de ISBN-13 code ingeven van het boek dat je wil opzoeken.
Opgave
Schrijf een functie
printBoekInfo(code)
waaraan een ISBN-13 code moet doorgegeven worden. Indien het over een geldige ISBN-13 code gaat, worden de titel, de auteurs en de uitgevers afgedrukt zoals in het voorbeeld. Indien er een fout in de ISBN-13 code zit, dan wordt een foutboodschap afgedrukt zoals aangegeven in het voorbeeld.
Voorbeeld
>>> printBoekInfo('9780136110675') Titel: The Practice of Computing using Python Auteurs: William F Punch, Richard Enbody Uitgever: Addison Wesley >>> printBoekInfo('9780136110678') Foutieve ISBN-13 code
Added by: | Peter Dawyndt |
Date: | 2011-11-02 |
Time limit: | 5s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |