Ayuda en Python! Hacer un menú dentro de otro menú con diccionarios

Iniciado por Daor02, 2 Julio 2016, 05:16 AM

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

Daor02

Buenas! Sé que este foro no es tanto para Python, pero tengo un problema que me está dejando mal!

Quiero hacer un menú que funcione dentro de otro. El primer menú me funciona; es decir, el general, pero el menú que va dentro de ese no... y hago exactamente lo mismo que con el primero!

Por ahora me interesa que funcionen las opciones 1-1; es decir, si aparece en la pantalla Si este mensaje aparece, el segundo menú, con opción 1, funciona., significa que encontramos la falla!

Dejo el código:

----------------------------------------------------------------------------------------------------------------------------------------------------

Código (python) [Seleccionar]
def pulgadas_a_milimetros():
   print('Si este mensaje aparece, el segundo menú, con opción 1, funciona.')

def medidas_de_longitud():
   
   print("\nMEDIDAS DE LONGITUD \n")

   conversion=int(input('Escoja la conversión que desea: \n1. Pulgadas a milímetros. \n2. Yardas a metros. \n3. Millas a kilómetros.'
                        '\n4. Pulgadas² a centímetros². \n5. Pies² a metros² \n6. Yardas² a metros² \n7. Acres a hectáreas \n8. Millas² a kilómetros². \n'))
   opcion_conversion = {1: pulgadas_a_milimetros, 2: yardas_a_metros, 3: millas_a_kilometros, 4: pulgadas_c_a_centimetros_c, 5: pies_c_a_metros_c, 6: yardas_c_a_metros_c, 7: acrea_a_hectareas, 8: millas_a_kilometros}
   
# A partir de aquí no hace el try, sino que ejecuta el except al final del código :(

   try:
       opcion_conversion[conversion]()
   except:
       print('No ha escogido una opción válida.')

def medidas_de_volumen():
   print("Por Programar")
   
def medidas_de_peso():
   print("Por Programar")

medida=int(input('Escoja las medidas que desea: \n1. Medidas de Longitud. \n2. Medidas de Volumen. \n3. Medidas de Peso. \n'))

opcion_medida = {1: medidas_de_longitud, 2: medidas_de_volumen, 3: medidas_de_peso}

try:
   opcion_medida[medida]()
except:
   print('No ha escogido una opción válida.')


----------------------------------------------------------------------------------------------------------------------------------------------------

Gracias!

tincopasan

hola:
varias cosas--
1) esto debería estar en scripting no en programación general.
2) debes usar las etiquetas Geshi (normas del foro)
3) indudablemente no has entendido que hace y como se usa try,except
4)no miras con atención
CitarQuiero hacer un menú que funcione dentro de otro. El primer menú me funciona; es decir, el general, pero el menú que va dentro de ese no... y hago exactamente lo mismo que con el primero!
pues no estás haciendo lo mismo! ok ¿dónde está el error?
try es para detectar errores de alguna manera, o sea que básicamente salvo que tu lo aclares detecta cualquier error y estás cometiendo uno enorme!
¿dónde declaraste cada def del 2 menú declarados en el diccionario ? para resumir por lo menos deberías intentar algo así:
Código (python) [Seleccionar]
#-*- coding:utf-8 -*-
def yardas_a_metros():
    pass
   
def millas_a_kilometros():
    pass


def  pulgadas_c_a_centimetros_c():
    pass
   
def pies_c_a_metros_c():
    pass
           
def yardas_c_a_metros_c():
    pass

def acrea_a_hectareas():
    pass

def millas_a_kilometros():
    pass


def pulgadas_a_milimetros():
    print('Si este mensaje aparece, el segundo menú, con opción 1, funciona.')

def medidas_de_longitud():
   
    print("\nMEDIDAS DE LONGITUD \n")

    conversion=int(input('Escoja la conversión que desea: \n1. Pulgadas a milímetros. \n2. Yardas a metros. \n3. Millas a kilómetros.'
                         '\n4. Pulgadas² a centímetros². \n5. Pies² a metros² \n6. Yardas² a metros² \n7. Acres a hectáreas \n8. Millas² a kilómetros². \n'))
    opcion_conversion = {1: pulgadas_a_milimetros, 2: yardas_a_metros, 3: millas_a_kilometros, 4: pulgadas_c_a_centimetros_c, 5: pies_c_a_metros_c, 6: yardas_c_a_metros_c, 7: acrea_a_hectareas, 8: millas_a_kilometros}
   
# A partir de aquí no hace el try, sino que ejecuta el except al final del código :(

    try:
        opcion_conversion[conversion]()
    except:
        print('No ha escogido una opción válida.')

def medidas_de_volumen():
    print("Por Programar")
     
def medidas_de_peso():
    print("Por Programar")

medida=int(input('Escoja las medidas que desea: \n1. Medidas de Longitud. \n2. Medidas de Volumen. \n3. Medidas de Peso. \n'))

opcion_medida = {1: medidas_de_longitud, 2: medidas_de_volumen, 3: medidas_de_peso}

try:
    opcion_medida[medida]()
except:
    print('No ha escogido una opción válida.')


5) si bien python es libre en lo que nos deja hacer tendrías que mejorar tu lógica de programación porque está bastante pobre, hay clases, main, if, else,etc. que mejorarían tu código notablemente, aunque es cierto que así también funciona.
Saludos.