From 73c248703af7ee06f2c4b0ccb17dfeb7ef73ca2a Mon Sep 17 00:00:00 2001 From: alardis Date: Mon, 14 Oct 2019 23:50:10 +0300 Subject: [PATCH 1/5] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D1=88=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_3/hw01_3.py | 0 lesson_3/hw02_3.py | 0 lesson_3/hw03_3.py | 0 lesson_3/hw04_3.py | 0 lesson_3/hw05_3.py | 0 lesson_3/hw06_3.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lesson_3/hw01_3.py create mode 100644 lesson_3/hw02_3.py create mode 100644 lesson_3/hw03_3.py create mode 100644 lesson_3/hw04_3.py create mode 100644 lesson_3/hw05_3.py create mode 100644 lesson_3/hw06_3.py diff --git a/lesson_3/hw01_3.py b/lesson_3/hw01_3.py new file mode 100644 index 0000000..e69de29 diff --git a/lesson_3/hw02_3.py b/lesson_3/hw02_3.py new file mode 100644 index 0000000..e69de29 diff --git a/lesson_3/hw03_3.py b/lesson_3/hw03_3.py new file mode 100644 index 0000000..e69de29 diff --git a/lesson_3/hw04_3.py b/lesson_3/hw04_3.py new file mode 100644 index 0000000..e69de29 diff --git a/lesson_3/hw05_3.py b/lesson_3/hw05_3.py new file mode 100644 index 0000000..e69de29 diff --git a/lesson_3/hw06_3.py b/lesson_3/hw06_3.py new file mode 100644 index 0000000..e69de29 From c5dad2c5d56f9664776b33ec4c0d7af9156f01f3 Mon Sep 17 00:00:00 2001 From: alardis Date: Mon, 14 Oct 2019 23:51:40 +0300 Subject: [PATCH 2/5] =?UTF-8?q?=D0=A0=D0=B5=D1=88=D0=B8=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=B8.=20?= =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B5=20=D1=82=D1=80=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BD=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_3/hw01_3.py | 24 ++++++++++++++++++++++++ lesson_3/hw02_3.py | 25 +++++++++++++++++++++++++ lesson_3/hw03_3.py | 12 ++++++++++++ lesson_3/hw04_3.py | 5 +++++ lesson_3/hw05_3.py | 7 +++++++ lesson_3/hw06_3.py | 7 +++++++ 6 files changed, 80 insertions(+) diff --git a/lesson_3/hw01_3.py b/lesson_3/hw01_3.py index e69de29..867ceb1 100644 --- a/lesson_3/hw01_3.py +++ b/lesson_3/hw01_3.py @@ -0,0 +1,24 @@ +# Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. + + +def divider_self(local_a, local_b) -> float: + # блок перехвата исключений + try: + local_a = int(local_a) + local_b = int(local_b) + result = round(local_a / local_b, 2) + + return result + # обработка ситуации некорретного ввода + except ValueError: + print('Знаете, кажется, у вас проблемы с числами. Проверьте, пожалуйста.') + # обработка ситуации деления на ноль + except ZeroDivisionError: + print('Ох, как неловко вышло. Вы, кажется, только поделили на ноль. Не надо так.') + + +a = input(f'Введите число-делимое, пожалуйста\n') +b = input(f'Введите число-делитель, пожалуйста\n') + +print(divider_self(a, b) or 'Нет результата') diff --git a/lesson_3/hw02_3.py b/lesson_3/hw02_3.py index e69de29..dd9e9b1 100644 --- a/lesson_3/hw02_3.py +++ b/lesson_3/hw02_3.py @@ -0,0 +1,25 @@ +# Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: +# имя, фамилия, год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. Реализовать вывод данных о пользователе одной строкой + + +def user_data_func(**kwargs) -> str: + if kwargs: + result = '' + for key, value in kwargs.items(): + result += value + ', ' + result = result.strip(', ') + + return result + else: + return 'У вас проблемы с данными о пользователе.' + + +print(user_data_func( + username='Ярослав', + surname='Иванов', + birthyear='1985', + usercity='Moscow', + email='ata@ata.ru', + phonenumber='+7916-555-55-55', +)) diff --git a/lesson_3/hw03_3.py b/lesson_3/hw03_3.py index e69de29..d3c0af5 100644 --- a/lesson_3/hw03_3.py +++ b/lesson_3/hw03_3.py @@ -0,0 +1,12 @@ +# Реализовать функцию my_func(), которая принимает три позиционных аргумента, и возвращает сумму наибольших +# двух аргументов. + + +def sum_max(*args) -> int: + if args and len(args) == 3: + return sum(args) - min(args) + else: + print('Проверьте состав передаваемого набора, пожалуйста') + + +print(sum_max(4, 5, 2)) diff --git a/lesson_3/hw04_3.py b/lesson_3/hw04_3.py index e69de29..712b238 100644 --- a/lesson_3/hw04_3.py +++ b/lesson_3/hw04_3.py @@ -0,0 +1,5 @@ +# Программа принимает действительное положительное число x и целое отрицательное число y. Необходимо выполнить +# возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y). При решении задания +# необходимо обойтись без встроенной функции возведения числа в степень. + + diff --git a/lesson_3/hw05_3.py b/lesson_3/hw05_3.py index e69de29..d1b7933 100644 --- a/lesson_3/hw05_3.py +++ b/lesson_3/hw05_3.py @@ -0,0 +1,7 @@ +# Программа запрашивает у пользователя строку чисел, разделенных пробелом. При нажатии Enter должна выводиться +# сумма чисел. Пользователь может продолжить ввод чисел, разделенных пробелом и снова нажать Enter. +# Сумма вновь введенных чисел будет добавляться к уже подсчитанной сумме. Но если вместо числа вводится специальный +# символ, выполнение программы завершается. Если специальный символ введен после нескольких чисел, то вначале нужно +# добавить сумму этих чисел к полученной ранее сумме и после этого завершить программу. + + diff --git a/lesson_3/hw06_3.py b/lesson_3/hw06_3.py index e69de29..3d417be 100644 --- a/lesson_3/hw06_3.py +++ b/lesson_3/hw06_3.py @@ -0,0 +1,7 @@ +# Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же, +# но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text. +# Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. Каждое слово +# состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, но каждое слово должно начинаться +# с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). + + From d930930fde007d220b70b8f32ef0546e9f316cf4 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 15 Oct 2019 15:49:36 +0300 Subject: [PATCH 3/5] =?UTF-8?q?=D0=91=D0=B0=D0=B7=D0=BE=D0=B2=D0=B0=D1=8F?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BA=D0=B0=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_3/hw01_3.py | 6 ++++++ lesson_3/hw02_3.py | 5 +++++ lesson_3/hw03_3.py | 5 +++++ lesson_3/hw04_3.py | 26 ++++++++++++++++++++++++++ lesson_3/hw05_3.py | 37 +++++++++++++++++++++++++++++++++++++ lesson_3/hw06_3.py | 14 ++++++++++++++ 6 files changed, 93 insertions(+) diff --git a/lesson_3/hw01_3.py b/lesson_3/hw01_3.py index 867ceb1..9cd984d 100644 --- a/lesson_3/hw01_3.py +++ b/lesson_3/hw01_3.py @@ -3,6 +3,12 @@ def divider_self(local_a, local_b) -> float: + """ + Функция делит одно число на другое. Значение округляется для приятного вывода + :param local_a: int + :param local_b: int + :return: float + """ # блок перехвата исключений try: local_a = int(local_a) diff --git a/lesson_3/hw02_3.py b/lesson_3/hw02_3.py index dd9e9b1..bc19537 100644 --- a/lesson_3/hw02_3.py +++ b/lesson_3/hw02_3.py @@ -4,6 +4,11 @@ def user_data_func(**kwargs) -> str: + """ + Функция выводит параметры пользователя в одну строку + :param kwargs: dict + :return: str + """ if kwargs: result = '' for key, value in kwargs.items(): diff --git a/lesson_3/hw03_3.py b/lesson_3/hw03_3.py index d3c0af5..d419421 100644 --- a/lesson_3/hw03_3.py +++ b/lesson_3/hw03_3.py @@ -3,6 +3,11 @@ def sum_max(*args) -> int: + """ + Функция возвращает сумму двух наибольших аргументов из трех + :param args: int + :return: int + """ if args and len(args) == 3: return sum(args) - min(args) else: diff --git a/lesson_3/hw04_3.py b/lesson_3/hw04_3.py index 712b238..b3a795b 100644 --- a/lesson_3/hw04_3.py +++ b/lesson_3/hw04_3.py @@ -3,3 +3,29 @@ # необходимо обойтись без встроенной функции возведения числа в степень. +def my_func(x, y) -> float: + """ + Возводит число x в степень y + :param x: float + :param y: int + :return: float + """ + try: + x = float(x) + y = int(y) + result = 1 + if x > 0 > y: + for i in range(-y): + print(f'Работаем с возведением в степень') + result = result * x + result = 1 / result + return result + else: + raise ValueError + except ValueError: + print('Что-то не так с набором чисел, проверьте') + + +a = input('Введите число Х, которое должно быть действительным и положительным\n') +b = input('Введите число Y, которое должно быть целым и отрицательным\n') +print(my_func(a, b)) diff --git a/lesson_3/hw05_3.py b/lesson_3/hw05_3.py index d1b7933..915019b 100644 --- a/lesson_3/hw05_3.py +++ b/lesson_3/hw05_3.py @@ -5,3 +5,40 @@ # добавить сумму этих чисел к полученной ранее сумме и после этого завершить программу. +import string + +# помещать весь процесс в функцию нет никакого смысла +# соответственно, в функцию надо вынести исключительно атомарную операцию сложения строки +# функция будет возвращать второй параметр, говорящий, имеет ли смысл запрашивать еще одну строку, или все уже +# если в строке будет найден некорректный символ, второй параметр будет False + + +def sum_line(line, prev_sum): + """ + Считает сумму чисел в строке, проверяет, можно ли запрашивать еще одну строку на посчитать + :param line: str + :param prev_sum: int + :return: int, bool + """ + result = 0 + more = True + num_list = line.split(' ') + + try: + for number in num_list: + if number not in string.punctuation: + result += int(number) + else: + more = False + break + return result + prev_sum, more + except ValueError: + print('Проверьте входной набор чисел') + + +another = True +current_sum = 0 +while another: + text_line = input('Введите строку чисел, разделенную пробелом\n') + current_sum, another = sum_line(text_line, current_sum) + print(f'Сумма чисел в строке: {current_sum}') diff --git a/lesson_3/hw06_3.py b/lesson_3/hw06_3.py index 3d417be..5e7ecb7 100644 --- a/lesson_3/hw06_3.py +++ b/lesson_3/hw06_3.py @@ -5,3 +5,17 @@ # с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). +def int_func(local_word) -> str: + return local_word[0].upper() + local_word[1:] + + +# первая часть программы +print(int_func('text')) + +# вторая часть программы +line = input('Введите строку текста маленькими латинскими буквами\n') +new_line = '' +for word in line.split(' '): + new_line += int_func(word) + ' ' +new_line = new_line.strip() +print(new_line) From 36f25a8921eb50c952f78983d069d8f29c8c8279 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 15 Oct 2019 16:51:39 +0300 Subject: [PATCH 4/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=B0=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_3/hw07_3.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 lesson_3/hw07_3.py diff --git a/lesson_3/hw07_3.py b/lesson_3/hw07_3.py new file mode 100644 index 0000000..037b902 --- /dev/null +++ b/lesson_3/hw07_3.py @@ -0,0 +1,21 @@ +# Задача: написать функцию которая на вход принимает список с неопределенным уровнем вложенности других списков, +# например [1, 2, [3, 4, [5]], 6, [[[7, [8]]]]] +# Функция должна вернуть плоский список сохраняя последовательность [1, 2, 3, 4, 5, 6, 7, 8] + + +def list_convert(outerlist, item_to_check): + print(f"Рассматриваем элемент (начало): {item_to_check}") + if type(item_to_check) is list: + for i in item_to_check: + print(f"Рассматриваем элемент при вызове функции: {i}") + list_convert(outerlist, i) + else: + print(f"добавляем в список: {item_to_check}") + outerlist.append(item_to_check) + + +mylist = [] +list_to_plain = [1, 2, [3, 4, [5]], 6, [[[7, [8]]]]] +list_convert(mylist, list_to_plain) + +print(mylist) From 2937c083372145090d3a8c50b3e066b702c52d6c Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Wed, 16 Oct 2019 09:39:36 +0300 Subject: [PATCH 5/5] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_3/hw07_3.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lesson_3/hw07_3.py b/lesson_3/hw07_3.py index 037b902..9dbc5df 100644 --- a/lesson_3/hw07_3.py +++ b/lesson_3/hw07_3.py @@ -19,3 +19,11 @@ def list_convert(outerlist, item_to_check): list_convert(mylist, list_to_plain) print(mylist) + +# а теперь попробуем то же самое с лямбдой +mylist1 = [] +lambda_plain = lambda item: mylist1.append(item) if type(item) is not list else [lambda_plain(i) for i in item] + +[lambda_plain(i) for i in list_to_plain] + +print(f"mylist1: {mylist1}")