Created
January 11, 2017 06:17
-
-
Save Zagrebelin/8fb511d55d3624542042e025ea8ec8cd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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