Hvorfor giver Python det "forkerte" svar?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
Ja, jeg kender import math
og bruger sqrt
. Men jeg søger et svar på ovenstående.
sqrt=x**(1/2)
udfører heltalsdivision. 1/2 == 0
.
Så du beregner x(1/2) i det første tilfælde, x(0) i det andet tilfælde.
Så det er ikke forkert, det er det rigtige svar på et andet spørgsmål.
Du er nødt til at skrive: Ellers udføres der en heltalsdivision, og udtrykket 1/2
giver 0
.
Denne opførsel er "normal" i Python 2.x, mens 1/2
i Python 3.x evalueres til 0,5
. Hvis du vil have din Python 2.x-kode til at opføre sig som 3.x med hensyn til division, så skriv from __future__ import division
- så vil 1/2
evaluere til 0.5
og for bagudkompatibilitet vil 1//2
evaluere til 0
.
Og for en god ordens skyld, så er den foretrukne måde at beregne en kvadratrod på denne måde:
import math
math.sqrt(x)