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.

ISBN
ISBN in text and barcode

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.

ISBN
ISBN in tekst en streepjescode

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:
Resource:None

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.