首页 > 代码库 > Python Challenge 0~2

Python Challenge 0~2

第O关

  用python计算2 ** 38,替换url即可

 

第1关

  确实蒙了,最后还是GOOGLE了一下,才明白是指所有字母位移>>两位

import stringtrans = str.maketrans(abcdefghijklmnopqrstuvwxyz,cdefghijklmnopqrstuvwxyzab)print(‘‘‘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.‘‘‘.translate(trans))

学习函数:

  maketrans(str1, str2) 制作转换表,将str1中的字母一一转换到str2对应位置的字母

  translate(trans) 利用转换表转换字符串

 

第2关

  直接看提示到源文件界面

  原来是计数啊。

>>> from urllib import *>>> from urllib.request import *>>> res = urlopen(http://www.pythonchallenge.com/pc/def/ocr.html)>>> import re>>> template = re.compile(<!--.*?-->, re.DOTALL)>>> a = re.findall(template, res.read().decode())>>> from collections import Counter>>> Counter(a[1])Counter({): 6186, @: 6157, (: 6154, ]: 6152, #: 6115, _: 6112, [: 6108, }: 6105, %: 6104, !: 6080, +: 6066, $: 6046, {: 6046, &: 6043, *: 6034, ^: 6030, \n: 1221, -: 4, a: 1, t: 1, i: 1, l: 1, <: 1, y: 1, >: 1, u: 1, e: 1, q: 1})

  还是挺有趣的。

  由于html太大,我就直接用urlopen()打开,然后利用正则表达式取出那一部分(当然为了显示正则表达式的优越性找了个‘<!--.*?-->‘匹配模式,会匹配出两串出来,第二串即所求,可对照html),接下来根据提示找出现次数最少的东东了。忽略首尾的<!-- -->。

  a, t, i, l, y, u, e, q

  又蒙了。。这XXOO是啥东西?直接放到url中,排序后放进去都404.

  英文渣。原来是equality..(百度的)

学习函数:

  urlopen(url): 接收一个html/相当于打开一个文件,操作差不多一致

  compile(pattern, flag):编译一个正则表达式匹配串,多次使用时加快速度,flag用于调整匹配模式,比如本例就需要用DOTALL让 . 匹配 \n 才能匹配出来。

  Counter(obj): 可以是字符串,list,tuple等等,返回一个dict,包含所有元素的出现次数。

 

Python Challenge 0~2