Hi,
mein Problem ist , das ich Prozentzahlen und Absolute Werte verarbeiten muss.
Das Problem hatte ich schon mal hier beschrieben:
http://www.python-forum.de/viewtopic.php?f=1&t=25983
Um das zu lösen habe ich wie vorgeschlagen eine eigene Klasse "Limits" geschrieben.
Die sieht so aus:
Code: Alles auswählen
#using a limits class so
#we can create limits which are absolute
#or percentage
class limits:
def __init__(self):
#set defaults here AND ONLY HERE
#so you can easily change this later
#if needed
self.defaultmin = (0.05, True)
self.defaultmax = (0.95, True)
self.min = self.defaultmin
self.max = self.defaultmax
def setlimits(self, min, max):
for limit in (min, max):
if limit is not None:
if limit[-1:] == "%":
tmp = limit[:-1]
tmppercentage = True
else:
tmp = limit
tmppercentage = False
try:
tmp = float(tmp)
except ValueError:
raise self.limit_no_float
else:
if tmppercentage:
tmp = tmp / 100.0
setattr(self, limit, (tmp, tmppercentage))
if self.max[1] == self.min[1] and self.min[0] >= self.max[0]:
self.min = self.defaultmin
self.max = self.defaultmax
raise self.lower_bigger_upper
Da fehlen zwar ein paar Methoden, aber die beschäftigen sich nur mit der Ausgabe der Daten für root, hier also nicht interessant.
Nun möchte ich dem Benutzer zur Laufzeit direkt anzeigen welche Werte er eingegeben hat (ich lese sie aus einer von ihm editierten XML Datei aus)
damit er, sollte er einen Fehler finden sofort das Programm stoppen kann und nachsehen kann was los ist. (sobald ich da alles eingelesen habe werden die Daten für eine Analyse verwendet und
die dauert je nach Datenmenge zwischen 1 und 10h. Da möchte man nicht wegen einem Tippfehler von vorne Anfangen nur weil das Prog die Werte nicht nochmal angezeigt hat)
Im Moment habe ich dazu einfache print Anweisungen die dem Benutzer seine Werte mitteilen und falls keine oder invalide Werte eingegeben wurden, wann auf den Default Wert zurückgegriffen worden ist.
Wollte das ganze an sich auch ohne das setlimits() machen und direkt alles bei der Initalisierung verarbeiten, aber dann haut mir eine Exception die Zuweisung von:
weg sodass a dann nicht definiert wäre.
Das logging Module wäre eine alternative aber afaik (zumindest hatte ich da das letzte mal Probleme mit) gibt dieses erst nach der kompletten Ausführung der Funktion die geloggten Werte weiter statt in Echtzeit. Was ich hier ja gerade haben möchte.