¿Hay una mano corta para la raíz n de x en Python?

Pregunta de syntax simple.

En matemáticas, si tengo dos números 3 y 2 y deseo calcular 3 a la potencia de 2, no se requiere ningún símbolo, pero escribo los dos pequeños. En Python esta operación parece estar representada por la syntax ** .

 >>> 3**2 9 

Si quiero ir en la otra dirección y calcular la segunda raíz de 9, en matemáticas necesito usar un símbolo:

Enésima raíz de x

¿Hay un símbolo de mano corta en Python, similar a ** que logre esto, es decir 29 . ¿O necesito usar el módulo de math ?

La raíz n de x es x^(1/n) , por lo que puedes hacer 9**(1/2.0) para encontrar la segunda raíz de 9, por ejemplo. En general, puede calcular la raíz n de x como:

 x**(1/float(n)) 

También puede hacer 1.0/n lugar de 1/float(n) . Se requiere para que el resultado sea un float lugar de un int .

También: x**(n**-1) , que es igual pero más corto que x**(1/float(n))

Si prefiere aplicar esta operación funcionalmente en lugar de con un operador de infijo (el símbolo ** ), puede pasar la base y el exponente como argumentos a la función pow :

 In [23]: (9**(0.5)) == pow(9, 0.5) Out[23]: True 

También me gusta encontrar nuevos usos para este hack de Infix en Python, aunque es más divertido aparte de una solución de alto rendimiento . Pero efectivamente podrías hacer tu propio símbolo personal para esto haciendo lo siguiente:

 class Infix: def __init__(self, function): self.function = function def __ror__(self, other): return Infix(lambda x, self=self, other=other: self.function(other, x)) def __or__(self, other): return self.function(other) def __rlshift__(self, other): return Infix(lambda x, self=self, other=other: self.function(other, x)) def __rshift__(self, other): return self.function(other) def __call__(self, value1, value2): return self.function(value1, value2) root_of = Infix(lambda x,y: y**(1.0/x)) print 2 |root_of| 9 3.0 

Básicamente, sqrt (9) es equivalente a 9 ^ .5

 >>>9**.5 3.0 

Deberías hacer

 16**(0.5) #If you print it, you get 4, So you can use this formula. 

Ahi esta. Es solo ** =)

Cualquier enésima raíz es una exponenciación de 1/n , así que para obtener la raíz cuadrada de 9, usas 9**(1/2) (o 9**0.5 ) para obtener la raíz cúbica, usas 9 ** (1/3) (que no podemos escribir con una fracción más simple), y para obtener la raíz nth, 9 ** (1/n) .

También tenga en cuenta que a partir de Python 3, ya no es necesario agregar puntos a los enteros para hacerlos flotar. Decir 1/3 funciona de la forma en que realmente lo esperaría, dando 0.333... como resultado, en lugar de cero. Para las versiones heredadas de Python, deberás recordar usar ese período (pero también preguntarte críticamente por qué estás usando una versión heredada de un lenguaje de progtwigción)

 def nthrootofm(a,n): return pow(a,(1/n)) a=81 n=4 q=nthrootofm(a,n) print(q) 

La función pow () toma dos parámetros.