Olá Lorena,
Agradeço pelo feedback e pela dica sobre o while dedicado à validação da entrada numérica na idade do participante. Fiz alguns ajustes e deixo mais abaixo para nova avaliação, por favor.
Aproveitei para mudar a checagem de duplicidade do nome, que estava sendo feita após a validação da idade e não fazia muito sentido. Agora faz após a validação do nome, como acredito ser o ideal.
Sobre o ponto levantado por ti, esse aqui "Na sua visão, utilizar o nome do maratonista como a chave do dicionário facilitou o controle de duplicados se compararmos com o uso de uma lista tradicional de tuplas?"
Iniciei o aprendizado em programação faz pouco tempo, minha vivência é mais com os cursos da Alura e de outras plataformas que assisto às vezes. Como não era uma resposta qual eu teria muita certeza, eu pesquisei sobre as diferenças.
Como conclusão, acredito que pelo fato de dicionários não aceitarem chaves duplicadas, usar nomes como chaves do docionário ajuda sim na verificação de duplicados. O que deixa a verificação mais rápida e possivelmente o código mais limpo.
Me corrija se estiver errado, por favor.
Aqui está o código ajustado como mencionei acima.
participantes = {}
print('=== NOME DOS PARTICIPANTES (Digite "sair em Nome para encerrar) ===')
while True:
nome = input('Digite o nome do participante: ').strip().title()
if nome == 'Sair':
break
if not nome:
print('Erro: nome obrigatório. Por favor, digite o nome do participante.')
continue
if nome in participantes:
print(f'O participante {nome} já está cadastrado!')
continue
while True:
idade_input = input(f'Informe a idade de {nome}: ').strip()
if idade_input.isdigit():
idade = int(idade_input)
break
else:
print('Erro: por favor, digite um número válido para idade.')
continue
participantes[nome] = idade
print(f'Participante {nome} adicionado com sucesso!')
nomes_juntos = ', '.join(participantes.keys())
print(f'Nomes dos participantes: {nomes_juntos}\n')
idades_juntas = ', '.join(map(str, participantes.values()))
print(f'Idade dos participantes: {idades_juntas}\n')
print(f'Participantes e suas idades:\n')
for nome, idade in participantes.items():
print(f'- {nome}: {idade} anos\n')