Attachment 'genvoc.py'

Download

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 Произносимые слова. Сгенерировать несколько «произносимых» слов случайной длины по принципу:
   5   Согласная-гласная-согласная... и т. п.
   6   Слог-слог-слог... и т. п., где каждый слог состоит из разумного числа гласных и согласных
   7   ...то же самое с учётом частоты употребления различных букв
   8 '''
   9 
  10 import random
  11 Gl=u"аоуыэяёюие"
  12 Sogl=u"йцкнгшщзхфвпрлджчсмтб"
  13 
  14 def voc00(w):
  15     s=""
  16     for i in xrange(w/2):
  17         s+=random.choice(Sogl)
  18         s+=random.choice(Gl)
  19     return s[:w]
  20 
  21 def voc0(w):
  22     return "".join([random.choice((Sogl,Gl)[i%2]) for i in xrange(w)])
  23 
  24 GlN=u"ааааоооооуууыыэяяёюииииееее"
  25 SoglN=u"йцккккнннннггшшщззххффввввпппппрррррлддджжчсссссмммммтттттбб"
  26 
  27 Slogi=(("a", "al", "all"), ("la", "lla", "lal", "lall"))
  28 def voc1(w):
  29     s,slog="",random.choice(random.choice(Slogi))
  30     while len(s)<w:
  31         for c in slog:
  32             s+= c=="a" and random.choice(GlN) or random.choice(SoglN)
  33         # если слог заканчивается на согласную, следующий начинается с гласной
  34         slog=random.choice(Slogi[slog.endswith("a") and random.randrange(2) or 0])
  35     return s[:w]
  36 
  37 lengths=[random.randint(1,10) for i in xrange(3,12)]
  38 
  39 print (" ".join([voc0(w) for w in lengths])).capitalize()+"?"
  40 print (" ".join([voc1(w) for w in lengths])).capitalize()+"!"

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.

You are not allowed to attach a file to this page.