4.4.16 创新习题

49. 拼写检查(Spell checking)。请编写一个set客户端spellchecker.py程序,从命令行接收一个包含单词字典的文件名作为参数,然后从标准输入读取字符串,输出所有在字典中不存在的字符串。在本书官网可以找到字典。额外奖励:扩展你的程序以处理常用的后缀,例如ing和ed。

50. 拼写更正(Spell correction)。请编写一个dict客户端spellcorrector.py程序作为一个过滤器,用于提示并建议替换标准输入中常见拼写错误的单词,并把结果写入标准输出。从命令行接收包含常见拼写错误和更正的文件作为参数。在本书官网可以找到一个样例。

51. Web过滤器(Web Filter)。请编写一个set客户端webblocker.py程序,从命令行接收一个包含拒绝的网站列表的文件作为参数,然后从标准输入读取字符串,并仅输出不包含在该列表的网站。

52. 集合操作(Set operation)。请在OrderedSet(本节习题的第21题)中增加两个方法union()和intersection(),带两个集合作为参数,分别返回两个集合的并集和交集。

53. 频率符号表(Frequency symbol table)。请开发一个FrequencyTable数据类型以支持如下操作:click()和count(),均带字符串参数。数据类型的值是整数,用于记录click()操作使用给定字符串作为参数的调用次数。click()操作每次计数递增1,count()操作则返回值(可能为0)。该数据类型的客户端可以包括Web流量分析器、统计每首歌播放次数的音乐播放器、统计呼叫次数的电话软件等。

54. 1D范围搜索(1D range searching)。请开发一个数据类型以支持如下操作:插入一个日期、查找一个日期、统计数据结构中位于特定区间日期的数量。请使用Python的datetime.Date数据类型。 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.