Grundrisse von Python!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Walker26
User
Beiträge: 10
Registriert: Samstag 18. September 2004, 08:34
Kontaktdaten:

Danke!
Zuletzt geändert von Walker26 am Sonntag 19. September 2004, 19:09, insgesamt 1-mal geändert.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Ich schreib es am besten mal in zwei Varianten auf, damit du es anhand deines Vorgehens vergleichen kannst und siehst, wie man es in Python anders machen kann.
Also hier ist die kommentierte ausführliche Version:

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"
So, und jetzt die Kurzvariante:

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"
Sollte ich noch klarheiten gelassen haben ( :wink: ), bitte schreiben :lol: .
mfg Milan
Walker26
User
Beiträge: 10
Registriert: Samstag 18. September 2004, 08:34
Kontaktdaten:

DANKE an alle dir mir jetzt geholfen haben, supuer super dankeschön!!!!
Wenn ich euch kennen würde, würdet ihr jeder 2-4 bierchen kriegen!!!!ich kann mich garnicht oft genug bedanken
Antworten