Waarom geeft Python het "verkeerde" antwoord?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
Ja, ik ken import math
en gebruik sqrt
. Maar ik'ben op zoek naar een antwoord op het bovenstaande.
sqrt=x**(1/2)
is een gehele deling. 1/2 == 0
.
Je berekent dus x(1/2) in het eerste geval, x(0) in het tweede geval.
Het is dus niet verkeerd, het is het juiste antwoord op een andere vraag.
Je moet schrijven: sqrt = x**(1/2,0)
, anders wordt er een gehele deling uitgevoerd en geeft de uitdrukking 1/2
0
terug.
Dit gedrag is "normaal" in Python 2.x, terwijl in Python 3.x 1/2
evalueert naar 0.5
. Als u wilt dat uw Python 2.x code zich gedraagt als 3.x met betrekking tot deling, schrijf dan from __future__ import division
- dan zal 1/2
evalueren naar 0.5
en voor achterwaartse compatibiliteit zal 1//2
evalueren naar 0
.
En voor de goede orde, de beste manier om een vierkantswortel te berekenen is deze:
import math
math.sqrt(x)