Python - Error en mi código - No sale del menú 2

 
Vista:

Error en mi código - No sale del menú 2

Publicado por Ana (1 intervención) el 28/02/2024 00:54:27
Hola, estoy intentando hacer ejercicios para una tarea y he creado un programa cuya finalidad es trabajar con una lista. La idea es que tiene un menú principal y que en ese menú al seleccionar la opción 1 nos lleva a un menú dos.

No sé porqué, pero no logro regrear al menú 1. Ayuda, please.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#  Un programa para trabajar con una lista.
 
def agregar1(texto,lista):
    return lista.append(texto)
def agregarmas(cadena,lista):
    return lista.extend(cadena)
def largo(lista):
    return len(lista)
 
def vacio(lista):
    return len(lista)  == 0
 
def quitar(lista):
    if not vacio(lista):
        return lista.pop(len(lista)-1)
    else:
        print("No se puede sacar elemento. La lista está vacia")
        return ""
 
 
def condatos(lista):
    return len(lista)  != 0
 
print("1. Añadir elemento a la lista")
print("2. Sacar elemento de la lista")
print("3. Longitud de la lista")
print("4. Mostrar lista")
print("5. Salir")
menu = int(input("¿Qué opción quieres ejecutar?"))
lista = []
 
while True:
    if menu == 1:
        print("1. Añadir un elemento a la lista")
        print("2. Añadir varios elementos a la lista")
        print("3. Salir")
        menu1 = int(input("¿Qué operación quieres realizar?"))
        while True:
            if menu1 == 1:
                num = int(input("¿Cuántas palabras vas a agregar? "))
                for i in range(num):
                    elementomas = input(f"Agregar la palabra {i + 1}: ")
                    agregar1(elementomas, lista)
                break
            elif menu1 == 2:
                elementosmas = input("Agregar los caracteres de una palabra como elementos: ")
                agregarmas(elementosmas, lista)
                break
            elif menu1 == 3:
                break  # Salir del bucle interno y volver al menú principal
            else:
                print("No es un valor válido. Vuelve a indicar la operación deseada:")
        # Continuar con el bucle principal
    elif menu == 2:
        print(quitar(lista))
        pass
    elif menu == 3:
        print(largo(lista))
        pass
    elif menu == 5:
        break
    else:
        print(input("Error. Opción no válida"))
 
print(lista)
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 Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Error en mi código - No sale del menú 2

Publicado por Antoni Masana (67 intervenciones) el 28/02/2024 17:29:35
Te he realizado varios cambios.

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#  Un programa para trabajar con una lista.
 
def agregar1(texto,lista):
    return lista.append(texto)
 
def agregarmas(cadena,lista):
    return lista.extend(cadena)
 
def largo(lista):
    return len(lista)
 
def vacio(lista):
    return len(lista)  == 0
 
def quitar(lista):
    if not vacio(lista):
        return lista.pop(len(lista)-1)
    else:
        print("No se puede sacar elemento. La lista está vacia")
        return ""
 
def condatos(lista):
    return len(lista)  != 0
 
lista = []
 
while True:
    print("1. Añadir elemento a la lista")
    print("2. Sacar elemento de la lista")
    print("3. Longitud de la lista")
    print("4. Mostrar lista")
    print("5. Salir")
    menu = int(input("¿Qué opción quieres ejecutar?"))
 
    if menu == 1:
        while True:
            print("1. Añadir un elemento a la lista")
            print("2. Añadir varios elementos a la lista")
            print("3. Salir")
            menu1 = int(input("¿Qué operación quieres realizar?"))
 
            if menu1 == 1:
                num = int(input("¿Cuántas palabras vas a agregar? "))
                for i in range(num):
                    elementomas = input(f"Agregar la palabra {i + 1}: ")
                    agregar1(elementomas, lista)
                # --- Si pones un break salta al menu principal
 
            elif menu1 == 2:
                elementosmas = input("Agregar los caracteres de una palabra como elementos: ")
                agregarmas(elementosmas, lista)
                # --- Si pones un break salta al menu principal
 
            elif menu1 == 3:
                break  # Salir del bucle interno y volver al menú principal
            else:
                print("No es un valor válido. Vuelve a indicar la operación deseada:")
 
    # --- Continuar con el bucle principal
    elif menu == 2:
        print(quitar(lista))
        pass
    elif menu == 3:
        print(largo(lista))
        pass
    elif menu == 5:
        break
    else:
        print(input("Error. Opción no válida"))
 
print(lista)

Saludos,
\\//_
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
sin imagen de perfil

Error en mi código - No sale del menú 2

Publicado por ALEXANDER (1 intervención) el 01/04/2024 19:30:51
El problema es que no estas incluyendo el menú principal dentro del bucle que estas ejecutando, la mejor forma de hacerlo es crear un bucle exterior que te permita reiniciar la secuencia del menú principal, te dejo el código ajustado:

def agregar_palabra(texto, lista):
lista.append(texto)

def agregar_varias_palabras(cadena, lista):
lista.extend(cadena)

def longitud(lista):
return len(lista)

def esta_vacia(lista):
return len(lista) == 0

def quitar(lista):
if not esta_vacia(lista):
return lista.pop()
else:
return ""

def main():
lista = []

while True:
print("1. Añadir elemento a la lista")
print("2. Sacar elemento de la lista")
print("3. Longitud de la lista")
print("4. Mostrar lista")
print("5. Salir")
menu = int(input("¿Qué opción quieres ejecutar?"))

if menu == 1:
print("1. Añadir un elemento a la lista")
print("2. Añadir varios elementos a la lista")
print("3. Salir")
menu1 = int(input("¿Qué operación quieres realizar?"))
while True:
if menu1 == 1:
num = int(input("¿Cuántas palabras vas a agregar? "))
palabras = [input(f"Agregar la palabra {i + 1}: ") for i in range(num)]
lista.extend(palabras)
break
elif menu1 == 2:
elementosmas = input("Agregar los caracteres de una palabra como elementos: ")
lista.extend(elementosmas)
break
elif menu1 == 3:
break # Salir del bucle interno y volver al menú principal
else:
print("No es un valor válido. Vuelve a indicar la operación deseada:")
elif menu == 2:
print(quitar(lista))
elif menu == 3:
print(longitud(lista))
elif menu == 5:
break
else:
print("Error. Opción no válida")

print(lista)

if __name__ == "__main__":
main()
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