1
我正在努力解决问题19项目欧拉的Python的while循环,以找到第一个月周日
https://projecteuler.net/problem=19
的目标是要找到倒在第一周日的数量在20世纪的月份。我试图只使用循环来完成问题(不使用日期时间)。
这里是我的代码现在:
days = []
yearCnt = 1900;
dayCnt = 1;
Jan = 31;
Mar = 31;
Apr = 30;
May = 31;
Jun = 30;
Jul = 31;
Aug = 31;
Sep = 30;
Oct = 31;
Nov = 30;
Dec = 31;
while yearCnt < 2001:
if yearCnt == 1900:
Feb = 28;
elif yearCnt%4 == 0:
Feb = 29;
else:
Feb = 28;
days.append(1);
while dayCnt < Jan:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Feb:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Mar:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Apr:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < May:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Jun:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Jul:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Aug:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Sep:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Oct:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Nov:
days.append(0);
dayCnt += 1;
dayCnt = 1;
days.append(1);
while dayCnt < Dec:
days.append(0);
dayCnt += 1;
dayCnt = 1;
yearCnt += 1;
sunCnt = 6;
while sunCnt <= len(days):
days[sunCnt] += 1;
sunCnt += 7;
print(days.count(2));
的想法是创建的所有日子的数组与第一个月的位置标有1秒。然后另一个while循环遍历该数组,并添加1以标记所有星期日。从理论上讲,2的数量应该表示月份的第一个星期日的数量。
它目前给出了答案173.我知道答案是171,但我想知道我要去哪里错了。
您是否独立测试了您的代码,以确定一年是否在二月份有29天? –
你既包括1900年也包括2000年。我认为只有一个属于20世纪。 – chapelo
20世纪开始于1901年,并于2000年结束(包括在内) –