最近开始用Openerp进行开发,在python语言本身上并没有什么太大的进展,于是决定利用空闲时间做一点python练习。
最终找到了这款叫做Python Challenge()的编程游戏。
这款游戏年代十分久远了,不过据说题目难度到后面挺大,我很怀疑会在某些关卡卡上很长一段时间,反正就尝试着做做看吧,能做多少做多少,现在水平低就做前面的简单的,等水平上去了再慢慢挑战后面的关卡。
最开始的其实是第0关,图片上是一个数字238,下方提示:try to change the URL address。一上来果然没有任何难度,只要按照提示把URL某个部分改成238的结果应该就行了。这一关题目本身很简单,为了充实一点内容,再进行一些发散思维好了。
首先由URL想到,现在的英文缩写太多了,然而好多英文缩写我只知道它是什么,浮躁的心态却使得我并不知道它的全称是什么。比如说“Wi-Fi”,相信大部分手机用户都离不开它,却并不知道它的全称是什么,有一点英语基础的人(比如我)大概能猜到“Wi”是“Wireless”的缩写,然而却几乎不去关心“Fi”是怎么来的。度娘之后才知道,原来“Fi”是“Fidelity”(保真度)的缩写,因此“Wi-Fi”的全称是“Wireless Fidelity”(无线保真技术)。顺便再补充一下URL的全称:Uniform Resource Locator(统一资源定位符)。
接下来用python计算238。直接输入2**38,即可得到结果274877906944。在参考其他答案的时候,发现乘方还有一种写法:pow(2,38)。在一些古老的python教程里看到说pow()函数必须先导入math模块,然而我并没有导入依然可以直接使用pow()。最后在某乎找到了答案,于是去python官方文档进行确认之后最终得出了结论:虽然在math模块中确实有pow()函数,但是在python中有一些函数叫做Built-in Functions(内建函数),其中也有一个pow()。而这两个pow()并不是完全一样的,其中math.pow()会将参数转变成float形,内建的pow()和**则是同样的作用。举个例子,2**2和pow(2,2)的结果都是4,而import math之后,math.pow(2,2)的结果将是4.0。
言归正传,这一关的过关密码是,那么我们只要将第0关的URL地址里的0改成274877906944即可正式进入第1关。