返回介绍

第 17 章 动态函数

发布于 2019-09-14 13:30:58 字数 1393 浏览 901 评论 0 收藏 0

第 17 章 动态函数

  • 17.1. 概览
  • 17.2. plural.py, 第 1 阶段
  • 17.3. plural.py, 第 2 阶段
  • 17.4. plural.py, 第 3 阶段
  • 17.5. plural.py, 第 4 阶段
  • 17.6. plural.py, 第 5 阶段
  • 17.7. plural.py, 第 6 阶段
  • 17.8. 小结

17.1. 概览

我想谈谈名词复数。 还有,返回其它函数的函数,高级的正则表达式和生成器(Generator)。生成器是 Python 2.3 新引入的。 但首先还是让我们先来谈谈如何生成名词复数。

如果你还没有看过 第 7 章 正则表达式,现在是个绝佳的机会。 这章中假定你已理解了正则表达式的基础内容并迅速深入更高级的应用。

英语是一个吸收很多外来语而令人疯掉的语言,把单数名词变成复数的规则则是复杂而又多变的。 有规则,有例外,更有例外的例外。

如果你在英语国家长大或是在正规学校学习了英语,你可能对下面的基本规则很熟悉:

  1. 如果一个词以 S, X, Z,或者 ES结尾, “Bass” 变成 “basses”, “fax” 变成 “faxes”,还有 “waltz” 变成 “waltzes”。
  2. 如果一个词以发音的 H 加 ES 结尾,或以不发音的 H 加 S 结尾。 什么是发音的 H? 和其他字母混合在一起发出一个你可以听到的声音。 那么, “coach” 变成 “coaches” , “rash” 变成 “rashes”, 因为在读出来时,你可以听到 CH 和 SH 的声音。 但是, “cheetah” 变成 “cheetahs”,因为 H 不发音。
  3. 如果一个词以发 I 音的 Y 结尾,把 Y 变成 IES;如果 Y 与元音搭配在一起发出其他声音则只添加 S。因此, “vacancy” 变成 “vacancies”,但 “day” 变成 “days”.
  4. 如果一切规则都不适用,就只添加 S 并祈祷不会错。

(我知道有很多例外情况, 比如: “Man” 变成 “men”, “woman” 变成 “women”,但是, “human” 却变成 “humans”。 “Mouse” 变成 “mice”, “louse” 变成 “lice”, 但是, “house” 却变成 “houses”。 “Knife” 变成 “knives”, “wife” 变成 “wives”,但是 “lowlife” 却变成 “lowlifes”。 更不要说那些复数根本就不需要变化的词了,比如 “sheep”, “deer” 和 “haiku”。)

其他的语言当然完全不同。

让我们来设计一个复数化名词的模块吧! 从英语名词开始,仅考虑上面的四种规则,但是记得你将来需要不断添加规则,更可能最后添加进更多的语言。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文