2.编写程序,打印2018年1-12月份的日历
import calendar
import locale
textcal=calendar.TextCalendar()
textcal.pryear(2018)
3.编写程序,定义一个返回指定年月的天数的函数ndays(y,m),并编写测试代码
from calendar import *
def ndays(y,m):
monthDay=[31,28,31,30,31,30,31,31,30,31,30,31]
days = monthDay[ m-1 ]
if(m==2 and isleap(y)):
days+=1
return(days)
#测试代码
y=int(input("请输入年份(>=1),否则为1:"))
m=int(input("请输入月份(1--12),否则<1为1,>12为12:"))
if y<1:y=1
if m<1:m=1
if m>12:m=12
print(ndays(y,m))
4.编写程序,定义一个返回从公元1年1月1日(含)到y年m月d日(含)的天数的函数caldays(y,m,d),并编写测试代码。
提示:
计算从公元1年1月1日到y年m月d日的天数,可以分为3个部分计算。
(1)计算从公元1年到y-1年的天数,每年是365天或366天(闰年)。
(2)对于第y年,先计算1~m-1月整月的天数,可利用上一题返回指定年月的天数的函数ndays(y,m)。
(3)最后加上零头(第m月的d天)。
from calendar import *
def ndays(y,m):
monthDays=[31,28,31,30,31,30,31,31,30,31,30,31]
days = monthDays[ m-1 ]
if(m==2 and isleap(y)):
days+=1
return(days)
def caldays(y,m,d):
nleaps = 0
nonleaps = 0
monthDay = 0
for i in range(1,y):
if isleap(i):
nleaps +=1
else:
nonleaps+=1
yearDay=nonleaps*365+nleaps*366
for i in range(1,m):
monthDay += ndays(y,i)
dayDay = d
return yearDay +monthDay +dayDay
#测试代码
y=int(input("请输入年份(>=1),否则为1:"))
m=int(input("请输入月份(1--12),否则<1为1,>12为12:"))
d=int(input("请输入天数(1--31),否则<1为1,>31为31:"))
if y<1:y=1
if m<1:m=1
if m>12:m=12
if d<1:d=1
if d>31:d=31
print("从1 年 1 月 1日到 {0} 年 {1} 月 {2} 日共 {3} 天".format(y,m,d,caldays(y,m,d)))
5.编写程序,定义一个返回指定年月日的星期的函数weekday(y,m,d)。结果为星期一.......星期日并编写测试代码。
from calendar import *
def ndays(y,m):
monthDays=[31,28,31,30,31,30,31,31,30,31,30,31]
days = monthDays[ m-1 ]
if(m==2 and isleap(y)):
days+=1
return(days)
def caldays(y,m,d):
nleaps = 0
nonleaps = 0
monthDay = 0
for i in range(1,y):
if isleap(i):
nleaps +=1
else:
nonleaps +=1
yearDay=nonleaps*365+nleaps*366
for i in range(1,m):
monthDay += ndays(y,i)
dayDay = d
return yearDay +monthDay +dayDay
def weekday(y,m,d):
num=caldays(y,m,d)%7
if(num==0):
num=7
numbers={
0:"星期日",
1:"星期一",
2:"星期二",
3:"星期三",
4:"星期四",
5:"星期五",
6:"星期六"
}
return numbers.get(num)
#测试代码
y=int(input("请输入年份(>=1),否则为1:"))
m=int(input("请输入月份(1--12),否则<1为1,>12为12:"))
d=int(input("请输入天数(1--31),否则<1为1,>ndays(y,m)为ndays(y,m):"))
if y<1:y=1
if m<1:m=1
if m>12:m=12
if d<1:m=1
if d>ndays(y,m):d=ndays(y,m)
print("{0} 年 {1} 月 {2} 日是 {3}".format(y,m,d,weekday(y,m,d)))