第0题:http://www.pythonchallenge.com/pc/def/0.html
题目很明显:2的38次方
print pow(2,38)
结果:274877906944
第1题:http://www.pythonchallenge.com/pc/def/274877906944.html
链接进去后跳到下面的链接:http://www.pythonchallenge.com/pc/def/map.html
根据图片提示:移两位加密,解密下面的字符
import string
l = string.lowercase
t = string.maketrans(l, l[2:] + l[:2])
m = """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."""
print m.translate(t)
print "map".translate(t)
结果是:ocr
以上代码能够实现,但是不理解,对Python也是初学者。
举例说明上面用到的函数:
import string
str='abcdefghij'
t1=string.maketrans(l,l[2:]+l[:2])
print str.translate(t1)#能够实现右移两位
print str[2:] #输出:cdefghij,取得是第二个到结束
print str[:2] #输出:ab,取得是前两个字符
print str[2:]+str[:2] #输出:cdefghijab ,链接起来
# + 是把两个链接起来
# 这里就实现了移位的功能
l = string.lowercase 这个就是定义一个字符串,可以理解成a-z的字符串
t = string.maketrans(l, l[2:] + l[:2])这个是建立的规则,这个规则就是:c-z a,b这个字符串的 两个链接起来的
规则好了
m.translate(t) 这个就是,对输入的字符串,根据t的规则进行变换
================以上仅自己理解===================
第2题:http://www.pythonchallenge.com/pc/def/ocr.html
找出现次数最少的字符串,用字典
import urllib
def get_challenge(s):
return urllib.urlopen('http://www.pythonchallenge.com/pc/' + s).read()
src = get_challenge('def/ocr.html')
print src#全部网页内容
import re
text = re.compile('', re.S).findall(src)[-1]
print text#让求的数据集
result={}
for ch in text:
result[ch]=result.get(ch,0)+1
print result.get('*')
for ch in result:
print ch ,result.get(ch)
结果:
\n 1221
! 6079
# 6115
% 6104
$ 6046
& 6043
) 6186
( 6154
+ 6066
* 6034
@ 6157
[ 6108
] 6152
_ 6112
^ 6030
a 1
e 1
i 1
l 1
q 1
u 1
t 1
y 1
{ 6046
} 6105`
print ”.join(re.findall(‘[a-z]’, text))#正则的东西。re是正则的包
equality
这个直接就出来结果了,只有为什么,我也不知道。
===================正则================
import re
re.findall(‘[a-z]’,”asd123s12df12dsd45/*-+”)
[‘a’, ‘s’, ‘d’, ‘s’, ‘d’, ‘f’, ‘d’, ‘s’, ‘d’]
一个很简单的正则
此处不多说
===================字典================
创建字典用{}
如:dict={“xm”:22,”xh”:20,”xq”:25}
前一个是key,后一个是value,
key:value,key唯一
清空字典:dict.clear()
复制字典:dictcopy=dict.copy()
注意:如果赋值:dictcopy=dict,两个的内容是一样但是修改其中的一个另一个的内容也会被修改,dictcopy=dict.copy(),复制的两个是独立的,修改不受影响
根据key取value:dict.key(key),返回指定key的值value,没有返回none
for ch in dict:
print dict.get(ch)
dict.get(key,default),有key取出对于的value,没有返回default
判断key是否在字典中:dict.has_key(key)
print dict.has_key("xm")
print dict.has_key("ss")
有输出:true
无输出:false
dict.items():得到一个list
[(‘xh’, 20), (‘xq’, 25), (‘xm’, 22)]
dict.keys(): 得到list,是dist中所有的key
[‘xh’, ‘xq’, ‘xm’]
dict.values():得到list,是dict中的所有value
[20, 25, 22]
第3题:http://www.pythonchallenge.com/pc/def/equality.html
一个字母确切的被三个大写字母包围:只有这样的可以:aAAAkBBBn。
text = get_challenge('def/equality.html')
print''.join( re.findall('[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]', text))
linkedlist
join是链接,这个正则很简单。