这是一个具有挑战性的 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(): 中,我们就完成了。