Also habe ich die folgende Klasse definiert, die einem probability mass function ähneln sollte. Seine Logik scheint jedoch gebrochen zu sein und es wird jedesmal, wenn ich versuche, ein neues Objekt zu initialisieren, SUM_ERROR
auslösen.`__init __()` löst immer Fehler
class ProbabilityMass(dict):
class InvalidEntries(Exception):
pass
SUM_ERROR = InvalidEntries("all values must add upto '1'")
VAL_ERROR = InvalidEntries("negative values are not allowed")
def __init__(self, pm):
dict.__init__(pm)
# Input requirements
if not self.sumsUptoOne():
raise ProbabilityMass.SUM_ERROR
if not self.isNonnegative():
raise ProbabilityMass.VAL_ERROR
def isNonnegative(self):
return all(d < 0 for d in self.values())
def sumsUptoOne(self):
return sum(self.values()) == 1
Wie kann ich das beheben?
Canonical Syntax. 'q = Wahrscheinlichkeitsmass ({...})' –
'print (Summe (self.values ()))'. Meine Vermutung ist, dass Sie Gleitkomma Probleme haben und nur erfordern, dass die Summe sehr nahe bei 1 ist. –
Mit Ihrem Code, und geben Sie ihm ein Diktat, wie Sie es initialisieren, 'self.values ()' ist eine leere Liste, wie auch 'self.keys()' –