Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: thecloudff7 en 25 Julio 2015, 20:47 pm



Título: [Resuelto][Duda] Cómo puedo sacar variables de una función? Python
Publicado por: thecloudff7 en 25 Julio 2015, 20:47 pm
Hola buenas, mi nombre es claudio y quería comentaros una cosa. Si el tema no es con este foro por favor, cámbienlo.

Hace poco he empezado con Python en programación, y lo más basico que podia hacer era una calculadora. Os dejo el codigo.

Código
  1. #Autor:Thecloudff7
  2. #-Primer programa con Python
  3.  
  4. print("Bienvenido a Calcel v 0.1!")
  5. num1 = int(input("Introduce el primer numero para calcular: "))
  6. num2 = int(input("Introduce el segundo numero para calcular: "))
  7.  
  8. signo = input("Elige el signo con que quieres calcular(+, -, *, /): ")
  9.  
  10. if signo == "+":
  11.  
  12.    resultado = num1+num2
  13.  
  14. elif signo == "-":
  15.  
  16.    resultado = num1-num2
  17.  
  18. elif signo == "*":
  19.  
  20.    resultado = num1*num2
  21.  
  22. elif signo == "/":
  23.  
  24.    resultado = num1/num2
  25.  
  26. else:
  27.  
  28.    print("Has introducido el caracter mal, porfavor intentelo de nuevo")
  29.  
  30.  
  31. print("Calculando...")
  32. print("Tu resultado es: ", resultado)
  33.  

Este programa funciona a la perfección. Muy basico, metes tus numeros y te sale el resultado.

Pero queria mejorar metiendo funciones, y que cuando hagas una división(pex.2/2) te pida si quieres el resto o no. Tienes que escribir S o N y si no escribes nada de eso, te devuelve la misma pregunta. Cómo puedo hacer eso? Os dejo el codigo que probe yo:

Código
  1. #--Calcel--#
  2. #Versión: 0.1
  3. #Autor:Thecloudff7
  4. #-Primer programa con Python
  5. print("Bienvenido a Calcel v 0.1!")
  6. num1 = int(input("Introduce el primer numero para calcular: "))
  7. num2 = int(input("Introduce el segundo numero para calcular: "))
  8. def resto():
  9.    resto = input("¿Quieres saber el resto de la división?(S/N): ")
  10.    if resto == "S":
  11.        res=num1%num2
  12.        return res
  13.    elif resto == "N":
  14.        return resto
  15.    else:
  16.        print("Opción incorrecta")
  17.        print("Calcular division entera...")
  18.        return resto
  19.  
  20.  
  21. signo = input("Elige el signo con que quieres calcular(+, -, *, /): ")
  22.  
  23. if signo == "+":
  24.  
  25.    resultado = num1+num2
  26.  
  27. elif signo == "-":
  28.  
  29.    resultado = num1-num2
  30.  
  31. elif signo == "*":
  32.  
  33.    resultado = num1*num2
  34.  
  35. elif signo == "/":
  36.  
  37.    resultado = num1/num2
  38.    resto()
  39.  
  40. else:
  41.  
  42.    print("Has introducido el caracter mal, porfavor intentelo de nuevo")
  43.  
  44.  
  45. print("Calculando...")
  46. print("Tu resultado es: ", resultado)
  47. resto= resto(res)
  48.  

Muchas gracias de ante mano. Si no entienden algo díganmelo

Mod: Esto no es una duda general, movido


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: iUDEX en 25 Julio 2015, 23:27 pm
Este tema debería ir en Scripting (http://foro.elhacker.net/scripting-b64.0/).

Bueno con respecto a tu duda... y asumiendo que usas Python 2.

Para declarar una función:

Código
  1. def funcion():
  2.    contenido
  3. funcion()

Quedaría algo así (función para sumar):

Código
  1. def suma():
  2.    resultado = num1 + num2
  3.  
  4. signo = raw_input("Elige el signo con que quieres calcular(+, -, *, /): ")
  5.  
  6. if signo == "+":
  7.    suma()

Nótese que en la línea 5 hay que cambiar el input a raw_input, ya que de por sí mismo, input no acepta strings como entrada, y por lo tanto arroja error.

Ahora, por "resto" creo que te refieres a "residuo". ¿No?

Lo que se me ocurre es que deberías hacer que el usuario primero ingrese los valores, los almacene en variables y luego pregunte si quiere ver el resto o no.

Algo como esto:

Código
  1. num1 = int(input("Introduce el primer numero para calcular: "))
  2. num2 = int(input("Introduce el segundo numero para calcular: "))
  3.  
  4. resto = raw_input("¿Quieres saber el resto de la división?(S/N): ")
  5.  
  6. if resto == "S":
  7.    residuo = num1 % num2
  8.    print residuo
  9. elif resto == "N":
  10.    resultado = num1 / num2
  11.    print resultado

Por cierto, un consejo:

Código
  1. num1 = int(input("Introduce el primer numero para calcular: "))

Puedes modificar esa línea a:

Código
  1. num1 = input("Introduce el primer numero para calcular: ")

Para que también se puedan ingresar floats.


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: thecloudff7 en 26 Julio 2015, 00:49 am
Este tema debería ir en Scripting (http://foro.elhacker.net/scripting-b64.0/).

Bueno con respecto a tu duda... y asumiendo que usas Python 2.

Para declarar una función:

Código
  1. def funcion():
  2.    contenido
  3. funcion()

Quedaría algo así (función para sumar):

Código
  1. def suma():
  2.    resultado = num1 + num2
  3. suma()
  4.  
  5. signo = raw_input("Elige el signo con que quieres calcular(+, -, *, /): ")
  6.  
  7. if signo == "+":
  8.    suma()

Nótese que en la línea 5 hay que cambiar el input a raw_input, ya que de por sí mismo, input no acepta strings como entrada, y por lo tanto arroja error.

Ahora, por "resto" creo que te refieres a "residuo". ¿No?

Lo que se me ocurre es que deberías hacer que el usuario primero ingrese los valores, los almacene en variables y luego pregunte si quiere ver el resto o no.

Algo como esto:

Código
  1. num1 = int(input("Introduce el primer numero para calcular: "))
  2. num2 = int(input("Introduce el segundo numero para calcular: "))
  3.  
  4. resto = raw_input("¿Quieres saber el resto de la división?(S/N): ")
  5.  
  6. if resto == "S":
  7.    residuo = num1 % num2
  8.    print residuo
  9. elif resto == "N":
  10.    resultado = num1 / num2
  11.    print resultado

Por cierto, un consejo:

Código
  1. num1 = int(input("Introduce el primer numero para calcular: "))

Puedes modificar esa línea a:

Código
  1. num1 = input("Introduce el primer numero para calcular: ")

Para que también se puedan ingresar floats.

Vale pero sigo con el mismo problema.

mira:

Código
  1. #--Calcel--#
  2. #Versión: 0.1
  3. #Autor:Thecloudff7
  4. #-Primer programa con Python
  5. print("Bienvenido a Calcel v 0.1!")
  6. num1 = input("Introduce el primer numero para calcular: ")
  7. num2 = input("Introduce el segundo numero para calcular: ")
  8.  
  9. def suma():
  10.    resultado = num1+num2
  11. def resta():
  12.    resultado = num1-num2
  13. def multi():
  14.    resultado = num1*num2
  15. def divi():
  16.    resultado = num1/num2
  17.  
  18. signo =input("Elige el signo con que quieres calcular(+, -, *, /): ")
  19.  
  20. if signo=="+":
  21.    suma()
  22.    print("Calculando...")
  23.    print("Tu resultado es: ", resultado)
  24. elif signo=="-":
  25.    resta()
  26. elif signo=="*":
  27.    multi()
  28. elif signo=="/":
  29.    divi()
  30.  
  31.  
  32. print("Calculando...")
  33. print("Tu resultado es: ", resultado)
  34. resto= resto(res)
  35. if signo =="/":
  36.    print("El resto vale: ", resto)
  37.  

el problema esta ahora en que cuando pongo la variable "resultado" fuera de la definicion(por ejemplo en el print mostrado) me sale esto:
"NameError: name 'resultado' is not defined"

Por cierto muchas gracias por todo! Pero el raw_input me dice que no esta definido. Hay que importar algo?

[MOD] Modificada asignación de etiqueta en colocación erronea.


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: iUDEX en 26 Julio 2015, 01:17 am
Asumí que usabas Python 2, es por eso que te nombré el clásico raw_input y por lo que tengo entendido, es que en Python 3 ya no existe.

Bueno con respecto al problema de resultado not defined, solo tienes que declarar la variable como global.

Así:

Código
  1. print("Bienvenido a Calcel v 0.1!")
  2. num1 = input("Introduce el primer numero para calcular: ")
  3. num2 = input("Introduce el segundo numero para calcular: ")
  4.  
  5. def suma():
  6.    global resultado
  7.    resultado = num1+num2
  8.    print("Calculando...")
  9.    print("Tu resultado es: ", resultado)
  10.  
  11. if signo=="+":
  12.    suma()

Ojo! Le moví algo, tenías el if del signo + así:

Código
  1. if signo=="+":
  2.    suma()
  3.    print("Calculando...")
  4.    print("Tu resultado es: ", resultado)

Entonces envíe los dos print directamente a la función, cuidado te confundes!

Ah y te has pasado con la etiqueta GeSHi, mira desde la línea 39.


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: thecloudff7 en 26 Julio 2015, 17:48 pm
Asumí que usabas Python 2, es por eso que te nombré el clásico raw_input y por lo que tengo entendido, es que en Python 3 ya no existe.

Bueno con respecto al problema de resultado not defined, solo tienes que declarar la variable como global.

Así:

Código
  1. print("Bienvenido a Calcel v 0.1!")
  2. num1 = input("Introduce el primer numero para calcular: ")
  3. num2 = input("Introduce el segundo numero para calcular: ")
  4.  
  5. def suma():
  6.    global resultado
  7.    resultado = num1+num2
  8.    print("Calculando...")
  9.    print("Tu resultado es: ", resultado)
  10.  
  11. if signo=="+":
  12.    suma()

Ojo! Le moví algo, tenías el if del signo + así:

Código
  1. if signo=="+":
  2.    suma()
  3.    print("Calculando...")
  4.    print("Tu resultado es: ", resultado)

Entonces envíe los dos print directamente a la función, cuidado te confundes!

Ah y te has pasado con la etiqueta GeSHi, mira desde la línea 39.

Muchas gracias enserio!! ya lo tengo todo arreglado! Fallaba lo de la variable global jeje. te dejo el codigo final:
Código
  1. def suma():
  2.    global resultado
  3.    resultado = num1+num2
  4.    print("Calculando...")
  5.    print("Tu resultado es: ", resultado)
  6. def resta():
  7.    global resultado
  8.    resultado = num1-num2
  9.    print("Calculando...")
  10.    print("Tu resultado es: ", resultado)
  11. def multi():
  12.    global resultado
  13.    resultado = num1*num2
  14.    print("Calculando...")
  15.    print("Tu resultado es: ", resultado)
  16. def divi():
  17.    global resultado
  18.    resultado = num1/num2
  19.    print("Calculando...")
  20.    print("Tu resultado es: ", resultado)
  21.  
  22. signo =input("Elige el signo con que quieres calcular(+, -, *, /): ")
  23.  
  24. if signo=="+":
  25.    suma()
  26. elif signo=="-":
  27.    resta()
  28. elif signo=="*":
  29.    multi()
  30. elif signo=="/":
  31.    resto=input("Quieres saber el resto?(S/N)?")
  32.    if resto=="S":
  33.        resi= num1%num2
  34.        divi=num1/num2
  35.        print("Calculando...")
  36.        print("Tu resultado es", divi, "Y tu resto", resi)
  37.    elif resto=="N":
  38.        divi()
  39.  

Otra pregunta. sabrias donde puedo conseguir tutoriales para hacer interfaces?


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: iUDEX en 26 Julio 2015, 21:45 pm
¿Interfaces? ¿Te refieres a elementos gráficos?

Yo personalmente prefiero usar PyGTK, acá un tutorial (PDF) (http://www.pygtk.org/dist/pygtk2-tut-es.pdf). No lo leí todo, pero hasta donde yo llegué lo puedo considerar bastante completo. El punto malo es que usa Python 2, pero basta con un poco de ingenio para que lo adaptes a Python 3.

Encantado de ayudar jejej.

A propósito, si ya has resuelto tu duda agrégale un "[Resuelto]" al título y si puedes cámbiale el ícono.


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: thecloudff7 en 26 Julio 2015, 22:44 pm
Muchas gracias por todo enserio!! me gustaria darte puntos de foro si hay jaaj :rolleyes:


Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: engel lex en 27 Julio 2015, 08:27 am
Muchas gracias por todo enserio!! me gustaria darte puntos de foro si hay jaaj :rolleyes:

no hay puntos... esto es un foro de discusión y aprendizaje, no son necesarios...  ;-)



Título: Re: [Duda] Cómo puedo sacar variables de una función? Python
Publicado por: thecloudff7 en 27 Julio 2015, 10:26 am
soy nuevo que mas quieres


Título: Re: [Resuelto][Duda] Cómo puedo sacar variables de una función? Python
Publicado por: iUDEX en 28 Julio 2015, 02:43 am
Y mejor que no haya! Ese sistema de puntos, respeto o lo que sea es siempre abusado! jajaj.


Título: Re: [Resuelto][Duda] Cómo puedo sacar variables de una función? Python
Publicado por: thecloudff7 en 28 Julio 2015, 10:33 am
Bueno entonces una razon para que no haya  :P