Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Camilo2001 en 10 Mayo 2017, 04:15 am



Título: Python "Menu"
Publicado por: Camilo2001 en 10 Mayo 2017, 04:15 am
Código
  1. def menu():
  2.  
  3. def empezar():
  4. print("Empezando...")
  5.  
  6. def opciones():
  7. print("Opciones...")
  8.  
  9. def salir():
  10. print("Saliendo...")
  11.  
  12. print("1 Empezar")
  13. print("2 Opciones")
  14. print("3 Salir")
  15.  
  16. f_de={"1":empezar,"2":opciones,"3":salir}
  17.  
  18. while True:
  19.  
  20. entrada=input("->")
  21.  
  22. if entrada in f_de:
  23. f_de[entrada]()
  24. else:
  25. pass #o dar un mensaje de error
  26.  

Es un codigo correcto para un menu? O hay una forma mas sencilla/elegante?


Título: Re: Python "Menu"
Publicado por: engel lex en 10 Mayo 2017, 04:23 am
Código
  1. f_de={"1":empezar,"2":opciones,"3":salir}

te recomiendo cambiar esa linea por un array simple,

Código
  1. f_de=[
  2.  empezar,
  3.  opciones,
  4.  salir
  5. ]


está bien que lo trates de modularizar, pero de hacer funciones dentro de funciones no es lo mejor... solo hace el codigo complicado y difícil de leer



Título: Re: Python "Menu"
Publicado por: tincopasan en 11 Mayo 2017, 03:48 am
creo que tenés un concepto equivocado sobre python, no es tan así que existen maneras correctas o incorrectas, en realidad existen maneras diferentes con respecto a la forma de plantear el código. Pasa lo mismo con el término elegante o no , eso es subjetivo, no a todos nos gusta o parece elegante lo mismo. En cuanto a sencillez, no hay una forma específica de crear un menú, hay muchisimas formas.
En cuanto a tu código, soy partidario de usar diccionarios en menus, ya que después facilita mucho el uso con clases.
lo único que no entiendo porque la necesidad de 3 print seguidos si podrías:
Código
  1. print('''[1] Empezar
  2. [2] Opciones
  3. [3] Salir''')
  4.  
Saludos.