Ich versuche, die folgende Funktion in Python zu bewerten:
%Vor% Warum gibt es mir immer 1
zurück?
Ich versuche, die Right
und Left
Approximation eines Integrals zu berechnen, und letzteres gilt Simpson's Rule
, aber Python
scheint diesen Ausdruck nicht zu mögen.
Hilfe?
* Vollständiger Code *
Verwenden Sie Fließkomma-Mathematik (1/3 schneidet auf Null). Auch keine Mathe.pow (** für die Potenzierung) ...
%Vor% Außerdem sind min
, max
und eval
integrierte Funktionen - Sie überschatten sie.
Außerdem sind die zusätzlichen Leerzeichen, die Sie in Ihren Funktionsaufrufargumenten hinzufügen, gegen PEP-8 (Python-Styleguide) Insbesondere dieser Absatz:
Verwenden Sie
%Vor%statt
%Vor% in Ihrem Code. Andernfalls ist Ihr Exponent immer 0
wegen der ganzzahligen Kürzung.
Ob die Verwendung von **
oder math.pow()
Ihrer Präferenz entspricht, würden die meisten wahrscheinlich nur **
verwenden.
Es ist wahrscheinlich nicht eine gute Idee, eine Funktion namens eval
seit
Hintergrund:
Beachten Sie, dass Sie auch 1.0 / 3
oder 1.0 / 3.0
.. ausführen können. Solange eins der Operanden in der Division ein float
ist, wird das Ergebnis ein float
sein.
Dieses float(1/3)
würde jedoch nicht funktionieren, da es das 0
aus der Ganzzahl division 1/3
in ein float
umwandelt und Ihnen 0.0
Unter Python 3.x hätte der Divisionsoperator /
wie erwartet funktioniert (dh er würde Ihnen sogar bei zwei Integer-Operanden einen float
-Wert geben). Um eine ganzzahlige Division zu erhalten, müssten Sie //
verwenden.
Wenn Sie dies unter Python 3.x ausgeführt hätten, wären Sie nicht auf dieses spezielle Problem gestoßen.
Das 1/3 ist eine ganzzahlige Division, die zu 0 ausgewertet wird. Probieren Sie 1./3
ausIch denke, das liegt daran, dass Sie Integer-Arithmetik ausführen, wo Sie eigentlich Gleitkommaarithmetik durchführen wollen. Versuchen Sie, die [zweite] 1 in 1.0 zu ändern:
%Vor%Tags und Links python