Perché Python dà la risposta "sbagliata"?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
Sì, so importare la matematica
e usare sqrt
. Ma sto cercando una risposta a quanto sopra.
sqrt=x**(1/2)
sta facendo una divisione intera. 1/2 == 0
.
Quindi stai calcolando x(1/2) nel primo caso, x(0) nel secondo.
Quindi non è sbagliato, è la risposta giusta ad una domanda diversa.
Devi scrivere: sqrt = x**(1/2.0)
, altrimenti viene eseguita una divisione intera e l'espressione 1/2
restituisce 0
.
Questo comportamento è "normale" in Python 2.x, mentre in Python 3.x 1/2
si valuta a 0.5
. Se volete che il vostro codice Python 2.x si comporti come il 3.x per quanto riguarda la divisione scrivete from __future__ import division
- allora 1/2
valuterà a 0.5
e, per compatibilità all'indietro, 1//2
valuterà a 0
.
E per la cronaca, il modo preferito per calcolare una radice quadrata è questo:
import math
math.sqrt(x)