Seite 1 von 1
Einfaches Python Problem
Verfasst: Donnerstag 23. Juni 2005, 12:36
von AROK
Hallo, ich bin ein Python Neuling (gestern installiert) und muss ein kleines Skript schreiben, um eine Programm zu erweitern.
Folgendes will nicht funktionieren:
Code: Alles auswählen
c = 0
def compare(ist,soll,proz,abs):
if(abs(ist-soll)<=((soll*proz/100)+abs)):
print "eq"
return 1
c = 1
else:
print "neq"
return 0
c = 0
aufrufen:
Wenn ich alles in eine Funktion Datei PAcke und z.B. ausführe, bekomme ich ein Fehlermeldung. Warum?
Danke für Hinweise.
GRUß
Edit (Leonidas): Code in Python-Tags gesetzt.
Verfasst: Donnerstag 23. Juni 2005, 13:00
von Leonidas
Hallo Arok, willkommen im Forum!
Es funktioniert nicht, weil du eine Variable abs genannt hast, diese "überdeckt" die Funktion abs... du musst also die Variable anders benennen.
OH mann,
Verfasst: Donnerstag 23. Juni 2005, 13:09
von AROK
Das tut ja schon weh. Danke!!!
GRUß
AROK
Verfasst: Donnerstag 23. Juni 2005, 13:25
von Gast
Hallo, nochmal
So geht es endich:
Code: Alles auswählen
c = 0
def compare(ist,soll,proz,ABS):
if abs(ist-soll) <= float(soll*proz)/100+ABS :
print "eq"
return 1
c = 1
else:
print "neq"
return 0
c = 0
compare(4.0,5,10,0)
print c
Warum ist es denn nötig, einen expliziten Typecast zu machen:
Ich dachte Python mach allesvon allein!
Grüße
AROK
Edit (Leonidas): Code in Python-Tags gesetzt.
Verfasst: Donnerstag 23. Juni 2005, 13:43
von Leonidas
Anonymous hat geschrieben:Warum ist es denn nötig, einen expliziten Typecast zu machen:
Ich dachte Python mach allesvon allein!
Nein, denn wenn du einen Int durch einen Int teils, kommt immer ein Int raus. Deswegen muss einer der Faktoren ein float sein.
Jetzt noch meine umgeräumte Version:
Code: Alles auswählen
def compare(ist, soll, proz, ABS):
if abs(ist-soll) <= (soll * proz)/100.0 + ABS :
print "eq"
return True
else:
print "neq"
return False
print compare(4.0,5,10,0)
Änderungen: Nach Styleguide neu formatiert, True und False statt 1 und 0 benutzt (lesbarer), aus der Umwandlung in Float einfach durch einen Float geteilt, die globale Variable c eliminiert.
Edit (Leonidas): Der Thread wurde
geteilt.