描述
给定年月日,求星期几。已知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
代码
def judge_week(year, month, day):
    lst1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    lst2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    date = days = 0
    lst_days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
    if month in [1, 3, 5, 7, 8, 10, 12]:
        if day < 1 or day > 31:
            print('Illegal')
            return
    elif month == 2:
        if (year % 4 == 0) and (year % 100 != 0) or year % 400 == 0:
            if day < 1 or day > 29:
                print('Illegal')
                return
        else:
            if day < 1 or day > 28:
                print('Illegal')
                return
    elif month in [4, 6, 9, 11]:
        if day < 1 or day > 30:
            print('Illegal')
            return
    else:
        print('Illegal')
        return
    if year>=1:  #1年1月1日为星期一
        for i in range(1,year):
            if (i % 4 == 0) and (i % 100 != 0) or i % 400 == 0:
                days += 366
            else:
                days += 365    #累加整年数
        if ((year % 4) == 0) and ((year % 100) != 0) or ((year % 400) == 0):
            for i in range(month-1):
                date +=lst1[i]
        else:
            for i in range(month-1):
                date +=lst2[i]    #累加整月数
        total=date+day+days
        x=total % 7
        print(lst_days[x])
    else:
        for i in range(year+1, 1):
            if (i % 4 == 0) and (i % 100 != 0) or i % 400 == 0:
                days += 366
            else:
                days += 365  # 累加整年数
        if ((year % 4) == 0) and ((year % 100) != 0) or ((year % 400) == 0):
            for i in range(month - 1,12):
                date += lst1[i]
        else:
            for i in range(month - 1,12):
                date += lst2[i]  # 累加整月数
        total = date - day + 1 + days
        x = total % 7
        print(lst_days[(8-x)%7])
n = int(input())
for i in range(n):
    year, month, day = map(int, input().split())
    judge_week(year, mon, day)










