作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究这个问题。这个问题说你必须找出从 1901 年到 2000 年的每个月的第一天有多少个星期日。我已经让它大部分工作了,但它仍然输出 173,而不是 171(正确答案)。
有人知道这是为什么吗?
months = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
start, end = 1900, 2001
years = range(start, end)
leap_years = range(1904, 2001, 4)
Sundays = 0
days = 1
for year in years:
if year in leap_years:
months[2] = 29
else:
months[2] = 28
for month in range(1, 13):
for day in range(1, months[month]+1):
if days == 7:
if day == 1:
print(year, month, day)
Sundays += 1
days = 1
else:
days += 1
print(Sundays)
最佳答案
您的算法完全正确 - 只是输入错误。 start
和 end
应该是:
start, end = 1901, 2000
range(a, b)
函数不包含 b
,但包含 a
。因此 start
应该是 1901 而不是 1900。
end
有点棘手,你必须考虑问题的措辞:
... in the years 1901 to 2000
想一想 - 这意味着直到 2000 年 1 月 1 日(但不包括在内)的每一天。因此,您实际想要遍历并检查的最后一年是 1999 年。因此,将 end
设置为2000 将导致 range()
函数返回 2000 年之前的所有年份,但不包括 2000 年。这正是问题所要求的。
关于python - 欧拉计划 #19 - 计算星期天问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70690568/
我是一名优秀的程序员,十分优秀!