Buenas, he estado trasteando un poco con Python y me han entrado ganas de ver si era capaz de programar otra vez un algoritmo que tenía para elevar un número a una de sus potencias (es totalmente inútil, lo sé, pero es un reto al fin y al cabo).
El caso es que me gustaría proponeros un reto muy sencillo:
import sys
def main():
numero = int(raw_input('Numero: '))
potencia = int(raw_input('Potencia: '))
# A partir de aqui es prescindible
resultado = ElevarPotencia(numero, potencia)
print resultado
# Hasta aqui ^
if __name__ == '__main__':
main()
A partir de esto, programad la función ElevarPotencia que, como su propio nombre indica, tiene que elevar el número 'numero' a la potencia 'potencia' (a mi me han salido 10 líneas, contando la de 'def' y la de 'return').
Este es un ejercicio hecho por y para novatos, así que absténganse los 'Está tirado' y comentarios por el estilo, por favor
Bueno, aquí mi versión:
def ElevarPotencia(numero, exponente):
resultado = numero
for x in range(exponente-1): resultado*=numero
return resultado
Tu solución tiene un fallo:
Si el exponente es 0, el resultado es 1 siempre, y en tu script no ce cumple.
Aún así, creo que con un 'if' para controlar lo del exponente lo solucionarías, y que es es una solución muy elegante y comprimida.
salu2, kerith
def ElevarPotencia(numero, exponente):
if exponente == 0: return 1
resultado = numero
for x in range(exponente-1): resultado*=numero
return resultado
;D
def pPow(bBase,eExp):
if eExp <= 0:
return 1
else:
return bBase * pPow(bBase,eExp-1)
Yo creía que no se podía hacer en menos líneas que pablomi, pero veo que si.
.:WindHack:., tu solución (supongo que lo sabías) se peude comprimir en 3 líneas:
def pPow(bBase,eExp):
if eExp <= 0:return 1
return bBase * pPow(bBase,eExp-1)
Serías tan amable de explicármelo? Sé que funciona, pero soy un poco noob y no termino de entenderlo.
Me gustan mucho las dos soluciones, luego pondré la mía, pero me da un poco de vergüenza, ocupa 10 líneas.
Cuanto me queda por aprender...
salu2, kerith
Buena esa Windhack ^^
kerith, eso se llama función recursiva (http://es.wikipedia.org/wiki/Algoritmo_recursivo).
Citarkerith, eso se llama función recursiva.
Gracias, pablomi.
Bueno, aquí va mi código. Utiliza un contador y un bucle while, pero esque no conocía la función range().
def ElevarPotencia(numero, exponente):
num_base = numero
contador = 0
if exponente != 0:
while contador < exponente:
numero *= num_base
contador += 1
else:
numero = 1
return numero
La verdad es que he aprendido mucho con este post.
Gracias a los dos.
salu2, kerith