es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python: Bucle do while de base de datos

Buen día a todos, me pregunto si pueden ayudarme con mi problema relacionado con la Base de Datos de Python (SQLite3). Quería hacer un bucle do-while en mi programa. Así que cada vez que introduzco exitosamente un dato o después de hacer el trabajo, en lugar de volver instantáneamente al menú principal, quiero hacer una pregunta “¿Desea continuar? S/N” si es “S” entonces irá al menú principal y si es “N” se terminará el programa. ¡Gracias de antemano!

import Databaseprofile
MENU_PROMPT = "--- Registro de Residentes de la Alcaldía --- 
Por favor, elija una de estas opciones:

[1] Añadir un nuevo residente/perfil.
[2] Ver lista de todos los residentes.
[3] Salir.

Su selección: "

def menu():
    connection = Databaseprofile.connect()
    Databaseprofile.create_tables(connection)
    while (user_input := input(MENU_PROMPT)) != "3":
        if user_input == "1":
            print("--- Añadir un Residente ---")
            name = input("Ingrese el nombre completo: ")
            birth = input("Ingrese la fecha de nacimiento (AA-MM-DD): ")
            sex = input("Ingrese el sexo: ")
            purok = int(input("Ingrese su Purok: "))
            house = int(input("Ingrese el número de casa: "))
            number = int(input("Ingrese el número móvil: "))

            Databaseprofile.add_profile(connection, name, birth, sex, purok, house, number)
            print("--- Añadido exitosamente! ---")
        elif user_input == "2":
            print("--------------------------------------------------------------------------------------------------")
            print("--- Lista de Residentes ---")
            profile = Databaseprofile.get_all_profile(connection)

            for prof in profile:
                print(f"{prof[0]}, {prof[1]}, {prof[2]}, {prof[3]}, Purok {prof[4]}, Número de Casa {prof[5]}, Número Móvil {prof[6]}")
            print("--------------------------------------------------------------------------------------------------")
            #
        else:
            print("Entrada inválida, intente de nuevo.")

    print("Gracias por utilizar nuestro programa.")
menu()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para implementar un bucle do-while en la función del menú, puedes usar un bucle while con la condición establecida como True. Dentro del bucle, después de que el usuario ingrese exitosamente un nuevo residente o vea la lista de residentes, solicita al usuario la pregunta “¿Desea continuar? S/N”. Si el usuario ingresa “S”, continúa con el bucle y muestra nuevamente el menú principal. Si el usuario ingresa “N”, sale del bucle y finaliza el programa. Aquí tienes un ejemplo de cómo modificar el código para lograr esto:

    def menu():
        connection = Databaseprofile.connect()
        Databaseprofile.create_tables(connection)
        while True:  # condición del bucle establecida en True
            user_input = input(MENU_PROMPT)  # moví la entrada al comienzo del bucle
    
            if user_input == "1":
                print("---Agregar un Residente---")
                name = input("Ingrese el nombre completo: ")
                birth = input("Ingrese la fecha de nacimiento (AA-MM-DD): ")
                sex = input("Ingrese el sexo: ")
                purok = int(input("Ingrese su Purok: "))
                house = int(input("Ingrese el número de casa: "))
                number = int(input("Ingrese el número de teléfono móvil: "))
    
                Databaseprofile.add_profile(connection, name, birth, sex, purok, house, number)
                print("---Agregado exitosamente!---")
    
            elif user_input == "2":
                print("--------------------------------------------------------------------------------------------------")
                print("---Lista de Residentes---")
                profile = Databaseprofile.get_all_profile(connection)
    
                for prof in profile:
                    print(f"{prof[0]}, {prof[1]}, {prof[2]}, {prof[3]}, Purok {prof[4]}, Número de Casa {prof[5]}, Número de Teléfono {prof[6]}")
                print("--------------------------------------------------------------------------------------------------")
    
            elif user_input == "3":
                print("Gracias por usar nuestro programa.")
                break  # salir del bucle while
    
            else:
                print("Entrada inválida, intente nuevamente.")
    
            # solicitar al usuario la pregunta "¿Desea continuar? S/N"
            choice = input("¿Desea continuar? S/N ")
            if choice.lower() == "n":
                print("Gracias por usar nuestro programa.")
                break  # salir del bucle while si el usuario ingresa "N"
    

    Nota que eliminé el operador walrus (:=) en la línea 7 ya que no es compatible con Python 3.7.

Comments are closed.