其他

如何玩游戏提高python编程技能?

Python Challenge介绍

Python Challenge 是首个谜语编程网站。挑战者需要连续挑战33个需要编程才能解开的谜题以锻炼自己的编程能力。

该网站建立于2005年,至今已经有三百多万位访客浏览并尝试解决该网站的谜题。

python challenge 官网

虽然网站建立的年代比较久远,页面美观性不高,但是其谜题设计绝对是足以惊艳每一位挑战者的。尤其是挑战者在不查看任何攻略的情况下,自己整理一切现有资料,并最终解出谜题时,那种喜悦感是难以言表的。

该网站好评不断。用户brberg说:“我认为这是学习一门编程语言最好的方法”(”These sorts of things are in my opinion the best way to learn a language.” )

用户salimma说:“让人上瘾的方式来学习python的细节,对所有程序员来说都是必须的!”(”Addictive way to learn the ins and outs of Python.. a must for all programmers!”)

另外,网站还内置一个留言区(虽然如今已经被各类“小广告”所占领),一个google论坛和一个wiki百科。

Python challenge的wiki

该网站通过记录挑战者cookie的方式来确定挑战者目前的通关进度。只有闯过了相应关卡并访问指定网址才能查看对应关卡的官方解答。

通过对应关卡后才能看到该关卡的官方解答

其各种各样的解题方法可以作为读者通关后的参考材料,通过对比自己与官方的解题方法,以拓宽自己的思路与知识面。

题目示例

笔者的解题文件已经放在了github上,目前的进度为12/33,不定期更新中。

这里笔者列举几个比较有创意的题目,及其解题思路。欢迎读者前去python challenge进行尝试。

level 2

第二关的谜题只有一张图片和一段文字:识别字母,也许他们在书中,但也可能在网页源代码中。

我们打开网页源代码,发现一段超长的注释,以及一段提示:找到杂乱信息中的文字。

这是一串保存起来后将近100k的字符串。单纯用肉眼去扫码是几乎不可能的。但如果我们使用代码的话,十几行就解决了。获得答案:equality。把网页地址最后部分改为equality.html即进入下一关。

level 4

题目同样是只有一张图片。网页标题是“follow the chain”,跟随着链条。

我们点击图片,可以进入下一个网页。该网页告诉我们下一个nothing的取值为44827。根据浏览器的url地址,我们把最后的”nothing=12345″改为”nothing=44827″即可

然而,新的网页依旧是类似的场景。不断这样的手动更换地址的操作十几次后,显示页面依旧类似如下场景。

此时,我们就需要通过爬虫以及网页内容分析来进行这样的任务了。

关于爬虫的知识,笔者曾在爬虫原理解析中细致地讲述过。

实例程序如下图:

有时,我们还会收到一些需要人为处理的信息和误导性信息:

在解决了上述问题并使用程序连续访问了两百多次后,我们即可找到最终的答案:peak.html

level 7

我们在该关会获得如下图片

我们读取该图片,找到其不自然的灰度区域。

读取其灰度值,并进行一定的处理后,我们发现所有数的取值都在128以下

此时,我们应该想到ASCII编码。我们继续对获取到的灰度值进行处理,并将其转化为ascii编码对应的字符。

我们会获得 ‘smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]’

同理,对 [105, 110, 116, 101, 103, 114, 105, 116, 121] 进行同样的ascii解码操作,得到答案integrity

level 11

第11关的名称为“odd even”(奇数与偶数)

该图片很诡异,再参考题目标题,我们将该图片拆分分两张图片。

原始图片中x,y坐标和为奇数的像素点构成第一张图,和为偶数的像素点构成第二张图。


于是我们获得了通过密码:evil

更多

上述的题目仅仅是python challenge的冰山一角

该网站的关卡中,有的题目需要你使用绘图包才能解答

有的关卡涉及到文件读取、IO操作,谜底答案隐藏在最不引人注意的角落中。

还有的题目,需要你发挥天马行空的想象,广开脑洞才能找到解题方法。

可以说Python Challenge集编程练习与趣味谜题于一身,是绝佳的python练习游戏。

另外,笔者整理的Python Challene解题文件中除了解题代码,还附带解题思路以及关卡考察内容。读者可前往github查看。

发表评论