Python Challenge level 02

来源:互联网 发布:怎么查看微信数据 编辑:程序博客网 时间:2024/04/30 04:43

进入:http://www.pythonchallenge.com/pc/def/ocr.html 页面,图片下方有句提示“recognize the characters. maybe they are in the book,but MAYBE they are in the page source.”,这句话告诉我们要找的字符可能在图片的书上,或者在页面源码中。所以我们想到去查看该页面的源代码。

<!--find rare characters in the mess below:--><!--%%$@_$^__#)^)&!_+]!*@&^}@[@%]()%+$&[(_@%+%$*^@$^!+]!&_#)_*}{}}!}_]$[%}@[{_@#_^{*...-->

发现源代码中有一大段形如上面被注释掉的字符,现在要做的工作就是从这一大段字符中找出出现次数少的字符。那怎么知道在这些一大段杂乱的字符串中,那些字符是出现次数少的呢?硬办法就是把所以字符出现的次数统计一遍。

代码如下:

data = """..."""count = {}for i in data:    if i in count:        count[i] += 1    else:        count[i] = 1for key, val in count.items():    print "%s: %d" % (key, val)

好了现在统计出所有字符出现的次数了:

: 1219
!: 6079
#: 6115
%: 6104
$: 6046
&: 6043
): 6186
(: 6154
+: 6066
*: 6034
@: 6157
[: 6108
]: 6152
_: 6112
^: 6030
a: 1
e: 1
i: 1
l: 1
q: 1
u: 1
t: 1
y: 1
{: 6046
}: 6105

出现次数最少的有8个字符:a, e, i, l, q, u, t, y。但是这8个字母顺序是按ASCII 码排列的,不是一个具有意义的单词。但做到这里至少我们知道,这堆杂乱的字符串中出现次数最少的几个小写字母。然后,可以用正则表达把这几个字母找出来,并且按字母在字符中先后出现的顺序打印出来。

代码如下:

import redata = """..."""print "".join(re.findall("[a-z]", data))

输出结果:equality

这个就是我们要找的字符串了,将它到URL地址中替换成:http://www.pythonchallenge.com/pc/def/equality.html,进入下一题。

原创粉丝点击