Código python: cómo volver al inicio del programa
ResueltoPhil_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
Hola,
debes integrar tu elección en tu bucle...
¡Hasta luego blux! "Los tontos se atreven a todo.
Es incluso así como los reconocemos"
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.
hola,
el bucle debe incluir todas las instrucciones a repetir. ¿cuáles son?
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
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: "))
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
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
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
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