Ok!! Superdankeschön!!
Jetzt hab ich es auch so halbwegs verstanden nur hätte ich eine bitte, ob ihr mir das jetzt ohne erklärungen und ohne auseinanderrupfen noch mal aufschrieben könnt!
DANKE
Grundrisse von Python!!
Hi. Gut, kein Problem. Die Funktion hier holt aus einem String die ISBN raus (egal wie sie im Text steht, also unabhängig ob von "-" oder " " getrennte Nummern):
Es gibt bestimmt noch weitere 1000 Varianten, die zu bestimmen, aber um die haben Dookie und ich im Kern diskutiert.
Code: Alles auswählen
def get_isbn(isbn_text):
ziffern = "".join([a for a in isbn_text if a.isdigit()][:9])
psum=sum([(i+1)*int(a) for (i,a) in enumerate(ziffern)]) % 11
ziffern += "0123456789X"[psum]
return ziffern
Zuletzt geändert von Milan am Samstag 18. September 2004, 17:10, insgesamt 1-mal geändert.
Ich hab noch ne Frage und zwar schreibe ich das programm dann morgen zu 'Ende und wollte dann fragen wenn ich es fertig hab, ob es jemand von euch mal jemand durchgucken kann und mir dann dazu sagen kann ob es korrekt ist und so!!
@Milan:
Das letzte was du mir geschickt hast ist dann das korrekte oder?
DANKE ihr seid meine rettung
Das letzte was du mir geschickt hast ist dann das korrekte oder?
DANKE ihr seid meine rettung
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Der letzte von Milan gepostete Code, ist praktisch die Funktions zum rauspfriemeln der ISBN. Also das ganze in eine Funktion verpackt.
Jetzt kannst Du schreiben:
Natürlich muss dazu der Code von get_isbn auch im script stehen.
Gruß
Dookie
Jetzt kannst Du schreiben:
Code: Alles auswählen
pure_isbn = get_isbn("0-439-35806-X")
# oder
long_isbn = "0-439-35806-X"
pure_isbn = get_isbn(long_isbn)
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Danke!
Zuletzt geändert von Walker26 am Sonntag 19. September 2004, 19:09, insgesamt 1-mal geändert.
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:
So, und jetzt die Kurzvariante:
Sollte ich noch klarheiten gelassen haben ( ), bitte schreiben .
mfg Milan
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"
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"
mfg Milan
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
Wenn ich euch kennen würde, würdet ihr jeder 2-4 bierchen kriegen!!!!ich kann mich garnicht oft genug bedanken