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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Resuelto][Duda] Cómo puedo sacar variables de una función? Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto][Duda] Cómo puedo sacar variables de una función? Python  (Leído 9,143 veces)
thecloudff7

Desconectado Desconectado

Mensajes: 10


Ver Perfil
[Resuelto][Duda] Cómo puedo sacar variables de una función? Python
« 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


« Última modificación: 27 Julio 2015, 10:30 am por thecloudff7 » En línea

Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #1 en: 25 Julio 2015, 23:27 pm »

Este tema debería ir en Scripting.

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.


« Última modificación: 27 Julio 2015, 02:34 am por gck » En línea

Namasté, criatura.
thecloudff7

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #2 en: 26 Julio 2015, 00:49 am »

Este tema debería ir en Scripting.

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.
« Última modificación: 26 Julio 2015, 01:25 am por simorg » En línea

Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #3 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.
« Última modificación: 26 Julio 2015, 08:37 am por gck » En línea

Namasté, criatura.
thecloudff7

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #4 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?
En línea

Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #5 en: 26 Julio 2015, 21:45 pm »

¿Interfaces? ¿Te refieres a elementos gráficos?

Yo personalmente prefiero usar PyGTK, acá un tutorial (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.
« Última modificación: 26 Julio 2015, 22:47 pm por gck » En línea

Namasté, criatura.
thecloudff7

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #6 en: 26 Julio 2015, 22:44 pm »

Muchas gracias por todo enserio!! me gustaria darte puntos de foro si hay jaaj :rolleyes:
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #7 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...  ;-)

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
thecloudff7

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: [Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #8 en: 27 Julio 2015, 10:26 am »

soy nuevo que mas quieres
En línea

Br1ant


Desconectado Desconectado

Mensajes: 791


Incluso la "nada" es un "algo"


Ver Perfil WWW
Re: [Resuelto][Duda] Cómo puedo sacar variables de una función? Python
« Respuesta #9 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.
En línea

Namasté, criatura.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines