Test Foro de elhacker.net SMF 2.1

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 (python) [Seleccionar]
def menu():

def empezar():
print("Empezando...")

def opciones():
print("Opciones...")

def salir():
print("Saliendo...")

print("1 Empezar")
print("2 Opciones")
print("3 Salir")

f_de={"1":empezar,"2":opciones,"3":salir}

while True:

entrada=input("->")

if entrada in f_de:
f_de[entrada]()
else:
pass #o dar un mensaje de error


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 (python) [Seleccionar]
f_de={"1":empezar,"2":opciones,"3":salir}

te recomiendo cambiar esa linea por un array simple,

Código (python) [Seleccionar]
f_de=[
  empezar,
  opciones,
  salir
]



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 (python) [Seleccionar]

print('''[1] Empezar
[2] Opciones
[3] Salir''')

Saludos.