Eu honestamente li errado o enunciado desse caso e entendi que a entrada deveria ser um input, então eu acabei fazendo esse código um pouquinho mais complexo:
import re
participants = {}
name_template = r'[^\W\d_]+'
age_template = r'[0-9]+'
while True:
names = input("Digite o nome do participante: ").title().strip().split(", ")
ages = input("Digite a idade do participante: ").strip().split(", ")
print("")
if len(names) != len(ages):
print("O número de membros das duas listas é diferente. Tente novamente.")
break
for i in range(len(names)):
name = names[i]
age = ages[i]
if (re.fullmatch(name_template, name)) and (re.fullmatch(age_template, age)):
participants[name] = age
else:
print("Existe algum erro na formatação dos dados. Encerrando o processo.\n")
break
break
if participants:
print("Lista de participantes e suas idades: ")
for x, y in participants.items():
print(f"- {x}: {y} anos de idade;")
else:
print("Houve um erro no processamento de dados. Tente novamente.")
Esse código tem uns três problemas. Um é que eu não achei uma solução boa pra quando o número de listas é maior que a outra, então eu decidi só não fazer esse processo. O segundo é que se tiver um caso em que o dado errado esteja no meio da lista, ele só interrompe tudo ao invés de pegar dados válidos, como em:
Digite o nome do participante: david, júlia, arcelino, joão, carlos, pedro, alessandro
Digite a idade do participante: 20, 22, 56, 19, 20, X, 42
Existe algum erro na formatação dos dados. Encerrando o processo.
Lista de participantes e suas idades:
- David: 20 anos de idade;
- Júlia: 22 anos de idade;
- Arcelino: 56 anos de idade;
- João: 19 anos de idade;
- Carlos: 20 anos de idade;
Como é que seria uma boa resolução desse tipo de problema? Sei que não é exatamente o que foi pedido mas fiquei curioso pra saber.