From d7deb78a2670f76d4b57ae2208b1c8c70f3b71e9 Mon Sep 17 00:00:00 2001 From: GAS53 <45990653+GAS53@users.noreply.github.com> Date: Sun, 3 Oct 2021 00:56:48 +0300 Subject: [PATCH] Add files via upload homework is over --- 1.py | 15 +++++++++++++++ 2.py | 15 +++++++++++++++ 3.py | 25 +++++++++++++++++++++++++ 4.py | 34 ++++++++++++++++++++++++++++++++++ 5.py | 39 +++++++++++++++++++++++++++++++++++++++ di_for_1_and_2.py | 12 ++++++++++++ 6 files changed, 140 insertions(+) create mode 100644 1.py create mode 100644 2.py create mode 100644 3.py create mode 100644 4.py create mode 100644 5.py create mode 100644 di_for_1_and_2.py diff --git a/1.py b/1.py new file mode 100644 index 0000000..1a7af4c --- /dev/null +++ b/1.py @@ -0,0 +1,15 @@ +from di_for_1_and_2 import di + + +def num_translate(num): + print(di.get(num)) + + +num_translate('tendd') + +'''Подумайте, как и где лучше хранить +информацию, необходимую для перевода: какой тип данных выбрать, в теле функции +или снаружи.Думаю лучше снаружи функции, а еще лучше создать отдельный файл из +которого можно импортировть +необходимый словарь +''' diff --git a/2.py b/2.py new file mode 100644 index 0000000..bdc8bf3 --- /dev/null +++ b/2.py @@ -0,0 +1,15 @@ +from di_for_1_and_2 import di +'''2. * (вместо задачи 1) Доработать предыдущую функцию в num_translate_adv(): +реализовать корректную работу с числительными, начинающимися с заглавной буквы +— результат тоже должен быть с заглавной.''' + + +def num_translate_adv(num): + if num[0].istitle(): + print(di[num.lower()].capitalize()) + else: + print(di[num]) + + +num_translate_adv('Two') +num_translate_adv('two') diff --git a/3.py b/3.py new file mode 100644 index 0000000..87bbfc8 --- /dev/null +++ b/3.py @@ -0,0 +1,25 @@ +def thesaurus(*args): + di = {} + for name in args: + if di.get(name[0]) != None: + di[name[0]].append(name) + else: + new_li = [] + new_li.append(name) + di[name[0]] = new_li + return di + + +di = thesaurus("Петр", "Иван", "Мария", "Илья") +print(di) +'''полезен ли будет вам оператор распаковки? - да''' + +# Как поступить, если потребуется сортировка по ключам? +sorted_keys = sorted(di) +new_di = {} +for key in sorted_keys: + new_di[key] = di[key] + +'''или генератором словарей''' +new_di = {key: di[key] for key in sorted(di)} +print(new_di) diff --git a/4.py b/4.py new file mode 100644 index 0000000..32ba08b --- /dev/null +++ b/4.py @@ -0,0 +1,34 @@ +def sorter(di): + '''sort by keys''' + sorted_keys = sorted(di) + new_di = {} + for key in sorted_keys: + new_di[key] = di[key] + return new_di + + +def thesaurus_adv(*args): # ...rus_adv(sort, *args): named args without unpack + '''make dicts from string''' + sort, *args = args + di = {} + for name_surname in args: + name, surname = name_surname.split(' ') + li_name_surname = [name_surname] + if di.get(surname[0]) == None: + iner_di = {} + else: + iner_di = di[surname[0]] + if not iner_di.get(name[0]) == None: + li_name_surname.extend(iner_di.get(name[0])) + iner_di[name[0]] = li_name_surname + if sort: + iner_di = sorter(iner_di) + di[surname[0]] = iner_di + if sort: + di = sorter(di) + return di + + +di = thesaurus_adv(True, "Анна Савельева", "Иван Сергеев", "Инна Серова", + "Петр Алексеев", "Илья Иванов", ) +print(di) diff --git a/5.py b/5.py new file mode 100644 index 0000000..dbd987c --- /dev/null +++ b/5.py @@ -0,0 +1,39 @@ +from random import choice + +nouns = ["автомобиль", "лес", "огонь", "город", "дом"] +adverbs = ["сегодня", "вчера", "завтра", "позавчера", "ночью"] +adjectives = ["веселый", "яркий", "зеленый", "утопичный", "мягкий"] + + +def get_jokes(n, repeat=False): + '''make jokes''' + result_li = [] + li_nouns = [] + li_adverbs = [] + li_adjectives = [] + li_nouns = check_repeat(repeat, nouns, n) + li_adverbs = check_repeat(repeat, adverbs, n) + li_adjectives = check_repeat(repeat, adjectives, n) + for a, b, c in zip(li_nouns, li_adverbs, li_adjectives): + result_li.append(f'{a} {b} {c}') + print(result_li) + + +def check_repeat(repeat, li, length): + '''check for repeats''' + count = 0 + new_li = [] + while count < length: + a = choice(li) + if not repeat: + if a in new_li: + continue + else: + new_li.append(a) + else: + new_li.append(a) + count += 1 + return new_li + + +get_jokes(2) diff --git a/di_for_1_and_2.py b/di_for_1_and_2.py new file mode 100644 index 0000000..8cdda40 --- /dev/null +++ b/di_for_1_and_2.py @@ -0,0 +1,12 @@ +di = { + 'one': 'один', + 'two': 'два', + 'three': 'три', + 'four': 'четыре', + 'five': 'пять', + 'six': 'шесть', + 'seven': 'семь', + 'eight': 'восемь', + 'nine': 'nine', + 'ten': 'ten' +} \ No newline at end of file