-AYUDA--Menu con parametros en Phyton

Iniciado por Inborn, 30 Mayo 2017, 01:18 AM

0 Miembros y 1 Visitante están viendo este tema.

Inborn

Buenas me presento, mi nombre es Sergio y estoy empezando en el mundo de la programación.
Mi duda es la siguiente, cuando creo un Menú definiendo la funcion pero le agrego un parametro por ejemplo: def mi_menu(menu): luego de querer volver llamar a la funcion para que me vuelva a aparecer el menu con sus opciones no me aparece, tambien intento llamando al parametro (menu) pero tampoco me deja y me tira errores.
Estoy haciendo un ejercicio con un menu para un Restaurant y al volver a llamar al menu y ejecutarlo solo aparece en blanco o no me deja, les dejaré lo que llevo de avance en el menu para que me puedan ayudar, se los agradeceria mucho amigos :)

Código (python) [Seleccionar]
def Restaurant(menu):
   print("----------Carta----------------")
   print("1.-Platos.")
   print("2.-Bebestibles")
   print("3.-Postres")
   print("4.-Total a pagar")
   print("5.-Salir")
   print("----------Carta-----------------")
   op=int(input("Ingrese una opcion:"))
   
   if (op==1):
       acumplatos=0
       print("----------Platos------------")
       print("1.-Salmon a la plancha-----$4.100")
       print("2.-Chorillana(4 personas)--$5.500")
       print("3.-Lomo a lo pobre---------$4.800")
       print("4.-Paila marina------------$4.500")
       print("5.-Pollo asado-------------$3.800")
       print("----------Platos------------")
       opplato=int(input("Ingrese numero de plato deseado:"))
       if opplato==1:
           subtotal1=acumplatos+4100
       if opplato==2:
           subtotal2=acumplatos+5500
       if opplato==3:
           subtotal3=acumplatos+4800
       if opplato==4:
           subtotal4=acumplatos+4500
       if opplato==5:
           subtotal5=acumplatos+3800
           Restaurant(menu) #aquí :(
   
   Restaurant(menu)  #Aquí mi duda para volver al menu principal :(



Espero respuestas gracias  :-(
>:(


· Los códigos deben ir en etiquetas GeSHi
· Los temas de Python van en scripting
>aquí las reglas del foro
-Engel Lex

Geormarsch

#1
Al definir Restaurant el parametro menu no tiene return, y dentro del código no lo estás llamando, así que no sería válido la entrada y salida de datos
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

tincopasan

llamar a una función dentro de la misma función si bien se puede hacer, se conoce como llamada recursiva, no es muy conveniente, sobre todo cuando estás comenzando, es mejor y más fácil usar un ciclo while.
Te muestro una forma con tu ejemplo:
Código (python) [Seleccionar]

#-*- coding:utf -8 -*-
def Restaurant():
    op=0
    while op!= 5:
        print("----------Carta----------------")
        print("1.-Platos.")
        print("2.-Bebestibles")
        print("3.-Postres")
        print("4.-Total a pagar")
        print("5.-Salir")
        print("----------Carta-----------------")
        op=int(input("Ingrese una opcion:"))

        if (op==1):
            acumplatos=0
            print("----------Platos------------")
            print("1.-Salmon a la plancha-----$4.100")
            print("2.-Chorillana(4 personas)--$5.500")
            print("3.-Lomo a lo pobre---------$4.800")
            print("4.-Paila marina------------$4.500")
            print("5.-Pollo asado-------------$3.800")
            print("----------Platos------------")
            opplato=int(input("Ingrese numero de plato deseado:"))
            if opplato==1:
                subtotal1=acumplatos+4100
            if opplato==2:
                subtotal2=acumplatos+5500
            if opplato==3:
                subtotal3=acumplatos+4800
            if opplato==4:
                subtotal4=acumplatos+4500
            if opplato==5:
                subtotal5=acumplatos+3800

Restaurant()  #Aquí mi duda para volver al menu principal :(

Inborn

Cita de: Geormarsch en 30 Mayo 2017, 04:12 AM
Al definir Restaurant el parametro menu no tiene return, y dentro del código no lo estás llamando, así que no sería válido la entrada y salida de datos
Gracias por responder amigo, tambien creia que era por el return, pero no entiendo como usar el return en este caso especificamente :/ si tengo que definir return como return (menu) o de otra manera :/

Inborn

Cita de: tincopasan en 30 Mayo 2017, 04:40 AM
llamar a una función dentro de la misma función si bien se puede hacer, se conoce como llamada recursiva, no es muy conveniente, sobre todo cuando estás comenzando, es mejor y más fácil usar un ciclo while.
Te muestro una forma con tu ejemplo:
Código (python) [Seleccionar]

#-*- coding:utf -8 -*-
def Restaurant():
    op=0
    while op!= 5:
        print("----------Carta----------------")
        print("1.-Platos.")
        print("2.-Bebestibles")
        print("3.-Postres")
        print("4.-Total a pagar")
        print("5.-Salir")
        print("----------Carta-----------------")
        op=int(input("Ingrese una opcion:"))

        if (op==1):
            acumplatos=0
            print("----------Platos------------")
            print("1.-Salmon a la plancha-----$4.100")
            print("2.-Chorillana(4 personas)--$5.500")
            print("3.-Lomo a lo pobre---------$4.800")
            print("4.-Paila marina------------$4.500")
            print("5.-Pollo asado-------------$3.800")
            print("----------Platos------------")
            opplato=int(input("Ingrese numero de plato deseado:"))
            if opplato==1:
                subtotal1=acumplatos+4100
            if opplato==2:
                subtotal2=acumplatos+5500
            if opplato==3:
                subtotal3=acumplatos+4800
            if opplato==4:
                subtotal4=acumplatos+4500
            if opplato==5:
                subtotal5=acumplatos+3800

Restaurant()  #Aquí mi duda para volver al menu principal :(

Está buena la opcion de usar el while en el menú, pero el problema es que tengo que usar parámetros,  ya que me lo piden( en el ejercicio) y ahi es donde no entiendo, se que tengo que usar return pero no sé especificamente como aplicarlo :(