本文推荐一个网站:The Python Challenge。如果有谁想快速掌握 Python (编程语言),我建议前往这个网站开始过关游戏。

我的工作不是程序员,我目前想象不出在近期的任何事情可能会用到 Python,而且我以前对Python 语言的了解基本上是零。这两天我满脑子想的都是 Python。

我不知道我是为了学 Python 才玩游戏过关,还是为了过关才学 Python。所以如果你只是想找个好游戏玩打发时间,我推荐你学 Python.

每一关题目都设计都非常精巧。以下我尽可能良性地剧透一下:)

第0关是让你计算2的35次方。根据以前 C 和 Fortran 的经验,我感到这么大的整数肯定不能直接算,必须写一段程序,每算出来一位就存入数组。。。不过我还是直接用 Mathematica 算出了答案。

到第1关,要求破译一段密码,我想这时候得正经编程了。结果找来一本书《Learning Python》一看,原来 Python 支持任意长度的整数!也就是说第0关的正确过法是
Print 2**38
就这么简单!这个事实使我对 Python 的好感增大了十倍。那本书里面并没有说 Python 是怎么做到这一点的,也没说为什么会提供这个功能。感觉这个功能似乎并不特别实用,但是我想所有人都特别喜欢这个功能。

继续看书,我发现Python 语言更像是 Mathematica 和 Matlab。变量不用事先定义,极其灵活的数组,丰富的函数库。还有一个好处是它是一种 script 式的解释性(严格的讲并非完全如此)的语言,你可以在命令行一条命令一条命令的执行。这种做法不仅保证了学习过程中真正的即时反馈,更提供了一个可以边尝 试边编程的工作过程。

我写了人生第一个 Python 程序,破译了密码,过了第1关。结果破译出来的文本说,推荐使用xx(此处不透露)函数,而这个函数,我那本《Learning Python》里面没有!结果上网搜索到这个函数的用法,重新写了一个版本。

第2和第3关都很简单。把第1关里学会的那个函数用上的话,第2关会更简单。我不熟悉正则表达式,就算用最一般的方法做,程序也不会超过15行。

第4关学到的东西是 Python 有个简单的库函数,可以作为一个自动抓取或者读取网页的机器人。

第5关问我 “Peak Hell” 的读音像什么?我猜了一个 pickle,结果一搜索,Python 还真有个pickle。但是 pickle 什么?反复把题目页面 html 代码读了好几遍,终于悟出…..
pickle 之后的东西我仍然没法直接读。开始猜测是某种编码,反复试了ord 和chr 结果不对。然后猜到了。

这些题目的设计都有这个特点:不直接告诉你让你干什么,不知道从哪入手,一切都得猜。我发现真正的编程时间可能只占解题时间的一半。

第6关我做出了前半部分,然后实在想不出”Collect the comments”这句话到底是什么意思。我一开始猜测是不是需要在上网,从某个网页的注释中获得答案。我用上网机器人按照第4关的办法抓取了网页(事实 证明第4关的做法不行,因为现在有了一个循环指向)寻找注释,结果所有网页内都没有注释。

我本来在想不搜索答案的情况下过所有的关,这一次没挺住。有一个网页给了点提示:原来zip文件也带注释啊!我这才知道 Python 可以处理 zip。

目前我在第7关。没有任何文字,就是一张有点怪的 png 图。看来 Python 可以处理图形。

每一关都能学到一点新的东西,发现原来 Python 还能做这个。 《Learning Python》这本书的作用仅限于入门,那些有意思的函数的用法都得上网查。目前为止所有问题的解决代码都很短,我不知道最后会不会让我们写一个大点的程序。

据说这个网站2005年就有了,非常遗憾一直到现在才听人说。这种现学现用,即时反馈的的学法很可能是学好一门语言的最佳方法。我感到这些题目就算是一个中学生也能做出来,如果我上中学的时候有这个网站,生活该多么美好啊。