基于DOB的Python年龄计算器

2024-09-30 01:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在练习创建一个年龄计算器,根据给定的出生日期计算年龄。在

但是它并没有按照我想要的方式工作。我想向用户显示年份中的年龄,例如19岁,当他们的年龄是19岁,而月小于6岁时,如果这个月超过6岁,我想在这个例子中19+1的年龄上加1。在

有人能用更好的方式用相同的概念创建同一个程序吗?请加上一些解释,以便我更容易理解。在

我是python初学者,请原谅我糟糕的代码和糟糕的英语。提前谢谢你的帮助。在

from datetime import date

Doby,Dobm,Dobd =input("enter your DOB : i.e year,month,days  1999,02,08   : ").split(",")
born = date(year = int(Doby) , month= int(Dobm) , day= int(Dobd))
today = date.today()
age = today.year - born.year
condition = today.month - born.month
if condition >= 6 :
    age += 1
elif condition <= -6 :
    age -= 1
print(age)

Tags: agetodaydate方式conditionyear计算器出生日期
3条回答

我从'age'中减去int(age)得到age的小数位数。在

days_in_year = 365.2425    
age = (date.today() - born).days / days_in_year
decAge = age - int(age)

然后检查小数部分是否大于0.5,并相应地设置“年龄”。在

^{2}$

我认为这很管用。在

这是你的职责

def years_of_age():
    from datetime import date, datetime
    dob = input("Please enter your DOB as mm-dd-yyyy: ")

    #time delta in days
    val = date.today().toordinal() - datetime.strptime(dob, "%m-%d-%Y").toordinal()

    # this is just so you can confirm, comment out the following 4 lines
    print("months {}, years {}".format(\
                                       int(datetime.fromordinal(val).strftime("%m")),\
                                       int(datetime.fromordinal(val).strftime("%Y"))\
                                      ))

    # conditional return based on the months figure
    if int(datetime.fromordinal(val).strftime("%m")) >=6:
        return int(datetime.fromordinal(val).strftime("%Y")) + 1
    else:
        return int(datetime.fromordinal(val).strftime("%Y"))

这里有几个例子

^{2}$

请输入您的出生日期为mm-dd-yyyy:5-16-1976
第一个月,第44年
44岁

^{2}$

请输入您的出生日期为mm-dd-yyyy:7-16-1976
第11个月,第43年
44岁

^{2}$

请输入您的出生日期为mm-dd-yyyy:2-16-1977
第4个月,第43年
43岁

  • 实例方法.toordinal()将日期时间对象转换为自1月1日起的天数。在
  • 实例方法.strftime()将字符串转换为datetime对象,前提是存在格式指令datetime(“%m-%d-%Y”)。

  • 由于您是一个初学者,我确保使用python标准库包,不是因为numpy太高级了,而是因为标准库包是高效的、伟大的和被忽视的。

你可以用一年中没有天数来除法,然后四舍五入(四舍五入)得到想要的结果。下面的代码应该可以工作。在

from datetime import date

# Doby,Dobm,Dobd =input("enter your DOB : i.e year,month,days  1999,02,08   : ").split(",")
Doby, Dobm, Dobd = 1999, 11, 1
born = date(year=int(Doby), month=int(Dobm), day=int(Dobd))
today = date.today()

print(round((today-born).days/365.25))

输出:

^{2}$

相关问题 更多 >

    热门问题