穿越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,这时可能导致程序中的错误。这种错误是很难发现和更正的。
全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全 ......
正在阅读最新版的《A byte of Python》。发现Python3.0在某些地方还是有些改变的。准备慢慢的体会,与老版本的《A byte of Python》做对比,最后再去查阅官方网站的文档。
1.
如果你下载的是最新版的Python,就会发现所有书中的Hello World例子将不再正确。
Old:
print "Hello World!" #打印字符串
New:
......
import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough t ......
Python中文件操作可以通过open函数,这的确很像C语言中的fopen。通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作。
1.open
使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。
file_object = open('thefile.txt' ......
关于框架,之前听得比较多,特别是在CPyG的邮件列表上,不过还没有接触过。
这一章我打算略读,加上这两天身体不适,读得更加略了。
这一章提到的几个框架我听说的有TKinter和SWIG。SWIG搞了一下,TKinter看人家用过,自己还没有用过。对这些框架陌生得很。以后碰上要用了再认真学学。
到现在,对Python算是有些了解了。 ......