穿越Python Challenge(0
一个有趣的网站:
http://www.pythonchallenge.com/
集娱乐与学习于一体,在开动脑筋闯关的过程中,不但扩展了思维,还对Python加深了理解。
一共33关,每闯过一关都可以在提示下查看作者给出的Solution。
第0关(指导关):
出现一幅画面,上面写着2**38,教你如何进入下一关。
通过Python客户端,可以简单计算出2**38 = 274877906944
那么按照提示只要将该关网址中0.htm改为274877906944.html 即可
第1关:字符转换
图片上给出了三对字母“K->M, O->Q, E->G",通过分析知道这是一个简单的字符转换,转换规则是new_c=chr(ord(old_c)+2) 超过自动回转。
我们可以看到,该关的网址为http://www.pythonchallenge.com/pc/def/map.html。那么按照指导关给出的策略,只要将map替换为ocr即可通关。但如果仅是如此,那么就完全撇开了Python,该关将彻彻底底地退化为一般的脑筋急转弯。
实际上在图片下有一串看不懂的字符串,按照上述字符转换规则,这应该可以通过python做简单处理,从而得到可识别的字串,代码如下:
import string
frm = "abcdefghijklmnopqrstuvwxyz"
to = "cdefghijklmnopqrstuvwxyzab"
data = """g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp.
bmgle gr gl zw fylbgq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle.
sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."""
print string.translate(data, string.maketrans(frm,to))
运行脚本,我们将得到下面一段描述:
”i hope you didnt translate it by hand. thats what computers are for.
doing it in by hand is inefficient and that's why this text is so long.
using string.maketrans() is recommended. now apply on the url. “
当我们通关之后,通过http://www.pythonchallenge.com/pcc/def/ocr.html
将得到更多关于本关的信息。
第2关:提取有效信息
该关图片上展示了一本书,而图下有一段话“
recognize the characters. maybe they are in the book, but MAYBE
相关文档:
应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。
全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全 ......
Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作。
1.open
使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。
file_object = open('thefile.txt' ......
python提供了有序(sequence)类型(字符串,元组,列表都是有序类型),并且提供了特殊的语法来方便对这些类型进行操作,最常用的有切片操作。同一有序类型的对象之间支持”+”操作符,用来连成一个新的有序对象,有序对象也可以与一个整数进行相乘,得到一个新的有序对象。在调试的时候,我经常使用这样 ......
1.Python的扩展
Python扩展是指运用其他语言编写某些功能模块,供Python程序调用,常用的有Python的C扩展和C++扩展。Python扩展的目的主要有两个:一是为了功能需要,另外一个原因是为了性能需要。下面介绍一下在不运用工具的情况下,运用C和C++语言对Python进行扩展的步骤。
扩展的第一步是用C或C++创建一个源程序,然后 ......