1.问题描述
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网。
2.怎么实现
(1) 自定义函数 leap(),用来判断输入的年份是否是闰年。
(2) 自定义函数 number(),用来计算输入日期距 2011 年 1 月 1 日共有多少天。
(3)然后就可以计算出在那天,渔夫是在打鱼还是晒网?
3.代码实现
1.Python实现
源代码:
def leap(b):
if ((b%4==0) and (b%100 != 0) or (b%400==0)):
return 1
else:
return 0
def number(y,m,d):
global sum
sum = 0
a=[31,28,31,30,31,30,31,31,30,31,30,31] # 数组a存放平年每月的天数
b=[31,29,31,30,31,30,31,31,30,31,30,31] # 数组b存放闰年每月的天数
if leap(y)==1: # 判断是否为闰年
for i in range(m):
sum+=b[i] # 是闰年,累加数组b前m-1个月份的天数
i+=1
else:
for i in range(m):
sum+=a[i] # 不是闰年,累加数组a前m-1个月份的天数
for j in range(2011,y+1):
if leap(j)==i:
sum+=366 # 2011年到输入的年份是闰年的加366
else:
sum+=365 # 2011年到输入的年份不是闰