Python :: Aufgabe #50

2 Lösungen Lösungen öffentlich

ISBN-Nummern überprüfen

Anfänger - Python von bibir - 03.09.2014 um 09:10 Uhr
Eine ISBN-Nummer setzt sich immer aus vier Teilen zusammen, der Gruppenzahl, Verlagsnummer, Titelnummer und einer Prüfziffer. Diese vier Teile werden durch Bindestriche (oder seltener Leerzeichen) abgetrennt. Eine ISBN-Nummer ist stets zehnstellig.

Die Prüfziffer erlaubt, die Gültigkeit einer ISBN-Nummer festzustellen. Sie wird so gewählt, dass die ganze Nummer folgende mathematische Eigenschaft erfüllt:
Man multipliziere die erste Stelle mit 10, die zweite Stelle mit 9, die dritte mit 8, und so weiter bis zur neunten Stelle (mal 2), und addiere alle erhaltenen Produkte. Wenn man zu dieser Zahl die Prüfziffer dazuaddiert, so muss ein Vielfaches von 11 entstehen. Als Besonderheit kann die Prüfziffer auch den Buchstaben X annehmen, der dann als Zahlenwert 10 interpretiert wird.

Beispiel:
Die ISBN-Nummer lautet 3-8931-9301-4, also rechnen wir
3 * 10 + 8 * 9 + 9 * 8 + 3 * 7 + 1 * 6 + 9 * 5 + 3 * 4 + 0 * 3 + 1 * 2 + Prüfziffer 4 = 264.
Diese Zahl ist 24 * 11, also ist es eine gültige ISBN-Nummer.

Lösungen:

vote_ok
von jigga (4260 Punkte) - 18.05.2015 um 11:42 Uhr
Quellcode ausblenden Python-Code
def isbn10(z):
	summe = 0

	for i in range(0,len(z)-1):
		summe += int(z[i]) * (10-i)

	if z[-1] == 'X' or z[-1] == 'x':
		letzte = 10

	else:
		letzte = int(z[-1])

	if (summe + letzte) % 11 == 0:
		print("Die ISBN-Nummer",isbn,"ist gueltig")

	else:
		print("Die ISBN-Nummer",isbn,"ist nicht gueltig")

def isbn13(z):
	summe = 0

	for i in range(0,len(z)):

		if i%2 == 0:
			summe += int(z[i])

		else:
			summe += 3*int(z[i])

	if summe%10 == 0:
		print("Die ISBN-Nummer",isbn,"ist gueltig")

	else:
		print("Die ISBN-Nummer",isbn,"ist nicht gueltig")

isbn = input("ISBN-Nummer: ")
print()

z = isbn.replace('-','').replace(' ','')

if len(z) == 10:
	isbn10(z)

elif len(z) == 13:
	isbn13(z)

else:
	print("Falsche Nummer eingegeben!")
vote_ok
von Nachbar (2820 Punkte) - 19.08.2016 um 22:04 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-

def isbn(nummer):
    nummer = nummer.replace(" ", "").replace("-", "")
    if len(nummer) > 10 or len(nummer) < 10:
        print "\nUngueltige Eingabe!"
    else:
        a = list(nummer)
        pruefziffer = a[9]
        summe = 0
        for i in range(10, 1, -1):
            summe = summe + int(a[10 - i]) * i
        if pruefziffer == "x" or pruefziffer == "X":
            pruefziffer = 10
        if (summe + int(pruefziffer)) % 11 == 0:
            print "\nISBN Nummer ist gueltig."
        else:
            print "\nDies ist keine gueltige ISBN Nummer."

eingabe = raw_input("Bitte eine ISBN Nummer eingeben: ") 
isbn(eingabe)
2099333

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.