【原创】pythonchalleng——第3题
第三题的网址:http://www.pythonchallenge.com/pc/def/equality.html,如果大家访问不了该网站,可以看看下面的网站截图。

在本道题中,我们首先看一下下面的这句话:
One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.
这句话的意思就是说一个小写字母的两侧各有3个大写字母,就像图中一个小蜡烛的左右各有3个大蜡烛。除了这句话外,本题没有任何提示了……这让我们很费解。考虑到上一题的部分提示,我们可能需要查看本页的html源代码去找找线索。果然不出我们所料,源代码中暗藏玄机。待处理文本如下
kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT
MUKLECKdCthezSYBpIElRnZugFAxDRtQPpyeCBgBfaRVvvguRXLvkAdLOeCKxsDUvBBCwdpMMWmuELeG
ENihrpCLhujoBqPRDPvfzcwadMMMbkmkzCCzoTPfbRlzBqMblmxTxNniNoCufprWXxgHZpldkoLCrHJq
vYuyJFCZtqXLhWiYzOXeglkzhVJIWmeUySGuFVmLTCyMshQtvZpPwuIbOHNoBauwvuJYCmqznOBgByPw
TDQheAbsaMLjTmAOKmNsLziVMenFxQdATQIjItwtyCHyeMwQTNxbbLXWZnGmDqHhXnLHfEyvzxMhSXzd
BEBaxeaPgQPttvqRvxHPEOUtIsttPDeeuGFgmDkKQcEYjuSuiGROGfYpzkQgvcCDBKrcYwHFlvPzDMEk
MyuPxvGtgSvWgrybKOnbEGhqHUXHhnyjFwSfTfaiWtAOMBZEScsOSumwPssjCPlLbLsPIGffDLpZzMKz
jarrjufhgxdrzywWosrblPRasvRUpZLaUbtDHGZQtvZOvHeVSTBHpitDllUljVvWrwvhpnVzeWVYhMP…
由于文本过多,我就不粘贴出来了,还是同第2题一样,将这些信息保存为文本文件3.txt中。根据上面的提示,我们基本可以理解题意:就是从这些文本信息中找到那些小写字母,它们的左右两侧各有3个大写字母。
明白题意后,我们发现这道题其实就是字符串匹配问题。但是如果各位要自己写函数处理这个问题的话。就相当于自己重新造个轮子,因为python中已经内置相应模块供我们来处理字符串匹配问题。大家不妨再看看第3题网页的标题,就是re。re是什么?就是python中的正则表达式模块。关于正则表达式的写法,大家可以简单看看《Python正则表达式操作指南》。代码如下:
'''Created on 2011-7-16@author: hengha'''# -*- coding: utf-8 -*-import redef getStr(fileUri):text=''f=open(fileUri)line=f.readline()while line:text+=lineline=f.readline()f.close()return textdef getRex(str):p=re.compile(r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]')result=p.findall(str)url=''for res in result:url+=res[4]return urlif __name__ == '__main__':print getRex(getStr('3.txt'))
我们使用的正则表达式是r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]',其中r的作用是不处理正则表达式中的反斜杠;[a-z]表示一个小写字母;[A-Z]表示一个大写字母;{3}表示重复3次。由于我们要确定小写字母两边只有3个大写字母,所以在构造正则表达式的时候,还要在大写字母的两侧再判断是否是小写字母。由于findall返回的是list,所以我们可以取出各个list中的小写字母,保存到url中,最后得到的结果是linkedlist。
好了,我们试一试讲网址中的equality替换为linkedlist,看看是否能进入下一题。出乎意料的是,我们看到的页面如下:

哦,这是在提示我们把html换成php试一试。按照新的提示,我们再次尝试,这次终于搞定了!成功进入第4题。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
