python根据出生年份算年龄_python小题 按天算年龄
今天玩了一个题目,本来以为很简单,结果也折腾了好久,还在网上搜了一下解题思路才把代码写出来
一、题目
问题:输入出生日期和当前的日期,输出活了多少天
举例:你是昨天出生的,那么输出就为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小题 按天算年龄相关推荐
- python如何定义一个函数选择题_Python逻辑题(以下10个选择题有唯一答案,请编写自定义函数judge遍历答案列表并报告正确答案),python,道,汇报...
python逻辑题(以下10道选择题有唯一答案,请编写自定义函数judge遍历答案列表并汇报正确答案) 1.题目.代码及答案演示 代码: 逻辑题 说明 :个人没用过 Jupyter Notebook ...
- python输入出生年份、输出年龄_python根据出生日期计算年龄的代码
python根据出生日期计算年龄的代码,运行后会提醒用户输出出生的年月日,然后输出年龄,可以改写为一个通用函数 from time import * #a function to find your ...
- python编写姓名年龄_python小工具 - alert弹框输出姓名年龄、求和
# 导入tkinter的所有的包里面所有的内容from tkinter import *import tkinter.messageboxasmessagebox # 从Frame派生一个Applic ...
- python取特定年份的数据_python,_怎样用python提取不同股票csv里特定时间段的数据,python - phpStudy...
怎样用python提取不同股票csv里特定时间段的数据 我有几千只股票的csv数据,需要算所有股票在特定时间段内的收益率. 但是数据里的日期信息并不统一,有的csv到2011年就没有了之后的信息了,有 ...
- python与数据思维基础笔记_Python小课笔记--Python基础:数据和函数(二)
截图来自Python小课 文|仟樱雪 在Python小课-1-2节中,已经学习了基础模块--数据--数据类型(整数.字符串),以及基础模块--变量,基础模块--函数(input函数.print函数). ...
- python用random函数猜字母_Python小游戏——猜数字教程(random库教程)
今天来开发一个简单的数字逻辑游戏,猜数字(数字炸弹) 首先开发游戏第一件事,了解需求. 猜数字游戏规则: 计算机随机生成一个指定范围的数字,由玩家来猜测, 之后计算机会根据玩家提供数字来与自己生成的数 ...
- python win32转pdf 横版_Python 小技巧之 Office 文件转 PDF
文章来源于公众号:Python技术 作者:派森酱 在日常的生活工作中,难免需要用到一些 小Tip 来解决工作中遇到的小难题,今天的文章给大家安利一个方便快捷的小技巧,将 Office(doc/docx ...
- python 引入同一路径的类_python小课堂15 - 史上最详细的包和模块import讲解篇
python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...
- python中关键字 表示空类型_Python小知识:如何在Python 3中转换数据类型
写在前面: 在Python中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...
最新文章
- CMOS及CCD感光sensor的主要技术参数解析
- 呢篇唔系教程 -- 记录自己第一次Android刷机
- Envi和ArcGIS软件打开和处理.NC4数据
- young people can also be a leader
- android 隐藏系统键盘
- LFM算法详解和实战
- 操作系统实验报告 实验3存储管理实验(答案全)
- SAP 修改字段长度
- 磁珠 符号_磁珠。标有FB的应该是磁珠!
- PHP加密如何保护php源码不被破解不被轻易去授权
- 统计学的Python实现-015:调和平均数
- uWSGI和Gunicorn
- 汇编语言--D/A转换实验
- 蜂群 matlab,人工蜂群算法
- 有趣又实用的软件,给生活增添趣味
- 关于java的1234
- 半导体功率器件静态参数测试仪系统 能测 IGBT. Mosfet. Diode. BJT......
- 【FPGA】一些基本模块代码
- 洛谷题库P5735距离函数C语言,扩展有限元求解弱不连续问题..docx
- 《东周列国志》第六十二回 诸侯同心围齐国 晋臣合计逐栾盈