计算一个人从出生到现在活了多少天

要求:给出一个人的出生日期,计算出该人到今天已经活过的天数,出生的那一天算一天,现在这一刻也算一天

思路:假定这个人是19900324现在时间为20140310

1.计算1990年到2014年这24年中的天数 days = (2014 - 1990) * 365,每一年按平年算

2.计算1990年到2014年有有n个闰年 days = days + n

3.计算0324到0310的天数temp_days days = days + temp_days

 

这中间还有一些细节需要考虑,下面是用python实习的代码,试了两个日期没怎么调试

Caculate.py

 1 import datetime
 2 import pdb
 3 
 4 #定义计算一个人从出生到现在活的天数类
 5 class Caculate:
 6     #每个月天数 2月算的28天
 7     __monthDaysArray = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 8     __days = 0
 9 
10      #定义计算函数
11     def caculateDays(self):
12         #获取用户的出生日期
13         bir_date = input("请输入你的出生日期,格式为19900806")
14         bir_year = int(bir_date[0:4])
15         bir_month = int(bir_date[4:6])
16         bir_day = int(bir_date[6:8])
17         #获取当前系统年月日
18         now =datetime.datetime.now()
19         cur_year = now.year
20         cur_month = now.month
21         cur_day = now.day
22         #计算如19900806-20140806之间的天数
23         self.__days = (cur_year - bir_year) * 365
24         #计算1990-2014之间闰年次数 出生月份小月2月从1990年开始计算
25         if bir_month < 2:
26             for tempYear in range(bir_year, cur_year - 1, 1):
27                 if self.isReap(tempYear):
28                     self.__days += 1
29         else:
30             for tempYear in range(bir_year + 1, cur_year, 1):
31                 if self.isReap(tempYear):
32                     self.__days += 1
33         temp_days = 0
34         if cur_month < bir_month:
35             temp_days = self.__monthDaysArray[cur_month] - cur_day
36             for temp_month in range(cur_month + 1, bir_month, 1):
37                 temp_days += self.__monthDaysArray[temp_month]
38             if cur_month <= 2 and bir_month > 2:
39                 if self.isReap(cur_year):
40                     temp_days += 1
41             self.__days -= temp_days
42         if cur_month > bir_month:
43             self.__days += temp_days
44         self.__days += 1
45 
46         return  self.__days
47 
48     #判断是否为闰年
49     def isReap(self, year):
50         if year % 100 == 0 and year % 4 == 0:
51             return True
52         elif year % 100 != 0 and year % 4 == 0:
53             return True
54         else:
55             return False

mainF.py

 1 import Caculate
 2 #测试类
 3 def main():
 4     caculate = Caculate.Caculate()
 5     days = caculate.caculateDays()
 6     print("你已经活了", days)
 7 
 8 
 9 if __name__ == '__main__':
10     main()

中间还有很多异常没有处理

posted on 2014-03-10 23:25  luckygxf  阅读(14616)  评论(0编辑  收藏  举报

导航