- 综合讨论区
- 帖子详情
老师参与
040:万年历 一题苦思不得其解,向老师和同学们求助!
周文扬
发表于2021年02月16日
<p><strong>此题经反复调试程序,一直不通过。但逐一检查程序的输入输出又是符合的,不知道问题到底出在哪里。求助!</strong></p><p>040:万年历</p><p>描述<br ></p><p>给定年月日,求星期几。已知2020年11月18日是星期三。另外,本题有公元0年,这个和真实的纪年不一样</p><p>输入</p><p>第一行是n(n <=30),表示有n组数据<br >接下来n行,每行是一组数据。<br >每行三个整数y,m,d,分别代表年,月,日。(-1000000<=y<=1000000)<br >若今年是2017年,则往前就是2016年,2015年....一直数到2年,1年,再往前就是0年,-1年,-2年.....</p><p>输出</p><p>对每组数据,输出星期几,星期几分别用<br >"Sunday","Monday","Tuesday","Wednesday","Thursday", "Friday","Saturday" 表示<p><br ></p>如果月份和日期不合法,输出"Illegal"</p><p><code class="brush:python;toolbar:false" >import calendar #导入Python的日历标准库
n=int(input())
lb=[input().split() for i in range(n)]
xqlb=["Monday","Tuesday","Wednesday","Thursday", "Friday","Saturday","Sunday"]
#此函数判断输入是否合法
def pdhf(lb):
# print(lb[0],lb[1],lb[2])
if calendar.isleap(int(lb[0])):
if lb[1]=="2" and int(lb[2])>29:
return 0
else:
if lb[1]=="2" and int(lb[2])>28:
return 0
if int(lb[1])>12:
return 0
if lb[1] in ["4","6","9","11"] and int(lb[2])>30:
return 0
if lb[1] in ["1","3","5","7","8","10","12"] and int(lb[2])>31:
return 0
return 1
for i in lb:
if pdhf(i):
rq = calendar.weekday(int(i[0]),int(i[1]),int(i[2]) )
print(xqlb[rq])
else:
print("Illegal")</code></p>
7
回复