├── Pride_and_Prejudice.txt ├── README.md ├── example_repo ├── hw1 │ └── homework1.txt ├── hw2 │ └── prog.py ├── hw3 │ ├── markup.xml │ └── some_file.tsv └── hw4 │ └── prog.py ├── poem_generator.py └── sentence_generator.py /README.md: -------------------------------------------------------------------------------- 1 | # Программирование на ФГН ВШЭ 2 | Репозиторий для курса "Программирование" в 2017-2018 уч. году. 3 | 4 | Большинство полезных материалов находятся в [Wiki](https://github.com/morgan1189/HSE-Programming/wiki) (вкладка сверху в веб интерфейсе Github этого репозитория). 5 | 6 | Курс ведут: 7 | - Борис Валерьевич Орехов (группа 2) nevmenandr@gmail.com 8 | - Евгения Мещерякова (группа 3) e-meshch@yandex.ru 9 | - Сергей Муратов (группы 1, 4) muratovst@gmail.com 10 | -------------------------------------------------------------------------------- /example_repo/hw1/homework1.txt: -------------------------------------------------------------------------------- 1 | I've worked very hard to make this. 2 | Please appreciate my skills. -------------------------------------------------------------------------------- /example_repo/hw2/prog.py: -------------------------------------------------------------------------------- 1 | print("Hello, World!") -------------------------------------------------------------------------------- /example_repo/hw3/markup.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morgan1189/HSE-Programming/dbf7d78d496e20ddc938acfa6394924bc7f8bdb1/example_repo/hw3/markup.xml -------------------------------------------------------------------------------- /example_repo/hw3/some_file.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morgan1189/HSE-Programming/dbf7d78d496e20ddc938acfa6394924bc7f8bdb1/example_repo/hw3/some_file.tsv -------------------------------------------------------------------------------- /example_repo/hw4/prog.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morgan1189/HSE-Programming/dbf7d78d496e20ddc938acfa6394924bc7f8bdb1/example_repo/hw4/prog.py -------------------------------------------------------------------------------- /poem_generator.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | import random 3 | # Эта программа генерирует стихотворение с соблюдением метрической схемы - трехстопный анапест 4 | 5 | def imperative(): 6 | # эта функция возвращает случайный глагол в повелительном наклонении; у неё нет аргументов 7 | # чтобы получился хороший анапест, нужно подобрать глаголы с ударением на третий слог 8 | imperative = ["прокати", "уходи", "не спеши", "погоди", "подожди", "позвони", "убегай", "не плошай", "подержи"] 9 | return random.choice(imperative) 10 | 11 | def verb(): 12 | # эта функция возвращает случайный глагол мн.ч.; у неё нет аргументов 13 | # чтобы получился хороший анапест, нужно подобрать глаголы с ударением на третий слог 14 | plural_verbs = ["привезут", "принесли", "принесут", "пожуют", "погрызут", "приплетут", "приведут", "привели"] 15 | return random.choice(plural_verbs) 16 | 17 | def noun_phrase(): 18 | # эта функция возвращает случайное сочетание из двух слов: 19 | # первое - клитика (короткое односложное безударное слово) 20 | clitics = ["по", "ни", "на", "хоть", "лишь", "вот", "не", "от", "за", "пусть"] 21 | clitic = random.choice(clitics) 22 | # второе - какое-то двусложное слово с ударением на второй слог 23 | words2 = ["себе", "тебе", "земля", "игра", "звезда", "мороз", "ответ", "превед", "футбол", "печаль", "бокал"] 24 | noun = random.choice(words2) 25 | return clitic + ' ' + noun 26 | 27 | def noun(number): 28 | # эта функция возвращает случайное существительное; у неё есть один аргумент - число существительного 29 | # чтобы получился хороший анапест, нужно подобрать слова с ударением на третий слог 30 | singular_nouns = ["монолог", "коридор", "почему", "потому", "отчего", "каратэ", "кабарэ", "курага", "кандидат"] 31 | plural_nouns = ["малыши", "рукава", "камыши", "табуны", "рюкзаки", "пиджаки", "пацаны", "чуваки"] 32 | # мы ожидаем, что функция будет получать в качестве аргумента либо строку 's' - для сущ. ед.ч. 33 | if number == 's': 34 | return random.choice(singular_nouns) 35 | # либо любую другую строку - для сущ. мн.ч. 36 | return random.choice(plural_nouns) 37 | 38 | def punctuation(): 39 | # эта функция возвращает случайный знак препинания из небольшого списка; у неё нет аргументов 40 | marks = [".", "?", "!", "..."] 41 | return random.choice(marks) 42 | 43 | def verse1(): 44 | # эта функция собирает строчку из сущ.мн.ч., глагола, еще одного сущ.мн.ч. и знака препинания 45 | # например "малыши пожуют камыши!" 46 | return noun('pl') + ' ' + verb() + ' ' + noun('pl') + punctuation() 47 | 48 | def verse2(): 49 | # эта функция собирает строчку из глаг.повел.накл., сущ.ед.ч, сочетания клитики с каким-то словом и знака препинания 50 | # например "не плошай курага хоть печаль." 51 | return imperative() + ' ' + noun('s') + ' ' + noun_phrase() + punctuation() 52 | 53 | def verse3(): 54 | # эта функция собирает строчку из сочетания клитики с каким-то словом, глагола, сущ.мн.ч. и знака препинания 55 | # например "на тебе принесут пиджаки." 56 | return noun_phrase() + ' ' + verb() + ' ' + noun('pl') + punctuation() 57 | 58 | 59 | def make_verse(): 60 | # эта функция выбирает случайный номер из 1,2,3 и возвращает соответствующую строчку 61 | verse = random.choice([1,2,3]) 62 | if verse == 1: 63 | return verse1() 64 | elif verse == 2: 65 | return verse2() 66 | else: 67 | return verse3() 68 | 69 | # тут начинается основной код. 70 | # Он распечатывает 4 случайные строчки, чтобы получилась строфа. 71 | for n in range(4): 72 | print(make_verse()) 73 | 74 | # ура! можем постить наши прекрасные опусы в твиттер! 75 | -------------------------------------------------------------------------------- /sentence_generator.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | import random 3 | 4 | 5 | def noun(): 6 | # эта функция возвращает случайное существительное; у неё нет аргументов 7 | nouns = ['squirrel', 'chipmunk', 'elephant', 'mushroom', 'banana', 'book'] 8 | return random.choice(nouns) 9 | 10 | 11 | def adverb(): 12 | # эта функция возвращает случайное наречие; у неё нет аргументов 13 | nouns = ['aggressively', 'loudly', 'slowly', 'proudly', 'dangerously'] 14 | return random.choice(nouns) 15 | 16 | 17 | def intensifier(adv): 18 | # эта функция добавляет к наречию adv наречие-модификатор 19 | # и возвращает результат 20 | intensifiers = ['quite', 'rather', 'very', 'enough'] 21 | random_intensifier = random.choice(intensifiers) 22 | if random_intensifier == 'enough': 23 | result = adv + ' ' + random_intensifier 24 | else: 25 | result = random_intensifier + ' ' + adv 26 | return result 27 | 28 | 29 | def adjective(word): 30 | # эта функция добавляет к слову word случайное прилагательное слева 31 | # и возвращает результат 32 | adjectives = ['big', 'little', 'brown', 'red', 'yellow', 'nasty', 'wonderful', 'fascinating', 'ordinary'] 33 | return random.choice(adjectives) + ' ' + word 34 | 35 | 36 | def verb_of_thought(subj): 37 | # эта функция добавляет к существительному subj какой-то глагол мысли 38 | # в 3 л. ед. ч. и возвращает результат 39 | verbs = ['thinks', 'knows', 'is convinced', 'believes'] 40 | return subj + ' ' + random.choice(verbs) 41 | 42 | 43 | def verb_transitive(subj, obj): 44 | # эта функция берёт два слова, subj и obj, и делает их подлежащим 45 | # и дополнением какого-то переходного глагола в форме без -s 46 | verbs = ['eat', 'throw', 'frighten', 'drink', 'kill', 'launch'] 47 | return subj + ' ' + random.choice(verbs) + ' ' + obj 48 | 49 | 50 | def random_sentence(): 51 | # random_sentence() -- это функция, которая возвращает готовое 52 | # случайно составленное предложение. У неё вообще нет аргументов, 53 | # поэтому после её названия пишутся пустые скобки. 54 | sentence = verb_of_thought(adjective(noun())) +\ 55 | ' that ' + verb_transitive(adjective(noun() + 's'), noun() + 's') +\ 56 | ' ' + intensifier(adverb()) + '.' 57 | # с помощью \ можно переносить длинные строки кода 58 | return sentence 59 | 60 | 61 | # А вот тут начинается основной код. Из одной строчки. :) 62 | # Он распечатывает случайное предложение. 63 | print(random_sentence()) 64 | print() 65 | 66 | # А вот тут код побольше. 67 | # Мы можем напечатать целый текст из случайного количества предложений от 1 до 15.: 68 | print("---- FASCINATING MASTERPIECE STARTS HERE ----") 69 | num_of_sents = random.randint(1, 15) # выбираем случайное число от 1 до 15 70 | for i in range(num_of_sents): # используем это число в цикле, чтобы несколько раз запустить генератор предложений 71 | sentence = random_sentence() # генерируем предложение 72 | sentence = sentence.capitalize() # capitalize() делает первую букву строки заглавной 73 | print(sentence, end=' ') # печатаем 74 | # end=' ' отвечает за то, чтобы новое предложение печаталось не на новой строчке, 75 | # а через пробел сразу после предыдущего 76 | print("\n--------- MY CHEF D'OEUVRE ENDS HERE ---------") 77 | 78 | --------------------------------------------------------------------------------