python输出生日程序_用Python写一个能算出自己年龄的小程序

用Python写一个能算出自己年龄的小程序。

其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理我写代码的思考过程。

首先导入我们这个程序中需要的datetime库。

import datetime

算年龄

在算年龄之前,我们先要知道两样东西。第一个是用户的生日,第二是现在的日期

用户的生日让用户输入就行, 保存到birthday里面:

birthday = datetime.date( # 输入生日

year=int(input('请输入你的出生年份:')),

month=int(input('请输入你的出生月份:')),

day=int(input('请输入你的出生日期:'))

)

现在的日期也很好求:

today = datetime.date.today() # 现在的日期

然后怎么办呢?我发现两个date对象之间可以相减,这下就好办了,直接把today和birthday相减得到的天数除以365就能得到年龄了。因为得数精度太高,舍入到了第7位。

age = round((today - birthday).days/365, 7)

# 今天的日期与生日相减的天数除以365得出年龄

最后就可以输出啦。

print(f"今天是{today.year}年{today.month}月{today.day}日")

print(f"你今年大约{age}岁了!")运行结果

成功了。

计算还要多久过下一次生日

我们的程序功能好像有点单调了,添加一个计算还要过多久才能过下一次生日的功能吧。

首先我们要知道下一次过生日是什么时候。

生日的月份和日期是不变的,变的是年份。年份是今年或明年,可以从today变量里面获取,月份和日期可以可以从birthday中获取。因为birthday的变量名已经用过了,所以下一次过生日的时间就存在birth里面吧。

birth = datetime.date( # 最近的生日

year=today.year, # 今年

month=birthday.month,

day=birthday.day

)

然后输出:

print(f"距离你的生日还有{(birth - today).days}天")

但如果你真这么写就会出bug:出了一个bug

为什么会出bug呢?

原来还有一个地方没考虑,就是如果生日今年已经过了,那么下一次过生日就是明年了。所以要在后面增加一个判断条件:

if birth < today: # 如果今年过过了

birth = datetime.date(

year=today.year+1, # 算明年的

month=birthday.month,

day=birthday.day

)

这样子就对了

结尾

附上这个有趣的程序的完整源代码:

import datetime

birthday = datetime.date( # 输入生日

year=int(input('请输入你的出生年份:')),

month=int(input('请输入你的出生月份:')),

day=int(input('请输入你的出生日期:'))

)

today = datetime.date.today() # 现在的日期

age = round((today - birthday).days/365, 7)

# 今天的日期与生日相减的天数除以365得出年龄

birth = datetime.date( # 最近的生日

year=today.year, # 今年

month=birthday.month,

day=birthday.day

)

if birth < today: # 如果今年过过了

birth = datetime.date(

year=today.year+1, # 算明年的

month=birthday.month,

day=birthday.day

)

print(f"今天是{today.year}年{today.month}月{today.day}日")

print(f"你今年大约{age}岁了!")

print(f"距离你的生日还有{(birth - today).days}天")

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值