第0关:
在command line里计算2^38,得到274877906944,因此下一关的入口网址为:www.pythonchallenge.com/pc/def/274877906944.html
第1关:
极简单的密码学,就是将字母向后移两位。代码如下:
import string
str="g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
lt=[]
for e in str:
if e.isalpha() : #判断e为字母
lt.append(chr(97+(ord(e)-95)%26)) #向后移动两位,y向后移动两位为a
else:
lt.append(e)
print ''.join(lt) #将list转换为string
第二关:
根据提示,需要识别出来的字符在网页的源代码中,打开该网页的源代码,可以看到提示:find rare characters in the mess below
个人使用的方法是将这些乱码用notepad++将多行弄成一行字符串,然后就很简单了:
str="需要处理的乱码数据"
lt = []
for e in str:
if e.isalpha():
lt.append(e)
print ''.join(lt)
运行结果为:equality
后来看答案,发现自己弄错题目的意思了,character不一定要是字母,而是查找这写乱码中出现很少的那些字符。
更新代码为(转自答案页面):
text = ... # the long string found in the source code of the page
output = "" # empty string
counts = {}
for c in text:
if counts.has_key(c):
continue
counts[c] = text.count(c)
if counts[c] < 100: # guess that rare characters will occur less than 100 times
output += c
print output
第三关: