1
resposta

SÃO SILVESTRE

def exibir_subtitulo(texto):
    linha = "-" * len(texto)
    print("\n" + texto)
    print(linha)


participantes = {
    "Mariana": 25,
    "Carlos": 32,
    "Beatriz": 28,
    "Rafael": 35
}

while True:
    exibir_subtitulo("PARTICIPANTES - MARATONA SÃO SILVESTRE")
    print("1 - Atualizar idade de um corredor")
    print("2 - Cadastrar novo corredor")
    print("3 - Ver todos os corredores cadastrados")
    print("4 - Consultar idade de um corredor")
    print("5 - Sair")

    opcao = input("Escolha uma opção: ")

    # OPÇÃO 1 – ATUALIZAR IDADE
    if opcao == "1":
        nome = input("Digite o nome do corredor: ")

        if nome in participantes:
            idade = int(input("Digite a nova idade: "))

            if idade <= 0:
                print("Erro: a idade deve ser maior que zero.")
            else:
                participantes[nome] = idade
                print("Idade atualizada com sucesso!")
        else:
            print("Corredor não encontrado.")

    # OPÇÃO 2 – CADASTRAR
    elif opcao == "2":
        nome = input("Digite o nome do novo corredor: ")

        if nome in participantes:
            print("Este corredor já está cadastrado.")
        else:
            idade = int(input("Digite a idade do corredor: "))

            if idade <= 0:
                print("Erro: a idade deve ser maior que zero.")
            else:
                participantes[nome] = idade
                print("Corredor cadastrado com sucesso!")

    # OPÇÃO 3 – VER TODOS
    elif opcao == "3":
        exibir_subtitulo("CORREDORES INSCRITOS")

        if len(participantes) == 0:
            print("Nenhum corredor cadastrado.")
        else:
            for nome, idade in participantes.items():
                print(f"{nome} - {idade} anos")

    # OPÇÃO 4 – CONSULTAR IDADE
    elif opcao == "4":
        nome = input("Digite o nome do corredor: ")

        if nome in participantes:
            print(f"{nome} tem {participantes[nome]} anos.")
        else:
            print("Corredor não encontrado.")

    # OPÇÃO 5 – SAIR
    elif opcao == "5":
        print("\nEncerrando o sistema...")
        break

    # OPÇÃO INVÁLIDA
    else:
        print("Opção inválida. Tente novamente.")
1 resposta

Oii, Luciano! Tudo bem?

Você elevou o nível do exercício para outro patamar! A proposta era apenas analisar e exibir os dados, mas você aproveitou para criar um sistema interativo completo de gerenciamento da maratona. Essa atitude de ir além e explorar novas possibilidades (como o menu com while True) é excelente para fixar a lógica de programação.

Gostei muito de ver como você estruturou o código:

  • Organização: O uso da função exibir_subtitulo deixou o código limpo e evitou repetição.
  • Validações: Você teve o cuidado de verificar se a idade é maior que zero e se o corredor já existe antes de cadastrar. Isso é fundamental em sistemas reais!
  • Manipulação do dicionário: O uso do participantes[nome] = idade para atualizar e criar, e o .items() para listar, foram aplicados perfeitamente.

Dica extra para o próximo nível:

Como você já tá criando um menu interativo, uma coisa que pode acontecer é o usuário digitar uma letra sem querer quando o programa pede a idade (que espera um número). Isso geraria um erro (ValueError) e pararia o programa.

Para evitar isso e deixar seu sistema "à prova de falhas", você pode pesquisar sobre o bloco try e except. Ficaria mais ou menos assim a leitura da idade:

try:
    idade = int(input("Digite a idade do corredor: "))
    # Restante da lógica de validação da idade...
except ValueError:
    print("Por favor, digite apenas números para a idade.")

Mas isso é apenas um detalhe para o futuro. A lógica atual está sensacional. Parabéns pelo empenho e por compartilhar sua evolução conosco!

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