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 Atividades - 09 Ordenando os eventos

main.py


lista_eventos = []

def confirmador():

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

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

def opcoes_menu():

    """ Imprime no console as opções para o usuário escolher. """

    print (
        "1 - Adicionar um evento à lista;\n"
        "2 - Remover um evento da lista;\n" \
        "3 - Imprimir a lista de eventos no console;\n" \
        "4 - Inverter a lista de eventos;\n" \
        "5 - Sair;"
    )

    opcao_usuario = int (input ("\nDigite a sua opção: ").strip(" "))

    return opcao_usuario

def adicionar_evento():

    """ Adiciona um evento à lista """

    evento_usuario = input ("\nDigite o nome do evento a ser adicionado: ").strip()

    if evento_usuario is None:

        print ("\nDigite o nome do evento!\n\n")

    else:

        if buscar_evento_pelo_nome (evento_usuario):

            print ("Esse evento já está na lista! Por favor, tente novamente.\n")
            confirmador()

        lista_eventos.append (evento_usuario)

        print ("Evento adicionado com sucesso!\n")

def remover_evento():

    """ Remove um evento da lista de eventos """

    nome_evento = input ("Digite o nome do evento a ser retirado: ").strip()

    if buscar_evento_pelo_nome (nome_evento):

        lista_eventos.remove (nome_evento)
        print ("Evento removido com sucesso!\n")

    else:

        print ("Evento não encontrado! Tente novamente.\n")
        confirmador()

def buscar_evento_pelo_nome (nome_evento):

    """ Busca na lista de eventos e retorna True se o nome estiver presente"""

    if len(lista_eventos) == 0:

        print ("A lista de eventos está vazia! Por favor, adicione um evento antes de tentar remover.\n")
        confirmador()
        return False

    for evento_iterador in lista_eventos:

        if evento_iterador == nome_evento:

            return True
        
    return False

def imprimir_lista():

    """ Imprime a lista de eventos no console"""

    if len(lista_eventos) == 0:

        print ("A lista de eventos está vazia! Por favor, adicione um evento antes de tentar remover.\n")
        confirmador()
        return

    for index, iterador in enumerate(lista_eventos, 1):

        print (f"{index} - {iterador}")

    print()

def inverter_lista():

    """ Inverte a lista de eventos """

    if len(lista_eventos) == 0:

        print ("A lista de eventos está vazia! Por favor, adicione um evento antes de tentar remover.\n")
        confirmador()
        return

    lista_eventos.reverse()

    print ("Lista invertida com sucesso!\n")
    imprimir_lista()

def main():

    while True:

        print ("\nOlá! Seja bem-vindo ao programa de inversão de Listas. \n")

        opcao_usuario = opcoes_menu()

        try: 

            if opcao_usuario == 1:

                adicionar_evento()

            elif opcao_usuario == 2:

                remover_evento()

            elif opcao_usuario == 3:

                imprimir_lista()

            elif opcao_usuario == 4:

                inverter_lista()

            elif opcao_usuario == 5:

                print ("Saindo do programa...")
                break

            else:

                print ("Opção inválida! Digite apenas os números correspondentes")
                confirmador()

        except ValueError:

            print (f"Cuidado! Digite apenas números!")
            confirmador()

if __name__ == "__main__":

    main()
1 resposta

Oi, Victor. Tudo bem com você?

Obrigado por compartilhar sua resolução. Você foi além do que a atividade solicitava e criou uma aplicação interativa para gerenciar eventos, incluindo funcionalidades de adicionar, remover, listar e inverter a lista. Isso demonstra iniciativa para praticar conceitos importantes de listas, funções, laços de repetição e organização do código em Python. A utilização de funções separadas para cada responsabilidade também deixa o projeto mais fácil de entender e manter.

Há apenas alguns pontos que merecem atenção. Na função adicionar_evento(), a condição if evento_usuario is None: não será verdadeira, pois input() retorna uma string. Caso o usuário pressione apenas Enter, o valor será uma string vazia. Nesse cenário, uma verificação como if not evento_usuario: seria mais adequada. Além disso, ao identificar que um evento já existe na lista, seria interessante interromper a execução da função com um return, evitando que o evento seja adicionado mesmo após a mensagem informando que ele já estava cadastrado.

Quais outras funcionalidades você adicionaria a esse sistema para torná-lo mais próximo de um gerenciador de eventos utilizado em um projeto real?

Parabéns pelo empenho, Victor. Continue compartilhando suas soluções. O fórum permanece à disposição para acompanhar sua evolução e esclarecer novas dúvidas.

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