Autor
|
Tema: [Resuelto][Duda] Cómo puedo sacar variables de una función? Python (Leído 9,143 veces)
|
thecloudff7
Desconectado
Mensajes: 10
|
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. #Autor:Thecloudff7 #-Primer programa con Python print("Bienvenido a Calcel v 0.1!") num1 = int(input("Introduce el primer numero para calcular: ")) num2 = int(input("Introduce el segundo numero para calcular: ")) signo = input("Elige el signo con que quieres calcular(+, -, *, /): ") if signo == "+": resultado = num1+num2 elif signo == "-": resultado = num1-num2 elif signo == "*": resultado = num1*num2 elif signo == "/": resultado = num1/num2 else: print("Has introducido el caracter mal, porfavor intentelo de nuevo") print("Calculando...") print("Tu resultado es: ", resultado)
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: #--Calcel--# #Versión: 0.1 #Autor:Thecloudff7 #-Primer programa con Python print("Bienvenido a Calcel v 0.1!") num1 = int(input("Introduce el primer numero para calcular: ")) num2 = int(input("Introduce el segundo numero para calcular: ")) def resto(): resto = input("¿Quieres saber el resto de la división?(S/N): ") if resto == "S": res=num1%num2 return res elif resto == "N": return resto else: print("Opción incorrecta") print("Calcular division entera...") return resto signo = input("Elige el signo con que quieres calcular(+, -, *, /): ") if signo == "+": resultado = num1+num2 elif signo == "-": resultado = num1-num2 elif signo == "*": resultado = num1*num2 elif signo == "/": resultado = num1/num2 resto() else: print("Has introducido el caracter mal, porfavor intentelo de nuevo") print("Calculando...") print("Tu resultado es: ", resultado) resto= resto(res)
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
Mensajes: 791
Incluso la "nada" es un "algo"
|
Este tema debería ir en Scripting. Bueno con respecto a tu duda... y asumiendo que usas Python 2. Para declarar una función: def funcion(): contenido funcion()
Quedaría algo así (función para sumar): def suma(): resultado = num1 + num2 signo = raw_input("Elige el signo con que quieres calcular(+, -, *, /): ") if signo == "+": 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: num1 = int(input("Introduce el primer numero para calcular: ")) num2 = int(input("Introduce el segundo numero para calcular: ")) resto = raw_input("¿Quieres saber el resto de la división?(S/N): ") if resto == "S": residuo = num1 % num2 print residuo elif resto == "N": resultado = num1 / num2 print resultado
Por cierto, un consejo: num1 = int(input("Introduce el primer numero para calcular: "))
Puedes modificar esa línea a: 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
Mensajes: 10
|
Este tema debería ir en Scripting. Bueno con respecto a tu duda... y asumiendo que usas Python 2. Para declarar una función: def funcion(): contenido funcion()
Quedaría algo así (función para sumar): def suma(): resultado = num1 + num2 suma() signo = raw_input("Elige el signo con que quieres calcular(+, -, *, /): ") if signo == "+": 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: num1 = int(input("Introduce el primer numero para calcular: ")) num2 = int(input("Introduce el segundo numero para calcular: ")) resto = raw_input("¿Quieres saber el resto de la división?(S/N): ") if resto == "S": residuo = num1 % num2 print residuo elif resto == "N": resultado = num1 / num2 print resultado
Por cierto, un consejo: num1 = int(input("Introduce el primer numero para calcular: "))
Puedes modificar esa línea a: num1 = input("Introduce el primer numero para calcular: ")
Para que también se puedan ingresar floats. Vale pero sigo con el mismo problema. mira: #--Calcel--# #Versión: 0.1 #Autor:Thecloudff7 #-Primer programa con Python print("Bienvenido a Calcel v 0.1!") num1 = input("Introduce el primer numero para calcular: ") num2 = input("Introduce el segundo numero para calcular: ") def suma(): resultado = num1+num2 def resta(): resultado = num1-num2 def multi(): resultado = num1*num2 def divi(): resultado = num1/num2 signo =input("Elige el signo con que quieres calcular(+, -, *, /): ") if signo=="+": suma() print("Calculando...") print("Tu resultado es: ", resultado) elif signo=="-": resta() elif signo=="*": multi() elif signo=="/": divi() print("Calculando...") print("Tu resultado es: ", resultado) resto= resto(res) if signo =="/": print("El resto vale: ", resto)
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
Mensajes: 791
Incluso la "nada" es un "algo"
|
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í: print("Bienvenido a Calcel v 0.1!") num1 = input("Introduce el primer numero para calcular: ") num2 = input("Introduce el segundo numero para calcular: ") def suma(): global resultado resultado = num1+num2 print("Calculando...") print("Tu resultado es: ", resultado) if signo=="+": suma()
Ojo! Le moví algo, tenías el if del signo + así: if signo=="+": suma() print("Calculando...") 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
Mensajes: 10
|
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í: print("Bienvenido a Calcel v 0.1!") num1 = input("Introduce el primer numero para calcular: ") num2 = input("Introduce el segundo numero para calcular: ") def suma(): global resultado resultado = num1+num2 print("Calculando...") print("Tu resultado es: ", resultado) if signo=="+": suma()
Ojo! Le moví algo, tenías el if del signo + así: if signo=="+": suma() print("Calculando...") 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: def suma(): global resultado resultado = num1+num2 print("Calculando...") print("Tu resultado es: ", resultado) def resta(): global resultado resultado = num1-num2 print("Calculando...") print("Tu resultado es: ", resultado) def multi(): global resultado resultado = num1*num2 print("Calculando...") print("Tu resultado es: ", resultado) def divi(): global resultado resultado = num1/num2 print("Calculando...") print("Tu resultado es: ", resultado) signo =input("Elige el signo con que quieres calcular(+, -, *, /): ") if signo=="+": suma() elif signo=="-": resta() elif signo=="*": multi() elif signo=="/": resto=input("Quieres saber el resto?(S/N)?") if resto=="S": resi= num1%num2 divi=num1/num2 print("Calculando...") print("Tu resultado es", divi, "Y tu resto", resi) elif resto=="N": divi()
Otra pregunta. sabrias donde puedo conseguir tutoriales para hacer interfaces?
|
|
|
En línea
|
|
|
|
Br1ant
Desconectado
Mensajes: 791
Incluso la "nada" es un "algo"
|
¿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
Mensajes: 10
|
Muchas gracias por todo enserio!! me gustaria darte puntos de foro si hay jaaj
|
|
|
En línea
|
|
|
|
engel lex
|
Muchas gracias por todo enserio!! me gustaria darte puntos de foro si hay jaaj 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
Mensajes: 10
|
soy nuevo que mas quieres
|
|
|
En línea
|
|
|
|
Br1ant
Desconectado
Mensajes: 791
Incluso la "nada" es un "algo"
|
Y mejor que no haya! Ese sistema de puntos, respeto o lo que sea es siempre abusado! jajaj.
|
|
|
En línea
|
Namasté, criatura.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[RESUELTO] [Duda] Como puedo retrazar la ejecucion de un Comando???
Programación Visual Basic
|
agus0
|
6
|
6,124
|
14 Octubre 2009, 04:51 am
por BlackZeroX
|
|
|
Duda imprimir variables Python
« 1 2 »
Scripting
|
CaronteGold
|
16
|
20,092
|
29 Noviembre 2009, 22:30 pm
por Novlucker
|
|
|
[Resuelto] [bat] Como puedo crear directorios desde variables?
Scripting
|
miguel0542
|
2
|
4,370
|
2 Septiembre 2012, 20:15 pm
por miguel0542
|
|
|
Variables que no se guardan fuera de funcion (Python)
Scripting
|
abreu20011
|
3
|
3,588
|
5 Octubre 2012, 16:04 pm
por abreu20011
|
|
|
[Resuelto] Porque no puedo establecer los valores para las variables POST?
PHP
|
VintageChanel
|
4
|
3,207
|
8 Agosto 2017, 16:38 pm
por VintageChanel
|
|