练习要求: 定义一个返回指定年月日的星期的函数weekday(y,m,d),结果为星期一、······、星期日。
输入指定日期,计算这一天是星期几
方法一:
代码实现思路:
1.自定义函数,用来实现switch/case语句
2.使用python内置函数来获取指定日期是星期几
代码实现如下:
from datetime import datetime
#利用num_to_string函数返回中文“星期几”
def num_to_string(num):
numbers={
0:"星期日",
1:"星期一",
2:"星期二",
3:"星期三",
4:"星期四",
5:"星期五",
6:"星期六"
}
return numbers.get(num,None)
#输入指定的日期(年 月 日 )
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):"))
#调用内置函数datetime来获取指定日期是星期几
date=datetime.date(datetime(year=y, month=m, day=d))
#使用isoweekday()函数,得出0~6表示星期一到星期日
n=str(date.isoweekday())
#获取n的值,用int来提取n的整型值
print("{0} 年 {1} 月 {2} 日是 {3}".format(y,m,d,num_to_string(int(n))))
方法二:
from calendar import *
def num_to_string(num):
numbers={
0:"日",1:"一",2:"二",3:"三",4:"四",5:"五",6:"六"
}
return numbers.get(num,None)
def weekday(y,m,d):
monthDay1=[31,28,31,30,31,30,31,31,30,31,30,31]
days=0
for i in range(1,y):
if(isleap(i)):#判断是否是闰年
days=days+366
else:
days=days+365
for j in range(1,m):
if(j==2 and isleap(y)): #判断是否是闰年和二月份
days=days+29
else:
days=days+monthDay1[j-1]
total_days=days+d
xingqi=(total_days)%7 #余数为0是星期日,余数为1是星期一,6是星期六
print("{0} 年 {1} 月 {2} 日是 星期{3}".format(y,m,d,num_to_string(int(xingqi))))
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: d=1
if d>31: d=31
total=weekday(int(y),int(m),int(d))
运行结果:
1.
请输入年份(>=1),否则为1:2018
请输入月份(1~12),否则<1为1、>12为12:12
请输入日期(1~31),否则<1为1、>ndays(y,m)为ndays(y,m):5
2018 年 12 月 5 日是 星期三
请输入年份(>=1),否则为1:2020
请输入月份(1~12),否则<1为1、>12为12:10
请输入日期(1~31),否则<1为1、>ndays(y,m)为ndays(y,m):30
2020 年 10 月 30 日是 星期五