我正在通过创建一个年龄计算器来进行练习,该计算器会根据给定的出生日期以年为单位计算年龄。
但是,它不能按我预期的方式工作。当用户的年龄为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)
答案 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”