Skip to content

Instantly share code, notes, and snippets.

@Zagrebelin
Created January 11, 2017 06:17
Show Gist options
  • Save Zagrebelin/8fb511d55d3624542042e025ea8ec8cd to your computer and use it in GitHub Desktop.
Save Zagrebelin/8fb511d55d3624542042e025ea8ec8cd to your computer and use it in GitHub Desktop.
import random
"""
Дан словарь английского языка (несколько прилагательных, глаголов, существительных, наречий).
Нужно сформировать несколько случайных предложений, выбрав для каждого один шаблон из двух:
"the прилагатльное существительное глагол" или
"the прилагатльное существительное наречие глагол"
🌟 доп. условие: список шаблонов фраз сколько угодно большой, каждая фраза может включать несколько существительных и прилагательных.
🌟🌟 доп. условие 2: список частей речи может меняться.
"""
class Language(dict):
""" такой хитрый dict, что когда мы берём из него какой-то элемент,
на самом деле нам отдаётся случайный элемент из списка с названием этого элемента.
self['noun'] -> random.choice(self.noun)
Можно было хранить списки в переменных self.nouns а доставать ['noun'], но тогда нужен
какой-то дополнительный маппинг
"""
def __init__(self):
self.noun = ['dog', 'cat', 'fox']
self.verb = ['jump over', 'fuck']
self.adjective = ['red', 'quick', 'black', 'lazy']
self.adverb = ['loudly', 'quickly']
def __getitem__(self, key):
""" оператор [key] """
lst = getattr(self, key)
if not lst:
raise KeyError(key)
return random.choice(lst)
language = Language()
tpls = ['The {adjective} {noun} {verb} the {adjective} {noun}',
'The {adjective} {noun}',
'The {adjective} {noun} {adverb} {verb} the {adjective} {noun}', ]
for _ in range(10):
tpl = random.choice(tpls)
s = tpl.format(**language)
print(s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment