elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python][Ejercicio (por y para novatos)] Función para elevar potencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python][Ejercicio (por y para novatos)] Función para elevar potencia  (Leído 19,234 veces)
kerith

Desconectado Desconectado

Mensajes: 32


Ver Perfil WWW
[Python][Ejercicio (por y para novatos)] Función para elevar potencia
« en: 1 Enero 2011, 21:51 pm »

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:
Código
  1. import sys
  2.  
  3. def main():
  4.    numero = int(raw_input('Numero: '))
  5.    potencia = int(raw_input('Potencia: '))
  6. # A partir de aqui es prescindible
  7.    resultado = ElevarPotencia(numero, potencia)
  8.    print resultado
  9. # Hasta aqui ^
  10.  
  11. if __name__ == '__main__':
  12.    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



En línea


Solo me arrepiento de no vivir lo suficiente para saciar mi curiosidad.
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #1 en: 1 Enero 2011, 22:26 pm »

Bueno, aquí mi versión:
Código
  1. def ElevarPotencia(numero, exponente):
  2. resultado = numero
  3. for x in range(exponente-1): resultado*=numero
  4. return resultado


En línea

kerith

Desconectado Desconectado

Mensajes: 32


Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #2 en: 1 Enero 2011, 23:10 pm »

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
En línea


Solo me arrepiento de no vivir lo suficiente para saciar mi curiosidad.
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #3 en: 1 Enero 2011, 23:19 pm »

Código
  1. def ElevarPotencia(numero, exponente):
  2.        if exponente == 0: return 1
  3. resultado = numero
  4. for x in range(exponente-1): resultado*=numero
  5. return resultado
;D
En línea

.:WindHack:.

Desconectado Desconectado

Mensajes: 167

Prisionero de mi propia mente...


Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #4 en: 2 Enero 2011, 02:07 am »

Código
  1. def pPow(bBase,eExp):
  2. if eExp <= 0:
  3. return 1
  4. else:
  5. return bBase * pPow(bBase,eExp-1)
En línea

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."
kerith

Desconectado Desconectado

Mensajes: 32


Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #5 en: 2 Enero 2011, 13:15 pm »

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:
Código
  1. def pPow(bBase,eExp):
  2. if eExp <= 0:return 1
  3. 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
En línea


Solo me arrepiento de no vivir lo suficiente para saciar mi curiosidad.
xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #6 en: 2 Enero 2011, 13:17 pm »

Buena esa Windhack ^^

kerith, eso se llama función recursiva.
En línea

kerith

Desconectado Desconectado

Mensajes: 32


Ver Perfil WWW
Re: [Python][Ejercicio (por y para novatos)] Función para elevar potencia
« Respuesta #7 en: 2 Enero 2011, 14:10 pm »

Citar
kerith, 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().

Código
  1. def ElevarPotencia(numero, exponente):
  2.    num_base = numero
  3.    contador = 0
  4.    if exponente != 0:
  5.        while contador < exponente:
  6.            numero *= num_base
  7.            contador +=  1
  8.    else:
  9.        numero = 1
  10.    return numero
La verdad es que he aprendido mucho con este post.

Gracias a los dos.

salu2, kerith
« Última modificación: 2 Enero 2011, 14:11 pm por kerith » En línea


Solo me arrepiento de no vivir lo suficiente para saciar mi curiosidad.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Elevar a cualquier potencia. [Batch]
Scripting
leogtz 2 10,652 Último mensaje 9 Abril 2009, 23:34 pm
por leogtz
[Batch] ayuda!! Elevar un Numero a una Potencia
Scripting
darkgx 3 11,668 Último mensaje 16 Diciembre 2009, 20:42 pm
por leogtz
Ejercicio elevar una potencia
Ejercicios
SXF 5 21,842 Último mensaje 9 Noviembre 2011, 16:12 pm
por landerzx
Configurar Geany para Python
Scripting
cristiantorres 2 7,387 Último mensaje 26 Abril 2012, 18:23 pm
por cristiantorres
Preparación para un ejercicio
Ingeniería Inversa
Puntoinfinito 1 2,252 Último mensaje 27 Agosto 2012, 04:07 am
por apuromafo CLS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines