鱼C论坛

 找回密码
 立即注册
查看: 5426|回复: 11

[技术交流] 鱼C论坛Python精英挑战赛(第二季04期)

[复制链接]
发表于 2017-8-17 08:18:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jerryxjr1220 于 2017-8-20 23:26 编辑

鱼C论坛Python精英挑战赛第二季赛程已经过半啦!感谢广大鱼油的热情参与!

本季挑战赛依旧会有精彩的题目供大家挑战,大量鱼币奖励等你赢取!


                               
登录/注册后可看大图


本期题目:文献检索之关键词检索

使用过文献检索系统的同学都知道,在文献检索中我们可以使用关键词进行检索,而且关键词与关键词之间可以用“与”、“或”、“非”的逻辑关系进行组合,并且可以用括号改变“与或非”的优先级顺序。

通常,我们用“&”表示“与”,其表示的含义为两个关键词同时出现在检索的文本中;用“|”表示“或”,其表示的含义为两个关键词有任一个出现在检索的文本中;用“!”表示“非”,其表示的含义为“!”后紧跟的一个关键词不出现在检索的文本中。它们三者默认的优先级顺序为“!”>“&”> “|”,我们可以用括号改变它们之间的优先级顺序。关键词与“&|!”之间用空格隔开,“!”之后的关键词可以省略空格。

例如,被检索的文本txt = 'one apple with two leaves, one is green and the other is yellow.'
我们用s1 = '(apple | others) & two' 进行搜索,返回的结果应该为 True
我们用s4 = '!green & (ones | two)' 进行搜索,返回的结果应该为 False

现在,请你设计一个函数,给定一个关键词字符串string,在txt中搜索是否能匹配,返回True或者False。
  1. def search(string, txt):
  2.         '''Your code here!'''
  3.         return True or False
复制代码


为了使更多鱼油能参与比赛,本题分为三个难度:
#简单难度:关键词字符串中没有括号
#中等难度:关键词字符串中只有单层括号,括号不嵌套
#困难难度:关键词字符串中有多层嵌套括号

备注:尽量避免使用eval函数,因为服务器上运行不了。

#Test sample
txt = 'one apple with two leaves, one is green and the other is yellow.'
s1 = '(apple | others) & two' #True
s2 = 'one & yellow & leaf' #False
s3 = '(!three | one & four) & !five' #True
s4 = '!green & (ones | two)' #False
s5 = '(big | !apple | the) & ((!yellow | !green) | others)' #False

比赛规则:
要求程序输出正确,运行效率高,并且程序简练优雅的获胜。比赛截止日期为8月20日24时。

优胜者优先从困难难度中选择产生,奖励100鱼币,由@小甲鱼 老师倾情赞助!

@冬雪雪冬 @SixPy @~风介~

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-24 03:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表