今天玩了一个题目,本来以为很简单,结果也折腾了好久,还在网上搜了一下解题思路才把代码写出来

一、题目

问题:输入出生日期和当前的日期,输出活了多少天

举例:你是昨天出生的,那么输出就为1

本题来自Udacity的计算机科学导论课程,用来做Python入门

官网还有几个测试用例

test_cases = [((2012,1,1,2012,2,28), 58),

((2012,1,1,2012,3,1), 60),

((2011,6,30,2012,6,30), 366),

((2011,1,1,2012,8,8), 585 ),

((1900,1,1,1999,12,31), 36523)]

二、解题思路

分三种情况讨论:

1、年份和月份都相同

2、年份相同月份不同,先计算出生当天是当年的第几天,后计算当前为当年的第几天,相减

3、年份不同,还是先计算出生当天为当年的第几天,后计算当前为当年的第几天,做闰年判断,逐一相加

闰年为一下两种情况

1、能被400整除

2、能被4整除但不能被100整除

三、代码实现

# By Websten from forums

#

# Given your birthday and the current date, calculate your age in days.

# Account for leap days.

#

# Assume that the birthday and current date are correct dates (and no

# time travel).

#

def is_runnian(year):

if year%400 == 0:

return True

elif year%4==0 and year%100!=0:

return True

else:

return False

def days_of_year(year):

if not is_runnian(year):

days_of_year = 365

else:

days_of_year = 366

return days_of_year

def count_day(year,month,day):

if not is_runnian(year):

daysOfMonths = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

else:

daysOfMonths = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

days = 0

for i in range(1,month):

days += daysOfMonths[i-1]

days+=day

return days

def daysBetweenDates(year1, month1, day1, year2, month2, day2):

##

# Your code here.

##

if year1==year2 and month1==month2:

return day2-day1

elif year1==year2:

return count_day(year2,month2,day2)-count_day(year1,month1,day1)

else:

if (year2-year1)==1:

return days_of_year(year1)-count_day(year1,month1,day1)+count_day(year2,month2,day2)

else:

days=0

for i in range(year1+1,year2):

days+=days_of_year(i)

days = days+days_of_year(year1)-count_day(year1,month1,day1)+count_day(year2,month2,day2)

return days

# Test routine

def test():

test_cases = [((2012,1,1,2012,2,28), 58),

((2012,1,1,2012,3,1), 60),

((2011,6,30,2012,6,30), 366),

((2011,1,1,2012,8,8), 585 ),

((1900,1,1,1999,12,31), 36523)]

for (args, answer) in test_cases:

result = daysBetweenDates(*args)

if result != answer:

print "Test with data:", args, "failed",result

else:

print "Test case passed!", args

test()

python根据出生年份算年龄_python小题 按天算年龄相关推荐

  1. python如何定义一个函数选择题_Python逻辑题(以下10个选择题有唯一答案,请编写自定义函数judge遍历答案列表并报告正确答案),python,道,汇报...

    python逻辑题(以下10道选择题有唯一答案,请编写自定义函数judge遍历答案列表并汇报正确答案) 1.题目.代码及答案演示 代码: 逻辑题 说明 :个人没用过 Jupyter Notebook ...

  2. python输入出生年份、输出年龄_python根据出生日期计算年龄的代码

    python根据出生日期计算年龄的代码,运行后会提醒用户输出出生的年月日,然后输出年龄,可以改写为一个通用函数 from time import * #a function to find your ...

  3. python编写姓名年龄_python小工具 - alert弹框输出姓名年龄、求和

    # 导入tkinter的所有的包里面所有的内容from tkinter import *import tkinter.messageboxasmessagebox # 从Frame派生一个Applic ...

  4. python取特定年份的数据_python,_怎样用python提取不同股票csv里特定时间段的数据,python - phpStudy...

    怎样用python提取不同股票csv里特定时间段的数据 我有几千只股票的csv数据,需要算所有股票在特定时间段内的收益率. 但是数据里的日期信息并不统一,有的csv到2011年就没有了之后的信息了,有 ...

  5. python与数据思维基础笔记_Python小课笔记--Python基础:数据和函数(二)

    截图来自Python小课 文|仟樱雪 在Python小课-1-2节中,已经学习了基础模块--数据--数据类型(整数.字符串),以及基础模块--变量,基础模块--函数(input函数.print函数). ...

  6. python用random函数猜字母_Python小游戏——猜数字教程(random库教程)

    今天来开发一个简单的数字逻辑游戏,猜数字(数字炸弹) 首先开发游戏第一件事,了解需求. 猜数字游戏规则: 计算机随机生成一个指定范围的数字,由玩家来猜测, 之后计算机会根据玩家提供数字来与自己生成的数 ...

  7. python win32转pdf 横版_Python 小技巧之 Office 文件转 PDF

    文章来源于公众号:Python技术 作者:派森酱 在日常的生活工作中,难免需要用到一些 小Tip 来解决工作中遇到的小难题,今天的文章给大家安利一个方便快捷的小技巧,将 Office(doc/docx ...

  8. python 引入同一路径的类_python小课堂15 - 史上最详细的包和模块import讲解篇

    python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...

  9. python中关键字 表示空类型_Python小知识:如何在Python 3中转换数据类型

    写在前面: 在Python中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...

最新文章

  1. CMOS及CCD感光sensor的主要技术参数解析
  2. 呢篇唔系教程 -- 记录自己第一次Android刷机
  3. Envi和ArcGIS软件打开和处理.NC4数据
  4. young people can also be a leader
  5. android 隐藏系统键盘
  6. LFM算法详解和实战
  7. 操作系统实验报告 实验3存储管理实验(答案全)
  8. SAP 修改字段长度
  9. 磁珠 符号_磁珠。标有FB的应该是磁珠!
  10. PHP加密如何保护php源码不被破解不被轻易去授权
  11. 统计学的Python实现-015:调和平均数
  12. uWSGI和Gunicorn
  13. 汇编语言--D/A转换实验
  14. 蜂群 matlab,人工蜂群算法
  15. 有趣又实用的软件,给生活增添趣味
  16. 关于java的1234
  17. 半导体功率器件静态参数测试仪系统 能测 IGBT. Mosfet. Diode. BJT......
  18. 【FPGA】一些基本模块代码
  19. 洛谷题库P5735距离函数C语言,扩展有限元求解弱不连续问题..docx
  20. 《东周列国志》第六十二回 诸侯同心围齐国 晋臣合计逐栾盈

热门文章

  1. 数字ic设计——AMBA总线(1)AMBA总线介绍
  2. 51单片机 跑步机控制器设计
  3. 查水表的原理(转载)
  4. 敏捷沟通-如何管理干系人?
  5. HR面试问题回答技巧综合大全
  6. 涂鸦蓝牙SDK开发系列教程——2.产品创建
  7. js运算符 ~~ 是什么意思?
  8. Docker操作命令汇总
  9. 2022熔化焊接与热切割考试题库及答案
  10. restTemplate返回字符乱码问题