【发布时间】:2014-03-15 07:42:48
【问题描述】:
我在 Python 中为项目 euler 的 #19 问题编写了代码,但它没有给我正确的答案。 问题是:您获得了以下信息,但您可能更愿意自己做一些研究。
1900 年 1 月 1 日是星期一。 九月三十天, 四月、六月和十一月。 其余的都有三十一个, 独自拯救二月, 其中有二十八,风雨无阻。 在闰年,二十九。 闰年出现在任何能被 4 整除的年份,但不会出现在世纪上,除非它能被 400 整除。 在 20 世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日)有多少个星期日?
这里有什么问题?:
months = {'January': 31,
'February': 28,
'March': 31,
'April': 30,
'May': 31,
'June': 30,
'July': 31,
'August': 31,
'September': 30,
'November': 30,
'December': 31
}
years = range(1900, 2001)
day = 1
def main():
global day
for year in years:
if year % 4 == 0 or year % 400 == 0:
months['February'] = 29
else:
months['February'] = 28
for month in months:
if months[month] == 31:
day += 31 % 7 +1
while day > 7:
day = day - 7
if day == 1:
yield day
result = sum(main())
print (result)
而且每次我使用它都会产生不同的答案,
谢谢:)
【问题讨论】:
-
day += 31 % 7 +1等价于day += 4。 -
1.为什么要从 1900 年开始?不应该是1901吗? 2.闰年的条件似乎不正确。 year%4==0 and year%100!=0 3.在月份循环中,为什么只测试一个月是否有31天?
-
我从 1900 年开始,因为他们在信息中说 1900 年 1 月 1 日是星期一。
标签: python