Autor
|
Tema: [PYTHON] Menu opciones ¿Con funciones es lo correcto? (Leído 33,515 veces)
|
Yidu
Desconectado
Mensajes: 134
|
Hola de nuevo  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
|
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  n=input("escriba su operacion matematica a realizar>") print n
|
|
« Última modificación: 28 Marzo 2013, 18:57 pm por daryo »
|
En línea
|
buenas
|
|
|
Yidu
Desconectado
Mensajes: 134
|
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
Mensajes: 134
|
para mi la mejor calculadora es esta  n=input("escriba su operacion matematica a realizar>") print n
También está la opción de comprar una calculadora en los chinos y no teclear una línea de código  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
|
def suma(a,b): return a+b def resta(a,b): return a-b def multiplicar(a,b): return a*b def dividir(a,b): return a/b while True: print """ teclee: 1 para sumar 2 para restar 3 para multiplicqar 4 para dividir """ opcion=input(">") a=input("digite el primer numero:") b=input("digite el primer numero:") if opcion == 1: print suma(a,b) elif opcion == 2: print resta(a,b) elif opcion == 3: print multiplicar(a,b) elif opcion == 4: print dividir(a,b) else: print "opcion incorrecta"
|
|
« Última modificación: 28 Marzo 2013, 19:24 pm por daryo »
|
En línea
|
buenas
|
|
|
Yidu
Desconectado
Mensajes: 134
|
¡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
|
¡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
|
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: print eval(raw_input("Operacion: ")
Espero haber podido aclarar algunas dudas. Saludos, Javier.
|
|
|
En línea
|
|
|
|
Yidu
Desconectado
Mensajes: 134
|
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. def escojo (): num1 = int (raw_input ('> Dime el primer numero: ')) num2 = int (raw_input ('> Dime el segundo numero: ')) return num1,num2 def suma (a,b): return a + b def opcion(): opc = int(raw_input ('Escoge una opcion "q" salir')) if opc == 1: escojo() print suma (num1,num2) def menu(): print '''Menu\n 1. Suma 2. Resta 3. Multiplicacion 4. Division Q. Salir''' while 1: menu() opcion()
|
|
|
En línea
|
|
|
|
0x5d
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Menu opciones anti-batch injections. Permite hasta 10 opciones.
Scripting
|
carlitos.dll
|
0
|
3,237
|
7 Octubre 2008, 08:21 am
por carlitos.dll
|
|
|
[Python] Importar Funciones de C++ a Modulo de Python
Python
|
Di6it4Lj4ck4L
|
2
|
4,723
|
2 Mayo 2011, 19:08 pm
por Di6it4Lj4ck4L
|
|
|
Menu en python con otro menu dentro
Scripting
|
AdeLax
|
2
|
7,191
|
7 Octubre 2012, 21:46 pm
por AdeLax
|
|
|
Ayuda menú de opciones
Programación C/C++
|
Bus_19
|
3
|
2,516
|
18 Noviembre 2012, 20:09 pm
por leosansan
|
|
|
Duda con C, funciones y menu de opciones.
Programación C/C++
|
faakuh
|
3
|
5,058
|
10 Agosto 2017, 23:34 pm
por MAFUS
|
|