From 40d12c2d2e09631b7faacdab9618813be0593d47 Mon Sep 17 00:00:00 2001 From: facelli Date: Wed, 2 Dec 2020 12:39:17 +0300 Subject: [PATCH 1/5] [upd] added exception in task 4, added zero profit case in task 5 --- first_lesson/4-th_task.py | 4 ++-- first_lesson/5-th_task.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/first_lesson/4-th_task.py b/first_lesson/4-th_task.py index 269e9ed..1d0cc37 100644 --- a/first_lesson/4-th_task.py +++ b/first_lesson/4-th_task.py @@ -12,5 +12,5 @@ b=a%10 a=a//10 print(f"Biggest charachter is {b}") -except: - print("I said, give me a number! Digits, you know?") \ No newline at end of file +except Exception as err: + print(f"I said, give me a number! Digits, you know?\nError: {err}") \ No newline at end of file diff --git a/first_lesson/5-th_task.py b/first_lesson/5-th_task.py index f3978ef..e23368d 100644 --- a/first_lesson/5-th_task.py +++ b/first_lesson/5-th_task.py @@ -17,6 +17,8 @@ qty=int(qty) soul=int((a-b)/qty) print(f"А один сотрудник приносит в среднем {soul}.") +elif a==b: + print("Раюботаете в ноль") else: print("Работаете в убыток.") From 22006a1101e3ac1b04f3581ee184c0bf10ed4c87 Mon Sep 17 00:00:00 2001 From: facelli Date: Sun, 6 Dec 2020 19:40:21 +0300 Subject: [PATCH 2/5] [upd] added homework for second lesson --- second_lesson/1-st_task.py | 7 +++++++ second_lesson/2-nd_task.py | 12 ++++++++++++ second_lesson/3-d_task.py | 18 ++++++++++++++++++ second_lesson/4-th_task.py | 12 ++++++++++++ second_lesson/5-th_task.py | 20 ++++++++++++++++++++ second_lesson/6-th_task.py | 19 +++++++++++++++++++ 6 files changed, 88 insertions(+) create mode 100644 second_lesson/1-st_task.py create mode 100644 second_lesson/2-nd_task.py create mode 100644 second_lesson/3-d_task.py create mode 100644 second_lesson/4-th_task.py create mode 100644 second_lesson/5-th_task.py create mode 100644 second_lesson/6-th_task.py diff --git a/second_lesson/1-st_task.py b/second_lesson/1-st_task.py new file mode 100644 index 0000000..0200478 --- /dev/null +++ b/second_lesson/1-st_task.py @@ -0,0 +1,7 @@ +#Создать список и заполнить его элементами различных типов данных. +#Реализовать скрипт проверки типа данных каждого элемента. +#Использовать функцию type() для проверки типа. +#Элементы списка можно не запрашивать у пользователя, а указать явно, в программе. +list=[None, True, 123, 0.123, "string", (), {}, []] +for item in list: + print(item, type(item)) \ No newline at end of file diff --git a/second_lesson/2-nd_task.py b/second_lesson/2-nd_task.py new file mode 100644 index 0000000..6a0e511 --- /dev/null +++ b/second_lesson/2-nd_task.py @@ -0,0 +1,12 @@ +#Для списка реализовать обмен значений соседних элементов, т.е. Значениями обмениваются элементы +# с индексами 0 и 1, 2 и 3 и т.д. При нечетном количестве элементов последний сохранить на своем месте. +# Для заполнения списка элементов необходимо использовать функцию input(). + + +data = input("Введите через пробел элементы списка:\n") +list=data.split() +i=0 +while i < (len(list)-1): + list[i], list[i+1]=list[i+1], list[i] + i+=2 +print(list) \ No newline at end of file diff --git a/second_lesson/3-d_task.py b/second_lesson/3-d_task.py new file mode 100644 index 0000000..4e07344 --- /dev/null +++ b/second_lesson/3-d_task.py @@ -0,0 +1,18 @@ +# Пользователь вводит месяц в виде целого числа от 1 до 12. +# Сообщить к какому времени года относится месяц (зима, весна, лето, осень). +# Напишите решения через list и через dict. + +seasons = { + (12, 1, 2): "зима", + (3, 4, 5): "весна", + (6, 7, 8): "лето", + (9, 10, 11): "осень" +} +month = int(input("Введите номер месяца:\n").lower()) + +for value in seasons.keys(): + for digits in value: + digits = int(digits) + if digits == month: + value=tuple(value) + print(f"это {seasons.get(value)}") \ No newline at end of file diff --git a/second_lesson/4-th_task.py b/second_lesson/4-th_task.py new file mode 100644 index 0000000..614beda --- /dev/null +++ b/second_lesson/4-th_task.py @@ -0,0 +1,12 @@ +#Пользователь вводит строку из нескольких слов, разделённых пробелами. +# Вывести каждое слово с новой строки. Строки необходимо пронумеровать. +# Если в слово длинное, выводить только первые 10 букв в слове. + +data = input("Введи строку:\n") +list = data.split(" ") +i=1 +for word in list: + if len(word) > 10: + word = word[0:10] + print(f"{i}. {word}") + i+=1 diff --git a/second_lesson/5-th_task.py b/second_lesson/5-th_task.py new file mode 100644 index 0000000..add078e --- /dev/null +++ b/second_lesson/5-th_task.py @@ -0,0 +1,20 @@ +# Реализовать структуру «Рейтинг», представляющую собой не возрастающий набор натуральных чисел. +# У пользователя необходимо запрашивать новый элемент рейтинга. Если в рейтинге существуют элементы +# с одинаковыми значениями, то новый элемент с тем же значением должен разместиться после них. +# Подсказка. Например, набор натуральных чисел: 7, 5, 3, 3, 2. +# Пользователь ввел число 3. Результат: 7, 5, 3, 3, 3, 2. +# Пользователь ввел число 8. Результат: 8, 7, 5, 3, 3, 2. +# Пользователь ввел число 1. Результат: 7, 5, 3, 3, 2, 1. +# Набор натуральных чисел можно задать непосредственно в коде, например, my_list = [7, 5, 3, 3, 2]. + +list = [89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 1, 0] +data = input("give me your mark:\n") +mark = int(data) +for item in list: + if mark <= item: + position = list.index(item) + 1 + elif mark > list[0]: + position = 0 +list.insert(position, mark) + +print(list) diff --git a/second_lesson/6-th_task.py b/second_lesson/6-th_task.py new file mode 100644 index 0000000..3caeab5 --- /dev/null +++ b/second_lesson/6-th_task.py @@ -0,0 +1,19 @@ +# Реализовать структуру данных «Товары». Она должна представлять собой список кортежей. +# Каждый кортеж хранит информацию об отдельном товаре. В кортеже должно быть два элемента — номер товара и словарь +# с параметрами (характеристиками товара: название, цена, количество, единица измерения). +# Структуру нужно сформировать программно, т.е. запрашивать все данные у пользователя. +# Пример готовой структуры: +# [ +# (1, {“название”: “компьютер”, “цена”: 20000, “количество”: 5, “eд”: “шт.”}), +# (2, {“название”: “принтер”, “цена”: 6000, “количество”: 2, “eд”: “шт.”}), +# (3, {“название”: “сканер”, “цена”: 2000, “количество”: 7, “eд”: “шт.”}) +# ] +# Необходимо собрать аналитику о товарах. Реализовать словарь, в котором каждый ключ — характеристика товара, +# например название, а значение — список значений-характеристик, например список названий товаров. +# Пример: +# { +# “название”: [“компьютер”, “принтер”, “сканер”], +# “цена”: [20000, 6000, 2000], +# “количество”: [5, 2, 7], +# “ед”: [“шт.”] +# } From a44996b945ae955b08f920f5f687e8124af2cec9 Mon Sep 17 00:00:00 2001 From: facelli Date: Sun, 6 Dec 2020 21:17:07 +0300 Subject: [PATCH 3/5] [upd] added 1, 2, 3, 4 tasks --- second_lesson/6-th_task.py | 24 ++++++++++++++++++++++++ third_lesson/1-st_task.py | 13 +++++++++++++ third_lesson/2-nd_task.py | 14 ++++++++++++++ third_lesson/3-d_task.py | 16 ++++++++++++++++ third_lesson/4-th_task.py | 25 +++++++++++++++++++++++++ third_lesson/5-th_task.py | 6 ++++++ third_lesson/6-th_task.py | 6 ++++++ 7 files changed, 104 insertions(+) create mode 100644 third_lesson/1-st_task.py create mode 100644 third_lesson/2-nd_task.py create mode 100644 third_lesson/3-d_task.py create mode 100644 third_lesson/4-th_task.py create mode 100644 third_lesson/5-th_task.py create mode 100644 third_lesson/6-th_task.py diff --git a/second_lesson/6-th_task.py b/second_lesson/6-th_task.py index 3caeab5..7708fc4 100644 --- a/second_lesson/6-th_task.py +++ b/second_lesson/6-th_task.py @@ -17,3 +17,27 @@ # “количество”: [5, 2, 7], # “ед”: [“шт.”] # } + +from copy import deepcopy + + +goods = [] +features = {"название": "", "цена": "", "количество": "", "единица измерения": ""} +analytics = {"название": [], "цена": [], "количество": [], "единица измерения": []} +num = 0 +while True: + if input("Для выхода введите Q -> Enter, для продолжения - Enter").upper() == "Q": + break + num += 1 + for f in features.keys(): + fet = input(f"Введите значение свойства '{f}': ") # Ввод свойства + features[f] = int(fet) if f in {"цена", "количество"} else fet # меняем тип + analytics[f].append(features[f]) # Добавляем свойство в список товаров + goods.append((num, deepcopy(features))) + print(f"\n Текущая структура товаров: \n {'*' * 30}") + for good in goods: + print(good) + print(f"\n Текущая аналитика по товарам: \n {'*' * 30}") + for key, value in analytics.items(): + print(f"{key[:25]:>30}: {value}") + print("*" * 30) \ No newline at end of file diff --git a/third_lesson/1-st_task.py b/third_lesson/1-st_task.py new file mode 100644 index 0000000..2cf9a08 --- /dev/null +++ b/third_lesson/1-st_task.py @@ -0,0 +1,13 @@ +# Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. + +def func(arg1, arg2): + try: + return arg1 / arg2 + except ZeroDivisionError as err: + print("Who the F*** divides by zero?\n", err) + +arg1 = float(input("Введите первое число:\n")) +arg2 = float(input("Введите второе число:\n")) + +print(func(arg1, arg2)) \ No newline at end of file diff --git a/third_lesson/2-nd_task.py b/third_lesson/2-nd_task.py new file mode 100644 index 0000000..ec16e5a --- /dev/null +++ b/third_lesson/2-nd_task.py @@ -0,0 +1,14 @@ +# Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: +# имя, фамилия, год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. +# Реализовать вывод данных о пользователе одной строкой. + +def func(name, surname, borndate, homecity, email, phone): + print(f"Hello, {name} {surname}, i know all about you!\n Look, you was born in {borndate}, \nand you live in {homecity}, your phone number is {phone} and email is {email}.") + +func(phone="123456789", + email="example@example.hell", + homecity="Night City", + borndate="1861", + surname="Prokhorov", + name="Eugene") \ No newline at end of file diff --git a/third_lesson/3-d_task.py b/third_lesson/3-d_task.py new file mode 100644 index 0000000..e8daf52 --- /dev/null +++ b/third_lesson/3-d_task.py @@ -0,0 +1,16 @@ +# Реализовать функцию my_func(), которая принимает три позиционных аргумента, и возвращает сумму наибольших двух +# аргументов. +def my_func(a, b, c): + if a < b and a < c: + return b + c + elif b < a and b < c: + return a + c + elif c < a and c < b: + return a + b + + +data = (input("Введите через пробел три числа:\n")).split(" ") +a = int(data[0]) +b = int(data[1]) +c = int(data[2]) +print(f"сумма наибольших двух:\n {my_func(a, b, c)}") \ No newline at end of file diff --git a/third_lesson/4-th_task.py b/third_lesson/4-th_task.py new file mode 100644 index 0000000..a193f0a --- /dev/null +++ b/third_lesson/4-th_task.py @@ -0,0 +1,25 @@ +# Программа принимает действительное положительное число x и целое отрицательное число y. +# Необходимо выполнить возведение числа x в степень y. +# Задание необходимо реализовать в виде функции my_func(x, y). +# При решении задания необходимо обойтись без встроенной функции возведения числа в степень. +def my_func(x, y): + if y > 0: + z = x + for iter in range(y - 1): + x *= z + return x + + elif y < 0: + z = x + for iter in range(abs(y) - 1): + x *= z + return (1 / x) + + else: + return 1 + +data = (input("Введите через пробел два числа:\n")).split(" ") +x = int(data[0]) +y = int(data[1]) +print(my_func(x, y)) + diff --git a/third_lesson/5-th_task.py b/third_lesson/5-th_task.py new file mode 100644 index 0000000..17bf8b8 --- /dev/null +++ b/third_lesson/5-th_task.py @@ -0,0 +1,6 @@ +# Программа запрашивает у пользователя строку чисел, разделенных пробелом. +# При нажатии Enter должна выводиться сумма чисел. Пользователь может продолжить ввод чисел, разделенных +# пробелом и снова нажать Enter. Сумма вновь введенных чисел будет добавляться к уже подсчитанной сумме. +# Но если вместо числа вводится специальный символ, выполнение программы завершается. +# Если специальный символ введен после нескольких чисел, то вначале нужно добавить сумму этих чисел к +# полученной ранее сумме и после этого завершить программу. diff --git a/third_lesson/6-th_task.py b/third_lesson/6-th_task.py new file mode 100644 index 0000000..657decb --- /dev/null +++ b/third_lesson/6-th_task.py @@ -0,0 +1,6 @@ +# Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же, но с прописной +# первой буквой. Например, print(int_func(‘text’)) -> Text. +# +# Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. +# Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, но каждое слово должно +# начинаться с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). \ No newline at end of file From 65d16a4b219623a203d7b7759d55f4eaaa2ecdb8 Mon Sep 17 00:00:00 2001 From: facelli Date: Sun, 6 Dec 2020 21:18:10 +0300 Subject: [PATCH 4/5] [upd] added 1, 2, 3, 4 tasks --- second_lesson/6-th_task.py | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/second_lesson/6-th_task.py b/second_lesson/6-th_task.py index 7708fc4..3caeab5 100644 --- a/second_lesson/6-th_task.py +++ b/second_lesson/6-th_task.py @@ -17,27 +17,3 @@ # “количество”: [5, 2, 7], # “ед”: [“шт.”] # } - -from copy import deepcopy - - -goods = [] -features = {"название": "", "цена": "", "количество": "", "единица измерения": ""} -analytics = {"название": [], "цена": [], "количество": [], "единица измерения": []} -num = 0 -while True: - if input("Для выхода введите Q -> Enter, для продолжения - Enter").upper() == "Q": - break - num += 1 - for f in features.keys(): - fet = input(f"Введите значение свойства '{f}': ") # Ввод свойства - features[f] = int(fet) if f in {"цена", "количество"} else fet # меняем тип - analytics[f].append(features[f]) # Добавляем свойство в список товаров - goods.append((num, deepcopy(features))) - print(f"\n Текущая структура товаров: \n {'*' * 30}") - for good in goods: - print(good) - print(f"\n Текущая аналитика по товарам: \n {'*' * 30}") - for key, value in analytics.items(): - print(f"{key[:25]:>30}: {value}") - print("*" * 30) \ No newline at end of file From ae39b09527d02d7ec07f12b76f23956f4c6221c2 Mon Sep 17 00:00:00 2001 From: facelli Date: Tue, 8 Dec 2020 22:18:35 +0300 Subject: [PATCH 5/5] [upd] added HW for third lesson --- second_lesson/6-th_task.py | 2 +- third_lesson/5-th_task.py | 17 +++++++++++++++++ third_lesson/6-th_task.py | 16 +++++++++++++--- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/second_lesson/6-th_task.py b/second_lesson/6-th_task.py index 3caeab5..ba584a1 100644 --- a/second_lesson/6-th_task.py +++ b/second_lesson/6-th_task.py @@ -16,4 +16,4 @@ # “цена”: [20000, 6000, 2000], # “количество”: [5, 2, 7], # “ед”: [“шт.”] -# } +# } \ No newline at end of file diff --git a/third_lesson/5-th_task.py b/third_lesson/5-th_task.py index 17bf8b8..dcd5a65 100644 --- a/third_lesson/5-th_task.py +++ b/third_lesson/5-th_task.py @@ -4,3 +4,20 @@ # Но если вместо числа вводится специальный символ, выполнение программы завершается. # Если специальный символ введен после нескольких чисел, то вначале нужно добавить сумму этих чисел к # полученной ранее сумме и после этого завершить программу. + +"""подсмотрел решение в твоей репе(""" + +def adder(): + summ = 0 + while True: + data = input("Введите числа через пробел: ") + stopper = data.count("#") + if stopper: + summ += sum(map(int, data[:data.index("#") - 1].split())) + break + summ += sum(map(int, data.split())) + print(f"Temporary sum value: {summ}") + return summ + + +print(adder()) \ No newline at end of file diff --git a/third_lesson/6-th_task.py b/third_lesson/6-th_task.py index 657decb..7a46d83 100644 --- a/third_lesson/6-th_task.py +++ b/third_lesson/6-th_task.py @@ -1,6 +1,16 @@ -# Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же, но с прописной -# первой буквой. Например, print(int_func(‘text’)) -> Text. +# Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же, но с +# прописной первой буквой. Например, print(int_func(‘text’)) -> Text. # # Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. # Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, но каждое слово должно -# начинаться с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). \ No newline at end of file +# начинаться с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). + +def int_func(word): + return word.capitalize() + +while True: + data = input("Введите слова через пробел:\nQ/q для выхода.\n") + if data == "Q" or data == "q": + print("Stopping...") + break + print(' '.join(map(int_func, data.split())))