如何用 Python 构建年龄计算器

这是一个具有挑战性的 Python 项目:年龄计算器。它要求用户输入出生日期,计算出那是多久以前,并以文本形式输出结果。

那么如何用 Python 构建一个年龄计算器呢?让我们逐步查看完整的源代码。

Python 年龄计算器:完整代码

以下是这个Python 项目的完整代码。

我将把它分成几个部分并进行解释,尽管我已经在整个过程中添加了注释来说明每个部分的用途。

from datetime import date
​
def calculate_age(birthdate):
    today = date.today()
    
    # 计算年龄(年)
    age_years = today.year - birthdate.year - ((today.month, today.day) < (birthdate.month, birthdate.day))
    
    # 计算年龄(月和日)
    if today.month < birthdate.month or (today.month == birthdate.month and today.day < birthdate.day):
        age_months = (12 - birthdate.month) + today.month - 1
    else:
        age_months = today.month - birthdate.month
    
    # 计算天数
    if today.day < birthdate.day:
        # 回溯一个月以获取上个月的正确天数
        month_ago = (today.month - 1) if today.month > 1 else 12
        days_in_month = (date(today.year, today.month, 1) - date(today.year, month_ago, 1)).days
        age_days = days_in_month - (birthdate.day - today.day)
    else:
        age_days = today.day - birthdate.day
    
    return age_years, age_months, age_days
​
def main():
    # 从用户输入出生日期
    birthdate_str = input("输入您的出生日期(YYYY-MM-DD): ")
    year, month, day = map(int, birthdate_str.split('-'))
    birthdate = date(year, month, day)
    
    # 计算年龄
    age_years, age_months, age_days = calculate_age(birthdate)
    
    # 输出年龄
    print(f"您的年龄是{age_years}岁,{age_months}个月,{age_days}天。")
​
if __name__ == "__main__":
    main()

您可以将我的完整源代码导入您的Python 集成开发环境并自行运行。当然,您也可以将其用作自己项目的基础。

导入库

对于此功能,您只需要从一个模块中导入一个类。

from datetime import date

从 datetime 库中,您正在导入“date”。

那么 datetime date 是什么?

当我们说“from datetime import date”时,我们的意思是我们仅从 datetime 模块中导入 date 类。

Python 官方文档中所述,datetime 模块允许您处理年、月和日。

如果我们想要构建这个年龄计算器的最简单版本,可能会从类似这样的开始:

from datetime import date
​
def calculate_age(birthdate):
    today = date.today()
    age = today.year - birthdate.year - ((today.month, today.day) < (birthdate.month, birthdate.day))
    return age
​
# 示例用法
birthdate = date(1982, 7, 10)  # 年、月、日
age = calculate_age(birthdate)
print(f"年龄: {age}")

在 Python 中计算年龄

一旦从 datetime 中导入了 date 类,您就可以立即使用它。实际上,如果您想使用 today()方法,就需要它。

from datetime import date
​
# 获取今天的日期
today = date.today()
​
print(f"今天的日期是: {today}")

这段 Python 代码展示了如何调用今天的日期,如果您希望您的计算器找到某人的当前年龄,就需要这样做。

请注意,我们使用 today()来定义变量“today”。

    today = date.today()

一旦定义了该变量,我们就可以通过从今天的日期中减去出生日期来计算年龄。

我们在这里这样做:

    # 计算年龄(月和日)
    if today.month < birthdate.month or (today.month == birthdate.month and today.day < birthdate.day):
        age_months = (12 - birthdate.month) + today.month - 1
    else:
        age_months = today.month - birthdate.month
    
    # 计算天数
    if today.day < birthdate.day:
        # 回溯一个月以获取上个月的正确天数
        month_ago = (today.month - 1) if today.month > 1 else 12
        days_in_month = (date(today.year, today.month, 1) - date(today.year, month_ago, 1)).days
        age_days = days_in_month - (birthdate.day - today.day)
    else:
        age_days = today.day - birthdate.day
    
    return age_years, age_months, age_days

创建用户界面

我们已经构建了一个 Python 年龄计算器。但我们仍然需要一种让人们与之交互的方式。

所以让我们定义我们的 main()函数。

我们需要这个函数来询问用户的出生日期。我们在计算中使用该变量。然后,我们需要执行计算。

所以让它确切地这样做。

    # 从用户输入出生日期
    birthdate_str = input("输入您的出生日期(YYYY-MM-DD): ")
    year, month, day = map(int, birthdate_str.split('-'))
    birthdate = date(year, month, day)
    
    # 计算年龄
    age_years, age_months, age_days = calculate_age(birthdate)
    
    # 输出年龄
    print(f"您的年龄是{age_years}岁,{age_months}个月,{age_days}天。")

将其嵌套在 def main(): 中,我们就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻想多巴胺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值