python chanllenge题解

网址:chanllenge

修改url最后的html的前缀为答案,就可以过关。

然后推荐一个在线代码运行的网站 ideone

 

第一题:

题目:要求取2的38次方。

解:python支持**符号表示指数,也可以用match.pow()

2 ** 38

math.pow(2, 38)

 

第二题:

题目:字符变换,最简单的加密解密方法。

解:字符相差为2,所以把所有的字母的ascci值加2就可以,下面的提示,最终的答案都使用转换既可过关。最傻in hand,不过是会被鄙视的。

  你可以用ord,chr两个内建函数,然后自己编写一个转换函数。

  可以用内建的string.maketrans建立一一对应关系,然后使用translate函数运用该对应关系。

import string

a = "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. "
aa = "map"
b = string.maketrans(abcdefghijklmnopqrstuvwxyz, cdefghijklmnopqrstuvwxyzab)
print a.translate(b)
print aa.translate(b)

 

第三题:

题目:获取一个字符串中最少出现的字符。

解:在页面的源码页,你可以获取到这个长字符串,存入文件中,然后读取出来。获取其中所有字符的出现次数,得到最少出现的字符组。按照这个字符组中各字符出现的先后顺序组合成一个字符串,即为答案。

#!/usr/bin/python
import sys

fp = open(ocr.txt, r)
con = fp.read()

m = {}
for c in con:
    m[c] = 1 if m.get(c) == None else (m[c] + 1)

#print [(k, m[k]) for k in sorted(m.keys())]
#print [v for v in sorted(m.values())]
#sort_m1 = sorted(m.iteritems(), cmp = lambda x, y: cmp(x[1], y[1]), reverse = True)
sort_m = sorted(m.iteritems(), key = lambda d: d[1])

result = {}
for i in range(8):
    key = sort_m[i][0]
    result[key] = con.find(key)

sort_r = sorted(result.items(), key = lambda d: d[1])
for item in sort_r:
    sys.stdout.write(item[0])
sys.stdout.write(\n)

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。