Für Hinweise und Kritik bin ich offen:
Code: Alles auswählen
def checker(isbn):
'''
Rudimentaere Pruefung, ob die ISBN
korrekt sein koennte. Pruefung erfolgt
rein formal:
- Ist die ISBN lang genug (10 oder 13 Stellen)?
- Stimmt die Pruefziffer (PZ)?
'''
isbn = str(isbn)
if len(isbn) == 13 and isbn == isbn[:12] + isbn13PZ(isbn[:12]):
return True
elif len(isbn) == 10 and isbn == isbn[:9] + isbn10PZ(isbn[:9]):
return True
else:
return False
def isbn10to13(isbn10):
'''
Bekommt die 10stellige ISBN und gibt
die 13stellige ISBN als String zurueck
'''
isbn13 = "978" + isbn10[:9] + isbn13PZ("978" + isbn10[:9])
return isbn13
def isbn10PZ(isbn9):
'''
Bekommt die 9stellige ISBN und gibt die
Pruefziffer (PZ) als String zurück
'''
zwErg = 0
for i in range(0,9):
zwErg += int(isbn9[i]) * (i + 1)
if zwErg % 11 == 0:
return "X"
else:
return str(zwErg % 11)
def isbn13to10(isbn13):
'''
Bekommt die 10stellige ISBN und gibt
die 13stellige ISBN als String zurueck
'''
return isbn13[3:-1] + isbn10PZ(isbn13[3:-1])
def isbn13PZ(isbn12):
'''
Bekommt die 12stellige ISBN und gibt die
Pruefziffer (PZ) als String zurück
'''
summe = []
for i in range(12):
if (i + 1) % 2 == 0:
summe.append(int(isbn12[i]) * 3)
else:
summe.append(int(isbn12[i]))
return str((10 - (sum(summe) % 10)) % 10)