Zanurkuj w Pythonie/Funkcje dynamiczne

Nurkujemy

edytuj

Chcę teraz opowiedzieć o rzeczownikach w liczbie mnogiej. Także o funkcjach zwracających inne funkcje, o zaawansowanych wyrażeniach regularnych oraz o generatorach, które pojawiły się w języku Python w wersji 2.3. Zacznę jednak od tego, w jaki sposób tworzy się rzeczowniki w liczbie mnogiej.

Jeśli jeszcze nie przeczytaliście rozdziału 7 (Wyrażenia regularne), nadszedł doskonały moment, aby to zrobić. W tym rozdziale chcę szybko przejść do bardziej zaawansowanego użycia wyrażeń regularnych, zakładam więc, że dobrze rozumiecie podstawy.

Język angielski jest językiem schizofrenicznym, który sporo zapożyczył z innych języków; zasady tworzenia rzeczowników w liczbie mnogiej na podstawie liczby pojedynczej są zróżnicowane i złożone. Istnieją pewne zasady, jednak istnieją również wyjątki od tych zasad, a nawet wyjątki od tych wyjątków.

Jeśli dorastaliście w kraju, w którym mówi się po angielsku lub uczyliście się angielskiego w czasie, gdy chodziliście do szkoły, poniższe reguły powinny być wam dobrze znane:

  1. Jeśli słowo kończy się na S, X lub Z, należy dodać ES. "Bass" staje się "basses", "fax" staje się "faxes" a "waltz" staje się "waltzes".
  2. Jeśli słowo kończy się na dźwięczne H, należy dodać ES; jeśli kończy się na nieme H, należy dodać samo S. Co to jest "dźwięczne H"? Takie, które po połączeniu z innymi głoskami można usłyszeć. A więc "coach" staje się "coaches" a "rash" staje się "rashes", ponieważ głoski CH i SH są dźwięczne. Jednak "cheetah" staje się "cheetahs", ponieważ występuje tutaj H bezdźwięczne.
  3. Jeśli słowo kończy się na Y, które brzmi jak I, należy zmienić Y na IES; jeśli Y jest połączony z głoską, która brzmi inaczej, należy dodać S. A więc "vacancy" staje się "vacancies", ale "day" staje się "days".
  4. Jeśli słowo kończy się na F lub FE , w liczbie mnogiej otrzymują końcówkę -VES. "Wife" staje się "wives", "life" staje się "lives", "lief" staje się "lieves", "wolf" staje się "wolves", "knife"- "knives", "calf" - "calves", "shelf" - "shelves", "loaf" - "loaves", "thief" - "thieves", "half" - "halves".

Jednak "chief" staje się "chiefs", "roof" staje się "roofs", a "handkerschief" staje się "handkerchiefs".

  1. Jeśli wszystko zawiedzie, należy dodać S i mieć nadzieję, że się uda.


(Wiem, jest mnóstwo wyjątków. “Man” staje się “men” a “woman” staje się “women”, jednak “human” staje się “humans”. “Mouse” staje się “mice”,a “louse” staje się “lice”, jednak “house” staje się “houses”. Nie mówcie mi nawet o słowach, które same w sobie oznaczają liczbę mnogą, jak “sheep”, “deer” czy “haiku”.)

W innych językach wygląda to oczywiście zupełnie inaczej.

Zaprojektujemy więc moduł, który dla każdego rzeczownika utworzy odpowiedni rzeczownik w liczbie mnogiej. Zaczniemy od rzeczowników w języku angielskim i od powyższych czterech zasad, jednak musimy mieć na uwadze, że obsługiwanie nowych reguł (a nawet nowych języków) jest nieuniknione.