Python Challenge 4
Challenge 4
Challenge 4的图片上有一个链接http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345,打开后提示,下一个nothing是44827。一定是把URL中的nothing改为nothing=44827
。之后,这个nothing返回的下一个值是45439,显然这个过程不能够完全通过手动完成,万一它有千八百个递归呢?那么就使用Python去自动获取结果吧。
回到最初的页面,页面源码中的注释说:
urllib may help. DON’T TRY ALL NOTHINGS, since it will never end. 400 times is more than enough.
使用urllib中的urlopen方法即可获取返回的内容了,为了防止作者故意打乱格式,对找到的nothing值要进行筛选,并且将400作为遍历上限:
函数执行到http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=16044时停止,返回一句话:
Yes. Divide by two and keep going.
果然有诈,继续!
执行到http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=82682时返回了两个值,内容为:
There maybe misleading numbers in the text. One example is 82683. Look only for the next nothing and the next nothing is 63579
真狡猾,Keep going:
终于在http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=66831找到了答案:peak.html
打开URL:http://www.pythonchallenge.com/pc/def/peak.html,进入Challenge 5。
博客中 Python Challenge 所有源码分享:打开坚果