Verfasst: Sonntag 19. September 2004, 08:52
Danke!
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
isbn=raw_input("ISBN eingeben: ") #1. Eingabe
#2. verarbeitung
for i in xrange(len(isbn)):
position_strich=isbn.find("-") # Position eines Striches ermitteln...
if position_strich != -1: # ...falls ein Strich existiert
isbn=isbn[:position_strich]+isbn[postiotion_strich+1:]
# alle Striche raus, bilden der Prüfsumme
psum=0
for i in xrange(10):
if isbn[i] in ("X","x"): #Ein X kann nicht direkt in eine Zahl umgewandelt werden
stelle=10
else:
stelle=int(isbn[i])
# stelle enthält nun den numerischen Wert der i. ten Stelle in der isbn
# wobei Python mit 0 anfängt zu zählen
psum+=stelle*(i+1) # deswegen muss mit i+1 multipliziert werden
# fertig, überprüfen der Prüfsumme (3.)
if (psum % 11) != 0:
print "Falsch"
else:
print "richtig"
Code: Alles auswählen
isbn=raw_input("ISBN eingeben: ") #1. Eingabe
isbn=isbn.replace("-","") #Entfehrnen der Striche
# Wenn man überlegt, kann man auch prüfen, ob die Prüfsumme der 1. bis 9. Stelle
# gleich der 10. Stelle der ISBN ist. Das ist leichter zu berechnen.
#2.: Berechnung der Prüfsumme von den ersten 9 Stellen
psum=sum([(i+1)*int(a) for (i,a) in enumerate(isbn[:9])]) % 11
#überprüfen dieser Summe:
# links: berechnete 10. Stelle; rechts: tatsächliche 10. Stelle
if "0123456789x"[psum] == isbn[9].lower():
print "richtig"
else:
print "falsch"