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
| | |-+  [PYTHON] Menu opciones ¿Con funciones es lo correcto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [PYTHON] Menu opciones ¿Con funciones es lo correcto?  (Leído 31,600 veces)
Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
[PYTHON] Menu opciones ¿Con funciones es lo correcto?
« en: 28 Marzo 2013, 18:42 pm »

Hola de nuevo  :D

Me estoy liando un poco con el tema de los menús de opciones en Python. Querría saber cual es la forma correcta de hacerlos. Es decir, para crear el típico ejemplo de una calculadora.

Por lo que he podido de ver, de los ejemplos que están por la red, la mayoría recomiendan usar funciones. Osea, que la primera función sea (por ejemplo) menu(). Y dentro de esta función, todas las opciones. Luego, dependiendo la opción que escojamos, nos mande a otra función...sumar(), restar(),etc...

Otros programadores, usan muchos if y repiten en cada opción, los raw_input dentro de cada función. Yo esto, no lo encuentro muy correcto.

Me gustaría ver si alguien puede postear la forma correcta de hacerlo. Pero sin recurrir a la POO. Ya que todavía no he llegado a eso.... :-\

Quiero aprender como es la mejor manera de hacer un menú. Entiendo que hay muchas maneras de hacerlo. Y quiero evitar recurrir a muchos if, elif, else, raw_inputs, ...

...Un saludo!


En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #1 en: 28 Marzo 2013, 18:55 pm »

no hay una unica forma correcta de hacerlo. Si no fuera asi la programacion seria muy aburrida no? XD

para mi la mejor calculadora es esta
 ;D

Código
  1. n=input("escriba su operacion matematica a realizar>")
  2. print n
  3.  


« Última modificación: 28 Marzo 2013, 18:57 pm por daryo » En línea

buenas
Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #2 en: 28 Marzo 2013, 19:01 pm »

no hay una unica forma correcta de hacerlo. Si no fuera asi la programacion seria muy aburrida no? XD


Ya, eso lo entiendo. Pero supongo, que cuantos menos código, mejor. Y claro, he visto ejemplos de como hacer una calculadora con whiles y un monton de raw_input. En cambio, otros optan por usar funciones. En este último caso, veo el código mas ordenado y comprensible. Eso sin contar que es mas fácil volver a llamar bloques de código llamando a esas funciones de nuevo.

Pienso, que abusando de los ciclos, esta uno mas atado al código.
En línea

Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #3 en: 28 Marzo 2013, 19:05 pm »


para mi la mejor calculadora es esta
 ;D

Código
  1. n=input("escriba su operacion matematica a realizar>")
  2. print n
  3.  


También está la opción de comprar una calculadora en los chinos y no teclear una línea de código  ;D

A ver si alguien se anima y postea un ejemplo mas ilustrativo. A lo que me refiero es no ir tecleando en cada opción líneas de código parecido. No tiene por que ser una calculadora expresamente, eh...

En este enlace http://foro.elhacker.net/scripting/python_menu_con_while-t307856.15.html se recurre a los while. Yo pregunto como hacerlo con funciones.
« Última modificación: 28 Marzo 2013, 19:09 pm por Yidu » En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #4 en: 28 Marzo 2013, 19:22 pm »

Código
  1. def suma(a,b):
  2.    return a+b
  3. def resta(a,b):
  4.    return a-b
  5. def multiplicar(a,b):
  6.    return a*b
  7. def dividir(a,b):
  8.    return a/b
  9.  
  10. while True:
  11.    print """
  12. teclee:
  13.  
  14. 1 para sumar
  15. 2 para restar
  16. 3 para multiplicqar
  17. 4 para dividir
  18. """
  19.    opcion=input(">")
  20.    a=input("digite el primer numero:")
  21.    b=input("digite el primer numero:")
  22.    if opcion == 1:
  23.        print suma(a,b)
  24.    elif opcion == 2:
  25.        print resta(a,b)
  26.  
  27.    elif opcion == 3:
  28.        print multiplicar(a,b)
  29.  
  30.    elif opcion == 4:
  31.        print dividir(a,b)
  32.  
  33.    else:
  34.        print "opcion incorrecta"
  35.  
« Última modificación: 28 Marzo 2013, 19:24 pm por daryo » En línea

buenas
Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #5 en: 28 Marzo 2013, 19:32 pm »

¡Muchas gracias daryo!. A esto me refería. Es que he visto ejemplos que abusan de los whiles y repetición constante de los inputs. Supongo que luego se puede definir el menu como una función. Y así, si estamos en otra parte del programa, poder llamarlo de nuevo. Cosa mas complicada si es un while ¿No?

Voy a practicar e iré posteando mis avances. Un saludo!
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #6 en: 28 Marzo 2013, 19:36 pm »

¡Muchas gracias daryo!. A esto me refería. Es que he visto ejemplos que abusan de los whiles y repetición constante de los inputs. Supongo que luego se puede definir el menu como una función. Y así, si estamos en otra parte del programa, poder llamarlo de nuevo. Cosa mas complicada si es un while ¿No?

Voy a practicar e iré posteando mis avances. Un saludo!

por nada jeje

claro el menu puede ser una funcion y llamarlo luego :)

En línea

buenas
0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #7 en: 29 Marzo 2013, 01:49 am »

Hola, muy buenos días.

Veo que ya te respondieron, sin embargo me gustaría poder exponer mi respuesta.

No necesariamente debemos crear una función con el menú de la aplicación a crear, pues eso podría ir dentro de un bucle "Infinito" (o mientras sea True), mediante el popular while. Posteriormente realizar un despliegue de las opciones que el usuario poseerá a lo largo de la utilización del programa (mediante print). Luego deberías pedir que el usuario ingrese una opción , ya sea mediante input() (numérico) o raw_input(). Todo depende si las opciones que despliegues son del tipo 1.- , 2.- , etc. Ó si son a) , b) , etc.

Ya teniendo eso tienes que hacer una comprobación de las opciones ingresadas y luego según la que escoja el usuario, llamas a la función (sumar, restar, multiplicar, dividir, etc) y por parámetros le pasas los números a procesar...

Esa sería una forma, la cuál no me gusta, ya que limitas a que el usuario simplemente maneje 2 números. Por eso prefiero esta calculadora:
Código
  1. print eval(raw_input("Operacion: ")
  2.  

Espero haber podido aclarar algunas dudas.

Saludos, Javier.
En línea

Yidu

Desconectado Desconectado

Mensajes: 133


Ver Perfil
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #8 en: 29 Marzo 2013, 11:20 am »



No necesariamente debemos crear una función con el menú de la aplicación a crear,

Ya...lo que pasa, es que estoy aprendiendo el uso de funciones. Y claro, estoy haciendo pruebas simples y tal. Supongo que una calculadora (como dijeron por aquí) se puede hacer de mil formas. Pero claro, busco no repetir el código en cada opción que pulsemos. Por eso, mi énfasis en uso de funciones. Y mas, que es lo que recomiendan en todos los libros que voy leyendo de Python.

Pero me he quedao estancado. Estoy haciendo este código...y cuando le doy a la opción 1 [sumar], me pide los dos números correctamente. Pero la suma no la hace. Me da error. El código no está acabado. Pero con solo probar la suma, no funciona.

Código
  1. def escojo ():
  2.    num1 = int (raw_input ('> Dime el primer numero: '))
  3.    num2 = int (raw_input ('> Dime el segundo numero: '))
  4.    return num1,num2
  5.  
  6. def suma (a,b):
  7.    return a + b
  8. def opcion():
  9.  
  10.    opc = int(raw_input ('Escoge una opcion "q" salir'))
  11.    if opc == 1:
  12.        escojo()
  13.        print suma (num1,num2)
  14.  
  15. def menu():
  16.    print '''Menu\n
  17.    1. Suma
  18.    2. Resta
  19.    3. Multiplicacion
  20.    4. Division
  21.    Q. Salir'''
  22. while 1:
  23. menu()
  24. opcion()
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [PYTHON] Menu opciones ¿Con funciones es lo correcto?
« Respuesta #9 en: 30 Marzo 2013, 01:56 am »

Pues es porque las variables num1 y num2 que pides los datos no son accesibles desde otro def, pues no son globales... Y usa input() no int(raw_input())

Creo que no leíste nada de lo que escribí más arriba u_u

Saludos, Javier.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Menu opciones anti-batch injections. Permite hasta 10 opciones.
Scripting
carlitos.dll 0 2,883 Último mensaje 7 Octubre 2008, 08:21 am
por carlitos.dll
[Python] Importar Funciones de C++ a Modulo de Python
Scripting
Di6it4Lj4ck4L 2 4,035 Último mensaje 2 Mayo 2011, 19:08 pm
por Di6it4Lj4ck4L
Menu en python con otro menu dentro
Scripting
AdeLax 2 6,543 Último mensaje 7 Octubre 2012, 21:46 pm
por AdeLax
Ayuda menú de opciones
Programación C/C++
Bus_19 3 2,147 Último mensaje 18 Noviembre 2012, 20:09 pm
por leosansan
Duda con C, funciones y menu de opciones.
Programación C/C++
faakuh 3 4,648 Último mensaje 10 Agosto 2017, 23:34 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines