Boa noite,
Segue o código que foi feito para a resolução da atividade
from datetime import date, datetime
def calcular_idade(data_nascimento, data_atual):
idade = data_atual.year - data_nascimento.year
if (data_atual.month, data_atual.day) < (data_nascimento.month, data_nascimento.day):
idade -= 1
return idade
def pedir_nome():
while True:
nome = input('Digite o seu nome: ').strip()
if not nome:
print('O nome não pode ficar vazio.')
elif not any(c.isalpha() for c in nome) or not all(c.isalpha() or c in " -'" for c in nome):
print('O nome deve conter apenas letras (espaços, hífen e apóstrofo também são aceitos).')
else:
return nome.title()
def pedir_data_nascimento(hoje):
while True:
texto = input('Digite a sua data de nascimento (dd/mm/aaaa): ').strip()
try:
data = datetime.strptime(texto, '%d/%m/%Y').date()
except ValueError:
print('Data inválida! Use o formato dd/mm/aaaa, por exemplo: 25/12/1995.')
continue
if data > hoje:
print('A data de nascimento não pode estar no futuro.')
elif hoje.year - data.year > 120:
print('Essa data parece muito antiga. Confira e tente de novo.')
else:
return data
def deseja_continuar():
while True:
resposta = input('\nDeseja calcular a idade de outra pessoa? (s/n): ').strip().lower()
if resposta in ('s', 'sim'):
return True
if resposta in ('n', 'nao', 'não'):
return False
print('Resposta inválida! Digite "s" para sim ou "n" para não.')
def main():
hoje = date.today()
while True:
nome = pedir_nome()
nascimento = pedir_data_nascimento(hoje)
idade = calcular_idade(nascimento, hoje)
unidade = 'ano' if idade == 1 else 'anos'
print(f'{nome} tem {idade} {unidade}!')
if not deseja_continuar():
print('Programa encerrado. Até mais!')
break
main()