python:输日期,查周几

给定年月日,求星期几。已知2020年11月18日是星期三。另外,本题有公元0年,这个和真实的纪年不一样

输入

第一行是n(n <=30),表示有n组数据
接下来n行,每行是一组数据。
每行三个整数y,m,d,分别代表年,月,日。(-1000000<=y<=1000000)

若今年是2017年,则往前就是2016年,2015年....一直数到2年,1年,再往前就是0年,-1年,-2年.....

输出

对每组数据,输出星期几,星期几分别用

"Sunday","Monday","Tuesday","Wednesday","Thursday", "Friday","Saturday" 表示

如果月份和日期不合法,输出"Illegal"

样例输入

6
2017 2 29
2017 13 2
0 1 1
-2 3 4
2017 10 18
2015 12 31

样例输出

Illegal
Illegal
Saturday
Wednesday
Wednesday
Thursday
n=int(input())
week={0:"Wednesday",1:"Thursday", 2:"Friday",3:"Saturday", 4:"Sunday",5:"Monday",6:"Tuesday"}
month={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
oringal='2020 11 18'
def ifmax(x):
    y=x.split()
    d,e,f=int(y[0]),int(y[1]),int(y[2])
    if d>2020:
        return 1
    elif d<2020:
        return 0
    else:
        if e>11:
            return 1
        elif e<11:
            return 0
        else:
            if f>18:
                return 1
            elif f<18:
                return 0
            else:
                return -1
t=''
for i in range(n):
  day=0
  month[2]=28
  s=input()
  ss = s.split()
  a, b, c = int(ss[0]), int(ss[1]), int(ss[2])
  if (b>=1 and b<=12)and(c>=1 and c<=month[b]):
    if ifmax(s)==-1:
        t=t+"Wednesday"+'\n'
    elif ifmax(s)==1:
        if a % 4 == 0 and a % 100 != 0 or a % 400 == 0:
            month[2] = 29
        for i in range(1, b):
            day += month[i]
        day += c
        day -=323
        for j in range(2020,a):
            if j % 4 == 0 and j % 100 != 0 or j % 400 == 0:
                day += 366
            else:
                day += 365
        t += str(week[day % 7]) + '\n'
    else:
        if a % 4 == 0 and a % 100 != 0 or a % 400 == 0:
            month[2] = 29
        for i in range(1,b):
            day+=month[i]
        day+=c
        day=323-day
        for j in range(a,2020):
            if j % 4 == 0 and j % 100 != 0 or j % 400 == 0:
                day += 366
            else:
                day += 365
        t += str(week[(-day) % 7]) + '\n'
  else:
    t += 'Illegal\n'
print(t)


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值