Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução de Exercícios - 08 Reorganizando uma lista de convidados (Parte 2)

PARTE 2


main.py


from models.convidado import Convidado
from models.lista_convidados import ListaConvidados

def exibir_apresentacao():

    """Exibe no console uma apresentação amigável ao usuário"""

    print ("\nOlá, seja bem-vindo à festa! \n")

def selecionar_opcoes():

    """Permite o usuário escolher uma opção dentre os serviços disponíveis"""

    opcao_usuario = input (
        "1 - Adicionar convidados" \
        "\n2 - Remover convidado" \
        "\n3 - Mostrar a lista de convidados" \
        "\n4 - Sair; \n Digite o número da opção desejada: ")
    
    return opcao_usuario

def confirmador():

    """ Trava o sistema até o usuário digitar uma tecla para que o texto do console não passe muito rápido"""

    input("\nAperte qualquer tecla para continuar")
    print("\n\n\n")

def main():

    while True:

        try:

            exibir_apresentacao()
            
            opcao_usuario = int (selecionar_opcoes())

            if opcao_usuario == 1:

                nome_convidado = input("\nDigite o nome do convidado: ").title()

                if ListaConvidados.buscar_convidado_por_nome (nome_convidado):

                    print ("\nEsse nome já está sendo usado. Por favor, tente novamente")
                    confirmador()
                
                else:

                    posicao = input ("\nDigite a posição que deseja adicionar o convidado (ou pressione Enter para adicionar no final da lista): ")

                    if posicao == "":

                        posicao = None

                    else:

                        posicao = int (posicao)

                    ListaConvidados.adicionar_convidado (Convidado (nome_convidado), posicao)
                    print (f"\nO(A) convidado(a) {nome_convidado} foi adicionado(a) com sucesso!")

            elif opcao_usuario == 2:

                nome_convidado = input ("\nDigite o nome do convidado que se deseja excluir: ").title()

                convidado_selecionado = ListaConvidados.buscar_convidado_por_nome (nome_convidado)

                if not convidado_selecionado:

                    print ("\nErro, este convidado não existe em nosso banco de dados. Verifique se não houve erros de digitação.")
                    confirmador()

                else:

                    confirmacao = input (f"Deseja realmente deletar o(a) convidado(a) {convidado_selecionado.nome}? (S / qualquer outra tecla para cancelar): ").upper()

                    if confirmacao == "S":

                        ListaConvidados.remover_convidado (convidado_selecionado)

                    else:

                        print ("Cancelando a exclusão. Voltando ao Menu Principal")
                        confirmador()

            elif opcao_usuario == 3:

                ListaConvidados.exibir_lista_convidados()
                confirmador()

            elif opcao_usuario == 4:

                print ("\n\nObrigado por acessar nosso site. Até mais!")
                break

            else:

                print ("\nOpção inválida. Por favor, tente novamente.")
                confirmador()


        except ValueError:

            print ("\nDigite um número válido. Por favor, tente novamente.")
            confirmador()

if __name__ == "__main__":

    main()
1 resposta

Olá, Victor! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou a orientação a objetos para estruturar o gerenciamento de convidados em Python, utilizou muito bem a separação entre classes de modelo e lista para organizar responsabilidades e ainda compreendeu a importância da validação de nomes duplicados para evitar inconsistências no cadastro.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Normalizar entradas: usar .strip() para remover espaços extras nos nomes.
  • Corrigir pequenos detalhes: como a digitação de mensagens e consistência nos prints.
  • Ordenar a lista: exibir convidados em ordem alfabética ou por posição para facilitar a leitura.

Ah, uma pergunta: qual outra funcionalidade você acharia interessante para que essa aplicação fosse ainda mais útil para clientes reais?

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!