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

Resuelto
yumeasoko8572 Mensajes publicados 18 Estado Miembro -  
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   -

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. blux Mensajes publicados 2060 Fecha de registro   Estado Moderador Última intervención   3 455
     

    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
  2. xHaMaz Mensajes publicados 123 Fecha de registro   Estado Miembro Última intervención   18
     

    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
  3. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Embajador 1 588
     

    hola,

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

    0
  4. Julien_3144 Mensajes publicados 3 Estado Miembro
     

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

    0
  5. Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
     

    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. yumeasoko8572 Mensajes publicados 18 Estado Miembro
       

      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
  6. yumeasoko8572 Mensajes publicados 18 Estado Miembro
     

    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. Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
       

      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
      1. yumeasoko8572 Mensajes publicados 18 Estado Miembro > Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención  
         

        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
      2. Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > yumeasoko8572 Mensajes publicados 18 Estado Miembro
         

        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
      3. Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención  
         

        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