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中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...
最新文章
- Oracle 10g如何对用户姓名,按首字母排序、查询
- python爬取天天基金_用Python抓取天天基金网基金历史净值数据
- 报班学python到底怎么样-你们都是怎么学 Python 的?
- spark如何防止内存溢出_Spark 理论基石 —— RDD
- Ubuntu 12.04LTS 找不到eth0网卡
- SAP Spartacus单元测试里Component实例的创建细节
- debug ERP initial load error
- 中科大 计算机网络2 什么是互联网
- listview 刷新结束 监听_Flutter 开发从 0 到 1(四)ListView 下拉加载和加载更多
- BigDecimal数据加法返回值接收
- PHP常用正则类(全)
- 11月安全回顾:你造吗?短信验证码未必可靠
- Linux学习笔记2 - 字符界面
- awesomium_v1.6.6_sdk 百度云下载地址
- JQuery函数大全
- tomcat9 中文乱码
- SIM900/SIM900A 模块实现收发短信,打电话
- 2013江苏计算机二级vfp试题,2008年春季江苏省计算机等级考试二级VFP考试试题(含答案)...
- 室内定位:基于NB/LTE Cat.1蜂窝网络的穿戴设备定位 BLE-4
- 我的世界无限资源的服务器,我的世界无限资源单机版
热门文章
- node.js+uniapp计算机毕业设计安卓校园兼职APP(程序+APP+LW)
- HIT 软件构造 面向复用的设计模式
- 模仿酷狗7(Kugou7)音乐魔方界面源码
- 【计算机毕业设计】012基于springboot的社区团购系统设计
- 利用js 获取本日 本周 本月时间代码
- 单片机 STM32F103C8T6 cubeMX HAL库 从环境到开发 正点原子工程移植 freeRTOS
- 伯克利计算机低年级核心课程之CS61A-SICP
- 什么是语义分割?原理+实现过程?
- omap5 eMMC 启动流程
- 微型四轴飞行器(5)九轴姿态融合算法B