Python - Repeticion de input

 
Vista:
sin imagen de perfil
Val: 11
Ha disminuido su posición en 7 puestos en Python (en relación al último mes)
Gráfica de Python

Repeticion de input

Publicado por joss (16 intervenciones) el 14/02/2021 15:50:55
Hola. Hay un error en este codigo y no se encontrarlo. La cuestión es que intento validar las opciones mediante while y try y lo que me encuentro es que , si por ejemplo, cometo 2 errores de entrada, al volver al menu principal y volver a preguntar la opcion que quiero, me pregunta 2+1 veces que opcion elijo...y no se ver porque se produce. Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os
 
def menu_principal():
    os.system('cls')
    print("""
    \t\tMENU PRINCIPAL\n
    \t\t1. Nuevo libro
    \t\t2. Editar libro
    \t\t3. Borrar libro
    \t\t4. Listar libro\n
    \t\t
    """)
 
    while True:
        try:
            opcion=input("Opcion --> ")
 
            if int(opcion)>=1 and int(opcion)<=4:
                break
            else:
                raise Exception
 
        except:
            print("\nSolo puede elegir una opción entre 1 y 4...")
            input()
            menu_principal()
 
menu_principal()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Repeticion de input

Publicado por joel (901 intervenciones) el 14/02/2021 19:37:38
Tienes que sacar el while de dentro de la función menu_principal()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import os
 
def menu_principal():
    os.system('cls')
    print("""
    \t\tMENU PRINCIPAL\n
    \t\t1. Nuevo libro
    \t\t2. Editar libro
    \t\t3. Borrar libro
    \t\t4. Listar libro\n
    \t\t
    """)
 
while True:
    menu_principal()
    try:
        opcion=input("Opcion --> ")
 
        if int(opcion)>=1 and int(opcion)<=4:
            break
        else:
            raise Exception
 
    except:
        print("\nSolo puede elegir una opción entre 1 y 4...")
        input()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar