Berechnung der Kubikwurzel in Python

7

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 *

%Vor%     
cybertextron 09.09.2012, 00:32
quelle

4 Antworten

17

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:

Ссылка

    
FogleBird 09.09.2012, 00:34
quelle
10

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 eval () wird bereits von Python als integrierte Funktion verwendet.

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

liefert

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.

    
Levon 09.09.2012 00:33
quelle
0

Das 1/3 ist eine ganzzahlige Division, die zu 0 ausgewertet wird. Probieren Sie 1./3

aus     
sizzzzlerz 09.09.2012 00:35
quelle
0

Ich 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%     
ron rothman ℝℝ 09.09.2012 00:36
quelle

Tags und Links