0%

Python Challenge (Level 15)

第15关

图片是一月份的日历,Page Source里提示

he ain’t the youngest, he is the second
todo: buy flowers for tomorrow

首先, todo是要为明天买花,所以明天(01-27)应该是某个纪念日。然后,他不是最年轻的,只是第二。怎么判断这个他是第二年轻呢,我们需要找到哪一年。可惜,年份中间两个字没有了,只能看出是1xx6. 显然,我们要根据这一页日历推算出年份。

看图片的右下角,有两个小的月份日历,应该是对应着前一个和后一个月。所以,右边的应该是二月的。放大后,我们会发现,这个二月比较特殊,有29天,所以这应该是闰年。

但是,这样筛选出来的依然不对。我们还有信息没用到,那就是日期(date)和星期几(weekday)的对应关系。也就是说,1月27是星期二这个信息我们可以用。至此,可以得到这个日期了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- coding:utf-8 -*-

import datetime

# 闰年
years = [y for y in range(1006, 1997) if str(y)[-1] == '6' and y % 4 == 0]

# date和weekday对应
year_c = []
for y in years:
d = datetime.date(y, 1, 27)
if d.weekday() == 1:
year_c.append(y)

# second youngest
print year_c[-2]

现在,我们得到1756年01月27日这个日子,这一天发生了什么事呢?Google “1756 01 27”,发现搜索结果指向同一个人——Mozart.
http://www.pythonchallenge.com/pc/return/mozart.html