基于DOB的Python年龄计算器

时间:2019-06-01 04:39:25

标签: python python-3.x

我正在通过创建一个年龄计算器来进行练习,该计算器会根据给定的出生日期以年为单位计算年龄。

但是,它不能按我预期的方式工作。当用户的年龄为19岁且月份小于6时,我想向用户显示例如19年的年龄,如果月份大于6,则在这种情况下我想为年龄19加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)

4 个答案:

答案 0 :(得分:0)

我从“年龄”中减去了int(age)来获得年龄的小数位数。

data[, WANT2 := pmax(score, WANT2, na.rm = TRUE) * ind]

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

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

我认为可以。

答案 1 :(得分:0)

您可以在一年中不分割任何天,然后四舍五入(四舍五入)以获得所需的结果。下面的代码应该可以工作。

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))

输出:

20

答案 2 :(得分:0)

这是您的功能

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"))

这里有几个例子

years_of_age()

请输入您的DOB,格式为mm-dd-yyyy:1976年5月16日
1月,44年
44

years_of_age()

请输入您的DOB,格式为mm-dd-yyyy:1976年7月16日
11个月,43岁
44

years_of_age()

请输入您的DOB,格式为mm-dd-yyyy:1977年2月16日
4个月,43岁
43

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

  • 因为您是初学者,所以我确保使用python标准库软件包,不是因为numpy太高级,而是因为标准库软件包高效,出色并且被忽略了。

答案 3 :(得分:-1)

假设今天是01/01/2019,输入是12/06/1989。我们需要的输出是29years and 7 months

   if  Condition >= 0:
    Totmonth = condition 
  else:
     Totmonth = 12+condition 
      age -= 1

  print “age is “, age,”and”, Totmonth,”months”