Código python: cómo volver al inicio del programa

Resuelto

Hola a todos, soy principiante en código y tengo que hacer un pequeño proyecto (una lista de compras).

Mi programa no está del todo bien, antes de hacer todas las modificaciones necesarias, me gustaría saber cómo puedo reiniciar el programa una vez que el usuario elige una opción. Creo que hay que usar While, pero no sé cómo integrarlo en el programa; de hecho, cuando ejecuto el programa, me vuelve a pedir la opción elegida infinitamente, pero no regreso al principio.

Gracias de antemano por su ayuda :)

#La lista lista = [] # Lo que el usuario ve print("Elija entre las 5 opciones siguientes") print("1: Agregar un elemento a la lista") print("2: Retirar un elemento de la lista") print("3: Mostrar la lista") print("4: Vaciar la lista") print("5: Salir") # bucle para volver al principio del programa while True: a = input("Su elección: ") if a == "1": b = input("Introduzca el nombre de un elemento para agregar a su lista de compras: ") lista.append(b) print(f"el elemento {b} ha sido agregado a la lista") elif a == "2": c = input("Retirar un elemento de la lista: ") if c not in lista: print("El elemento no está en mi lista") else: lista.remove(c) print(f"el elemento {c} ha sido eliminado de la lista") elif a == "3": print(lista) elif a == "4": lista.clear() print("La lista ha sido vaciada") elif a == "5": quit() else: print("¡Entrada no válida!") 

6 respuestas

  1. Moderador

    Hola,

    debes integrar tu elección en tu bucle...


    ¡Hasta luego blux!           "Los tontos se atreven a todo.
    Es incluso así como los reconocemos"

    1
    1. Hola,

      Si he entendido bien tu problema, ¿quieres que tu programa se reinicie una vez que el usuario haya elegido una opción?

      El bucle "while True" permite reiniciar un programa de manera infinita hasta que el usuario elija la opción de salir. Intenta integrarlo más arriba en tu programa antes de la elección de las 5 opciones.

      1
      1. Colaborador

        hola,

        el bucle debe incluir todas las instrucciones a repetir. ¿cuáles son?

        0
        1. sí, mueves tu selección de opciones al principio del while

          0
          1. Hola,

            Incluyes todo en el while, e incluso añades otro para controlar la entrada

            (mientras respondemos mal, el menú se vuelve a mostrar para una nueva entrada):

            # -*- coding:Utf-8 -*- import os menu = ''' 1 Añadir 2 Retirar 3 Mostrar 4 Mostrar 5 Salir > ''' while(True): elección = 0 while(not elección in [1,2,3,4,5]): os.system('cls' if os.name=='nt' else 'clear') print('\n' + '''Elige :'''.center(50,'*')) elección = int(input(menu)) if(elección == 1): ..... elif(elección == 5): break #salimos del while: fin del programa
            0
            1. Gracias por tu respuesta, soy principiante, no entiendo esta parte del código, ¿puedes explicármelo?

              ¡Gracias :)

              while(True): elección = 0 while(not elección in [1,2,3,4,5]): os.system('cls' if os.name=='nt' else 'clear') print('\n' + '''Elige :'''.center(50,'*')) elección = int(input(menu))
              0
          2. Mi objetivo es que el usuario regrese al principio del programa en ( a = input "su elección: ") después de haber hecho lo que quería hacer (como por ejemplo, añadir un elemento a la lista de la compra). Así podrá ver que ha añadido correctamente el elemento a la lista.

            No sé si realmente debo usar while True todo el tiempo cuando ejecuto mi programa y selecciono 1 y añado un elemento, me devuelve a (" b = input("Ingrese el nombre de un elemento para añadir a su lista de la compra: "))

            0
            1. Explicación de mi código:

              el bucle exterior while(True) hace que después de elegir 1, 2, 3 o 4 en el menú y por lo tanto

              ejecutar el código correspondiente, volvemos nuevamente al menú para una nueva elección

              si elegimos 5, nos encontramos con mi instrucción break que nos hace salir de este while y por lo tanto el programa se detiene

              .

              el bucle interior while(not elección .........) hace que si ingresamos algo diferente a 1, 2, 3, 4 o 5, la pantalla se borra

              y se vuelve a mostrar el menú hasta que ingresemos el número correcto

              si está bien, salimos de este while y continuamos con las pruebas if(elección == 1), etc...

               elección = 0 while(not elección in [1,2,3,4,5]): # al principio elección = 0, entonces mostramos el menú os.system('cls' if os.name=='nt' else 'clear') #borrado de la pantalla print('\n' + '''Elija:'''.center(50,'*')) elección = int(input(menu)) #mostrar menú para ingresar un valor # mientras elección sea diferente de 1,2,3,4 o 5, volvemos a iterar # de lo contrario, salimos de este while

              Puedes probar mi código añadiendo lo que sea necesario en el if(elección == 1), else, etc..

              verás que funciona

              0
            2. @Phil_1857

              Gracias por tu ayuda, de hecho, esa era la idea que tenía al principio, crear un bucle while si el usuario no ingresa el valor correcto y hacerlo volver al principio al final de la correcta aplicación de este.

              Una última pregunta pequeña, me gustaría saber el significado de los comandos:

              os.name=='nt' y center(50,'*'))

              Gracias de nuevo por tu ayuda

              0
            3. @yumeasoko8572

              os es el módulo que permite tratar todo lo relacionado con el os, el sistema operativo,

              el sistema operativo (Windows en mi caso)

              y por lo tanto os.name da el nombre de tu os

              os.system('cls') permite borrar la pantalla, pero le he añadido una prueba para hacer el comando

              más universal: si es Windows, tomamos 'cls', de lo contrario, tomamos 'clear'

              .

              center(50,*) es un formato de visualización que permite enmarcar el texto a mostrar en 50 caracteres en total,

              enmarcado por *, como puedes ver en la imagen que he mostrado arriba

              0
            4. @Phil_1857

              Hola,

              Finalmente, esto daría así (he corregido uno o dos errores) :

              # -*- coding:Utf-8 -*- import os menu = ''' 1 Añadir 2 Retirar 3 Mostrar 4 Vaciar 5 Salir > ''' lista = [] while(True): elección = 0 while(not elección in [1,2,3,4,5]): # os.system('cls' if os.name=='nt' else 'clear') print('\n' + '''Elija:''.center(50,'*')) elección = int(input(menu)) if( elección == 1): el = input("Introduce el nombre de un elemento a añadir a tu lista de compras: ") lista.append(el) print(f"El elemento {el} ha sido añadido a la lista") elif( elección == 2): el = input("Elemento a retirar de la lista: ") if el not in lista: print("El elemento no está en mi lista") else: lista.remove(el) print(f"El elemento {el} ha sido eliminado de la lista") elif( elección == 3): print(lista) elif( elección == 4): lista.clear() elif( elección == 5): break 
              1