image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF

HO

Henrique Oliveira11/05/2023 11:17
Compartilhe

Calculadora de dias, meses e anos em python

    Olá sou um desenvolvedor iniciante, e para treinar gostaria de fazer uma calculadora de quantos anos, meses, dias a pessoa tem, mas não estou conseguindo pensar na conta, poderiam me ajudar??

    segue o código até agora que subtrai o ano da pessoa com o ano de 2023 e da a idade dela:

    dia = input( 'Que dia você nasceu? ')

    mes = input ( 'Que mes você nasceu? ')

    ano = input( 'Que ano você nasceu?' )

    anoatual = 2023

    print( 'De acordo com meus calculos você tem:', int(anoatual) - int(ano), 'anos de idade' )

    Compartilhe
    Comentários (4)
    Micael Braga
    Micael Braga - 12/05/2023 13:51

    Segue a minha sugestão, nela estou utilizando os módulos datetime e math.


    from datetime import datetime
    from math import floor
    
    
    def calcula_idade(data_nascimento):
     """
     Retorna a idade em anos, meses e dias com base na data de nascimento fornecida.
    
     Parâmetros:
     - data_nascimento (datetime): Data de nascimento no formato datetime.
    
     Retorna:
     - str: Uma string formatada com a idade em anos, meses e dias vividos.
    
     Exemplo:
     >>> data_nascimento = datetime.strptime('14/10/2021', '%d/%m/%Y')
     >>> calcula_idade(data_nascimento)
     'Voce tem: 1 ano de idade, 18 meses e 575 dias vividos.'
     """
     anos = (datetime.now() - data_nascimento).days // 365
     meses = floor(((datetime.now() - data_nascimento).days / 365) * 12)
     dias = (datetime.now() - data_nascimento).days
     if anos == 1:
     return f'Voce tem: {anos} ano de idade, {meses} meses e {dias} dias vividos.'
     else:
     return f'Voce tem: {anos} anos de idade, {meses} meses e {dias} dias vividos.'
    
    
    data_nascimento = datetime.strptime(
      input('Informe a data de nascimento (formato dd/mm/AAAA): '), "%d/%m/%Y")
    
    
    print(calcula_idade(data_nascimento))
    
    
    data_nascimento = datetime.strptime(
     input('Informe a data de nascimento (formato dd/mm/AAAA): '), "%d/%m/%Y")
    
    print(calcula_idade(data_nascimento))
    

    EC

    Evandro Coimbra - 11/05/2023 15:10

    Olá, você pode converter a data informada e a atual para objetos do tipo date (datetime.strptime), e depois usar relativedelta (de dateutil) que vai lhe trazer em um outro objeto date o resultado já certinho.


    Espero ter dado uma luz.


    Abraços

    Felipe Marçal
    Felipe Marçal - 11/05/2023 11:51

    Olá, você pode usar a seguinte solução:


    diaUser = eval(input('dia de nascimento: ')) # com eval vc não precisa tipar como int
    mesUser = eval(input('mes de nascimento: '))
    anoUser = eval(input('ano de nascimento: '))
    
    anoAtual = 2023                          #prefira a utilizacao de camelCase na declaração da variável
    result = anoAtual - anoUser              #crie uma variável para armazenar seu resultado
    print('Sua idade é: ', result)
    
    

    Mas veja que há um problema, você declara variáveis que não utiliza

    então.


    anoUser = eval(input('ano de nascimento: '))
    
    anoAtual = 2023                         
    result = anoAtual - anoUser              
    print('Sua idade é: ', result)
    

    FS

    Fabiola Santos - 11/05/2023 11:30

    Oie! Fiz um algoritmo semelhante na faculdade e a base vai ser bem semelhante com a do cálculo dos anos, porém quando o resultado fica negativo a gente acaba tendo que decrementar a variável anterior, por exemplo: mesAtual = 05 e mesNascimento = 10, o resultado ficará -5 e você terá que tirar um ano do cálculo anterior (supondo que fosse 1998 - 2023 = 25, teria que ajustar para 24 já que a pessoa ainda não fez aniversário) e para corrigir o -5, podemos simplesmente somar com +12 para ajustar os meses do ano que já passaram. Quem vai dificultar um pouco são os dias, que vc terá que verificar quantos dias tem cada mês, se o ano é bissexto e por aí vai. Consegue ver melhor a solução?