《6189 - 循序渐进使用python 编程短期独立活动计划) 20.pdf》由会员分享,可在线阅读,更多相关《6189 - 循序渐进使用python 编程短期独立活动计划) 20.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验 10:Compound Dictionaries混合式汇表 快速参考 D=创建一个空的词汇表D=key1:value1,创建一个非空的词汇表 Dkey 返回主键所映射的键值。(如果没有主键返回的是什么?)Dkey=newvalue 给主键映射新的键值。覆写任何先前的值。del Dkey 从D中删除主键的映射。len(D)返回D中条目(映射)数。x in D,x not in D 检查主键 x 是否在词汇表D 这种 D.items()以带数组(key,value)的列表的形式返回条目。for k in D 遍历 D 中的所有主键。问题 1 清单查找 下载 inventory.py 文件。这
2、个文件展示了8个不同的项,每一项都有一个名字,一个价格和一个账目,比如:HAMMER=“hammer”HAMMER_PRICE=10 HAMMER_COUNT=100 我们打算考虑一种情况,即客户一般开始会有一个关于他们想要花多少钱的想法。因此我们打算 考虑几个选项,即要么便宜(低于$20)中等($20到$100),要么昂贵(高于$100)。首先,填写变量清单,保证所有8个项的数据在清单内。务必坚持关于便宜,中等和昂贵的概念 。然后,实现get_info函数,其用于接受一个便宜的概念,然后返回清单里每一个在此范围内的 项的信息的列表,就如同函数本身的信息说明的那样。重要的是:此函数内不应该有l
3、oop 循环。我们的清单很小,但是对一个巨型商店来说,清单会 非常巨大。对每个用户的每一次查询请求,商店是不能负担对所有清单进行遍历的时间的。当你完成后,运行程序。所有测试行应该输出True。6.189-循序渐进使用Python 编程(短期独立活动计划)2008-第八课 主讲:Aseem Kishore 问题 2 对网络索引化,第二部分 我们的搜索引擎正常工作。很好!但是我们如何知道哪一个站点比其他的更好?现在,它们只是 以随机顺序返回站点(记住,词汇表是无序的)。在这个问题中,我们将实现一个评级系统。我们基于什么评级呢?Google用一个创新的评级系统对页面评级,如果有更多其他的页面连接 它
4、的话评级就越高。不幸的是我们做不到那点,因为那需要对图论有相当深的理解,那我们能做 什么呢?嗯,在Google之前,大多数搜索引擎要么通过其页面中查询词的出现频率来评级,要么通过该页面中文本占被查询词的百分比来评级。我们将通过频率来评级-我们发现在 Google之后,这两种方法都不是特别好,两者之间没有明显的优劣。一开始,下载下面的文件:webindexer2.py 这是包含所有你的代码的文件。websearch2.py 这个完整的程序是一个更新后的搜索引擎,它有一个评级系统,将用于你的新索引。再次看看主体程序文件,websearch2.py.它几乎同前面的版本是一样的。但是你可以看到它现在它
5、希望的是(site,frequency)的数组而不是站点自身。通过这种方法,可以显示每个站点的点击次数。它也希望站点已经 按从高到底的频率 存储/评级了。同样让我们看一看webindexer2.py 文件,它也几乎同前面的版本是一样的,但是其对搜索函数 的描述表明其返回的是每个站点的频率,并且站点是以评级来排序的。为了对每个站点按所查询词出现的频率来评级,我们将不得不在我们的索引中存储该信息。一开始,你可以从webindexer1.py 拷贝你的函数的代码到webindexer2.py,但你其实大可不必。任务 1 实现index_site 函数。每个站点在索引中需要存储的是什么信息?存储信息的
6、最好方法是 什么?如果我们有不止一个的选择,哪一个是不稳定的,哪一个是稳定的呢?当我 们建立索引时,将可能频繁改动,那么哪种选择好些呢?提示:如果感到困难,可以按逻辑来思考。当我搜索是,我有一个词。我想要能查 找这个词并得到什么信息呢?这个信息既要充分也要能够存储。既然我们关注索引化,我们将再次关注查询。同样的,我们也将在处理多个词之前 处理单个词。这将同你前面的函数很类似,但是我们不得不多一个额外的事:按出现 频率对其排序。任务 2 实现search_single_word函数。我们不得不返回一个具有(site,frequency)数组的列表。如果我 们有一个包含这些数组的列表,对它们排序,
7、像这样做:L.sort(key=lambda pair:pair1,reverse=True)现在不用担心这是什么意思,但如果你感兴趣,我们会解释。另一方面,既然我们能处理一个词的情况,我们将能处理多个词的情况。就像前面 的道理一样,但是我们不得不在返回这些结果前对其排序。任务 3 实现 search_multiple_words 函数。参数words 是一个列表,而不是一个字符串。确保在你返回的列表中没有重复的站点!在此之前,记得排序列表!(用同上面一 样的语句)。你现在应当有一个带评级系统的索引器了,那么运行 websearch2.py 文件试验一下!为了开心一 点,别用那个包含站点最少的
8、文件。用包含20个或者50个的看看评级是怎样的。像前面一样,在下一页,我会贴出我从mitsites20.txt 文件得到的搜索结果。如果你的输出太离 谱,你可能什么地方做错了。如果只是轻微的不同,则可能是你索引站点时,网站 的页面(例如 web.mit.edu)同我索引时相比有了一些变化。这是我的输出结果:6.189 Web Search!(version 2)Building the index.(this may take a while)Done!At any time,you may search for QUIT to quit.-What would you like to sea
9、rch for?hockfield 1 site(s)found with the terms hockfield:(1 hits)http:/mitsloan.mit.edu/-What would you like to search for?susan hockfield 2 site(s)found with the terms susan hockfield:(2 hits)http:/mitsloan.mit.edu/(1 hits)http:/mitpress.mit.edu/-What would you like to search for?computer science
10、11 site(s)found with the terms computer science:(102 hits)http:/ocw.mit.edu/OcwWeb/web/courses/courses/index.htm(12 hits)http:/mitworld.mit.edu/(7 hits)http:/dspace.mit.edu/(6 hits)http:/ocw.mit.edu/(4 hits)http:/www.eecs.mit.edu/(4 hits)http:/mitpress.mit.edu/(4 hits)http:/www.csail.mit.edu/(3 hits)http:/dmse.mit.edu/(1 hits)http:/www.media.mit.edu/(1 hits)http:/architecture.mit.edu/(1 hits)http:/laptop.media.mit.edu/-What would you like to search for?python No sites found with the terms python.Try a broader search.-What would you like to search for?QUIT Thanks for searching!