2014年10月4日 星期六 晴

Level12: http://www.pythonchallenge.com/pc/return/evil.html

标题dealing devil,网页源码无提示,不太清晰的图片是在赌牌,一行行相间的,应该还是处理图片吧。但试了半天试不出来,只好网络搜索了。 图片是http://wwhonchallenge.com/pc/return/evil1.jpg 。 尝试访问http://www.pythonchallenge.com/pc/return/evil2.jpg ,提示not jpg, gfx 尝试访问http://www.pythonchallenge.com/pc/return/evil3.jpg ,提示no more evil 尝试访问http://www.pythonchallenge.com/pc/return/evil4.jpg ,我刷不出来,搜网上写Bert is evil! goback! 尝试访问http://www.pythonchallenge.com/pc/return/evil3.jpg ,提示404,不用再继续了

尝试访问http://www.pythonchallenge.com/pc/return/evil2.gfx ,真的能下载evil2.gfx,一时间都打不开这个文件。

题目越来越难了,我想我在短时间内是无法解出来了,搜索网络得知要像evil1.jpg中把牌分成5份那样,把gfx分成5个文件,再把5个文件的内容连起来就能进入下一关了。

[code]def Challenge12(): with open(“evil2.gfx”,“rb”) as f: content = f.read() for i in range(5): open(“image”+str(i)+".jpg", “wb”).write(content[i::5])[/code]

5张图片内容是disproportional,下一关是http://www.pythonchallenge.com/pc/return/disproportional.html

Level13 http://www.pythonchallenge.com/pc/return/disproportional.html

标题call him,图片是一个电话,文字是phone the evil,HTML源码有个url,返回一个xml,xml源码 [code] faultCode 105 faultString XML error: Invalid document end at line 1, column 1 [/code]

Who is evil? Bert is evil. 有时候,就是知道和不知道的问题,我确实不知道这是XML-RPC返回来的格式,搜索后才知道。 [code]def Challenge13(): import xmlrpclib uri = “http://www.pythonchallenge.com/pc/phonebook.php" pb = xmlrpclib.ServerProxy(uri) print pb.phone(“Bert”)[/code]

结果是555-ITALY,分别尝试555-ITALY、555,ITALY,italy,最后才得到下一Level的url http://www.pythonchallenge.com/pc/return/italy.html

Level14 http://www.pythonchallenge.com/pc/return/italy.html

walk around

大图片是面包圈,下面的图片有点类似条形码,直接告诉我,应该让这张“条形码”根据100*100 = (100+99+99+98) + (… 的规律显示。

[code]def Challenge14(): import Image im = Image.open(“wire.png”) w,h = im.size print w,h[/code]

可以发现w刚好是10000,h为1。10000 = 100100 = (100+99+99+98) + (… 首先是,要转换成100100的新图片,怎么转换?100+99+99+98是什么样子的表达式?脑子里想象画一下,感觉是先从左到右走100,再从上到下走99,再从右到左走99,再从下向上走98。。突然就明白了,就像面包圈那样螺旋一圈圈转着画起来,最后就能填完100*100的图片了。

知道这个原理,就好写代码了: [code] def Challenge14(): import Image im = Image.open(“wire.png”) #w,h = im.size #print w,h w2 = 100 h2 = 100 im2 = Image.new(“RGB”,(w2,h2)) dirs = [(1,0),(0,1),(-1,0),(0,-1)] x,y,z = -1,0,0 for i in range(200): d = dirs[i % 4] for j in range(100 - (i + 1) // 2): x += d[0] y += d[1] im2.putpixel((x,y), im.getpixel((z,0))) z += 1 im2.show() [/code]

是只猫,访问http://www.pythonchallenge.com/pc/return/cat.html ,输入用户名和密码得到猫的名字叫uzi,后面可以听到它叫。再访问http://www.pythonchallenge.com/pc/return/uzi.html ,出现一张日历,应该就是Level15了。

题目越来越有点难了,比较耗费脑筋,我不得不开始用搜索引擎看别人的参考。每日做三道太累了,明天起改为每天最多一道,留点时间做其他事情。