python Challenge通关记录

第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



第三关:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值