From f7dd57e9bd9c050061bc6e3380658af180eb84ef Mon Sep 17 00:00:00 2001 From: Akchemp Date: Fri, 22 Jan 2021 22:29:57 +0300 Subject: [PATCH 1/2] =?UTF-8?q?[upd]=20=D0=B2=D1=82=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HW_2/hw_2_1.py | 15 +++++++++++++++ HW_2/hw_2_2.py | 18 ++++++++++++++++++ HW_2/hw_2_3.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ HW_2/hw_2_4.py | 16 ++++++++++++++++ HW_2/hw_2_5.py | 27 +++++++++++++++++++++++++++ HW_2/hw_2_6.py | 41 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 167 insertions(+) create mode 100644 HW_2/hw_2_1.py create mode 100644 HW_2/hw_2_2.py create mode 100644 HW_2/hw_2_3.py create mode 100644 HW_2/hw_2_4.py create mode 100644 HW_2/hw_2_5.py create mode 100644 HW_2/hw_2_6.py diff --git a/HW_2/hw_2_1.py b/HW_2/hw_2_1.py new file mode 100644 index 0000000..e7149e5 --- /dev/null +++ b/HW_2/hw_2_1.py @@ -0,0 +1,15 @@ +# 1. Создать список и заполнить его элементами различных типов данных. +# Реализовать скрипт проверки типа данных каждого элемента. Использовать функцию type() для проверки типа. +# Элементы списка можно не запрашивать у пользователя, а указать явно, в программе. + + +my_int = 5 +my_float = 1.98 +my_str = "Hello World" +my_list = ["Michael Jordan", 23] +my_tuple = ("Magic Johnson", 32) +my_dict = {"NBA": "Team Chicago Bulls", "city": "Chicago"} + +full_list = [my_int, my_float, my_str, my_list, my_tuple, my_dict] +for i in full_list: + print(f"{i} is {type(i)}") diff --git a/HW_2/hw_2_2.py b/HW_2/hw_2_2.py new file mode 100644 index 0000000..e87a311 --- /dev/null +++ b/HW_2/hw_2_2.py @@ -0,0 +1,18 @@ +# 2. Для списка реализовать обмен значений соседних элементов, т.е. +# Значениями обмениваются элементы с индексами 0 и 1, 2 и 3 и т.д. +# При нечетном количестве элементов последний сохранить на своем месте. +# Для заполнения списка элементов необходимо использовать функцию input(). + + +el_count = int(input("Введите количество элементов списка ")) +my_list = [] +i = 0 +el = 0 +while i < el_count: + my_list.append(input("Введите следующее значение списка ")) + i += 1 + +for elem in range(int(len(my_list) / 2)): + my_list[el], my_list[el + 1] = my_list[el + 1], my_list[el] + el += 2 +print(my_list) diff --git a/HW_2/hw_2_3.py b/HW_2/hw_2_3.py new file mode 100644 index 0000000..08d8c0f --- /dev/null +++ b/HW_2/hw_2_3.py @@ -0,0 +1,50 @@ +# 3. Пользователь вводит месяц в виде целого числа от 1 до 12. +# Сообщить к какому времени года относится месяц (зима, весна, лето, осень). +# Напишите решения через list и через dict. + + +seasons_list = ['January', 'February', 'March', 'April', 'May', 'June', + 'Jule', 'August', 'September', 'October', 'November', 'December'] + +seasons_dict = {1: 'winter', 2: 'spring', 3: 'summer', 4: "autumn"} + +month = int(input('Enter month from 1 to 12: ')) + +if month == 1: + print(seasons_dict.get(1)) + print(seasons_list[0]) +elif month == 2: + print(seasons_dict.get(1)) + print(seasons_list[1]) +elif month == 12: + print(seasons_dict.get(1)) + print(seasons_list[11]) +elif month == 3: + print(seasons_dict.get(2)) + print(seasons_list[2]) +elif month == 4: + print(seasons_dict.get(2)) + print(seasons_list[3]) +elif month == 5: + print(seasons_dict.get(2)) + print(seasons_list[4]) +elif month == 6: + print(seasons_dict.get(3)) + print(seasons_list[5]) +elif month == 7: + print(seasons_dict.get(3)) + print(seasons_list[6]) +elif month == 8: + print(seasons_dict.get(3)) + print(seasons_list[7]) +elif month == 9: + print(seasons_dict.get(4)) + print(seasons_list[8]) +elif month == 10: + print(seasons_dict.get(4)) + print(seasons_list[9]) +elif month == 11: + print(seasons_dict.get(4)) + print(seasons_list[10]) +else: + print("No such month exists.") \ No newline at end of file diff --git a/HW_2/hw_2_4.py b/HW_2/hw_2_4.py new file mode 100644 index 0000000..5c06061 --- /dev/null +++ b/HW_2/hw_2_4.py @@ -0,0 +1,16 @@ +# 4. Пользователь вводит строку из нескольких слов, разделённых пробелами. +# Вывести каждое слово с новой строки. +# Строки необходимо пронумеровать. +# Если в слово длинное, выводить только первые 10 букв в слове. + +my_str = input("Enter any string: ") +my_word = [] +num = 1 +for el in range(my_str.count(' ') + 1): + my_word = my_str.split() + if len(str(my_word)) <= 10: + print(f" {num} {my_word[el]}") + num += 1 + else: + print(f" {num} {my_word[el][:10]}") + num += 1 diff --git a/HW_2/hw_2_5.py b/HW_2/hw_2_5.py new file mode 100644 index 0000000..3bc4d2a --- /dev/null +++ b/HW_2/hw_2_5.py @@ -0,0 +1,27 @@ +# 5. Реализовать структуру «Рейтинг», представляющую собой не возрастающий набор натуральных чисел. +# У пользователя необходимо запрашивать новый элемент рейтинга. +# Если в рейтинге существуют элементы с одинаковыми значениями, +# то новый элемент с тем же значением должен разместиться после них. +# Подсказка. Например, набор натуральных чисел: 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]. + + +number = int(input("Enter number: ")) +my_list = [7, 5, 3, 3, 2] +c = my_list.count(number) +for element in my_list: + if c > 0: + i = my_list.index(number) + my_list.insert(i + c, number) + break + else: + if number > element: + j = my_list.index(element) + my_list.insert(j, number) + break + elif number < my_list[len(my_list) - 1]: + my_list.append(number) +print(my_list) diff --git a/HW_2/hw_2_6.py b/HW_2/hw_2_6.py new file mode 100644 index 0000000..138509f --- /dev/null +++ b/HW_2/hw_2_6.py @@ -0,0 +1,41 @@ +# 6. * Реализовать структуру данных «Товары». +# Она должна представлять собой список кортежей. +# Каждый кортеж хранит информацию об отдельном товаре. +# В кортеже должно быть два элемента — номер товара и словарь с параметрами +# (характеристиками товара: название, цена, количество, единица измерения). +# Структуру нужно сформировать программно, т.е. запрашивать все данные у пользователя. +# Пример готовой структуры: +# [ +# (1, {“название”: “компьютер”, “цена”: 20000, “количество”: 5, “eд”: “шт.”}), +# (2, {“название”: “принтер”, “цена”: 6000, “количество”: 2, “eд”: “шт.”}), +# (3, {“название”: “сканер”, “цена”: 2000, “количество”: 7, “eд”: “шт.”}) +# ] +# Необходимо собрать аналитику о товарах. +# Реализовать словарь, в котором каждый ключ — характеристика товара, например название, +# а значение — список значений-характеристик, например список названий товаров. +# Пример: +# { +# “название”: [“компьютер”, “принтер”, “сканер”], +# “цена”: [20000, 6000, 2000], +# “количество”: [5, 2, 7], +# “ед”: [“шт.”] } + +goods = [] +while input("Would you like add product? Enter yes/no: ") == 'yes': + number = int(input("Enter product number: ")) + features = {} + while input("Would you like add product parameters? Enter yes/no: ") == 'yes': + feature_key = input("Enter feature product: ") + feature_value = input("Enter feature value product: ") + features[feature_key] = feature_value + goods.append(tuple([number, features])) +print(goods) +goods = [(1, {'name': 'comp', 'price': '11'}), (2, {'name': 'pri', 'price': '22'})] +analitics = {} +for good in goods: + for feature_key, feature_value in good[1].items(): + if feature_key in analitics: + analitics[feature_key].append(feature_value) + else: + analitics[feature_key] = [feature_value] +print(analitics) From 10cc92631b9d6cea14c5509f12928ce96a49ddae Mon Sep 17 00:00:00 2001 From: Akchemp Date: Mon, 25 Jan 2021 18:04:59 +0300 Subject: [PATCH 2/2] =?UTF-8?q?[upd]=20=D0=A2=D1=80=D0=B5=D1=82=D1=8C?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HW_3/hw_3_1.py | 11 +++++++++++ HW_3/hw_3_2.py | 19 +++++++++++++++++++ HW_3/hw_3_3.py | 8 ++++++++ HW_3/hw_3_4.py | 20 ++++++++++++++++++++ HW_3/hw_3_5.py | 24 ++++++++++++++++++++++++ HW_3/hw_3_6.py | 13 +++++++++++++ 6 files changed, 95 insertions(+) create mode 100644 HW_3/hw_3_1.py create mode 100644 HW_3/hw_3_2.py create mode 100644 HW_3/hw_3_3.py create mode 100644 HW_3/hw_3_4.py create mode 100644 HW_3/hw_3_5.py create mode 100644 HW_3/hw_3_6.py diff --git a/HW_3/hw_3_1.py b/HW_3/hw_3_1.py new file mode 100644 index 0000000..dbd8136 --- /dev/null +++ b/HW_3/hw_3_1.py @@ -0,0 +1,11 @@ +# 1. Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. +# Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. + +def division(num1, num2): + try: + return num1 / num2 + except ZeroDivisionError as err: + print('Error: ', err) + + +print(division(2, 4)) \ No newline at end of file diff --git a/HW_3/hw_3_2.py b/HW_3/hw_3_2.py new file mode 100644 index 0000000..1412c10 --- /dev/null +++ b/HW_3/hw_3_2.py @@ -0,0 +1,19 @@ +# 2. Реализовать функцию, принимающую несколько параметров, описывающих данные пользователя: +# имя, фамилия, год рождения, город проживания, email, телефон. +# Функция должна принимать параметры как именованные аргументы. +# Реализовать вывод данных о пользователе одной строкой. + +def user_info(name, surname, birth_date, city, email, phone): + return f"Name: {name}\n" \ + f'Surname: {surname}\n' \ + f"Birth date: {birth_date}\n" \ + f"City: {city}\n" \ + f"Email: {email}\n" \ + f"Phone number: {phone}" + +print(user_info(name="Andrey", + surname='Krylov', + birth_date='14.11.1988', + city='Moscow', + email="ak.chemp@gmail.com", + phone='+79779264986')) \ No newline at end of file diff --git a/HW_3/hw_3_3.py b/HW_3/hw_3_3.py new file mode 100644 index 0000000..680c72f --- /dev/null +++ b/HW_3/hw_3_3.py @@ -0,0 +1,8 @@ +# 3. Реализовать функцию my_func(), которая принимает три позиционных аргумента, +# и возвращает сумму наибольших двух аргументов. + +def sum_of_max(*args): + return sum(args) - min(args) + + +print(sum_of_max(0, 1, 2)) diff --git a/HW_3/hw_3_4.py b/HW_3/hw_3_4.py new file mode 100644 index 0000000..820b2c5 --- /dev/null +++ b/HW_3/hw_3_4.py @@ -0,0 +1,20 @@ +#4. Программа принимает действительное положительное число x и целое отрицательное число y. +# Необходимо выполнить возведение числа x в степень y. +# Задание необходимо реализовать в виде функции my_func(x, y). +# При решении задания необходимо обойтись без встроенной функции возведения числа в степень. +#: попробуйте решить задачу двумя способами. +# Первый — возведение в степень с помощью оператора **. +# Второй — более сложная реализация без оператора **, предусматривающая использование цикла. + +def power(base, pwr): + return 1 / (base ** pwr) + +def power2(base, pwr): + res = 1 + for n in range(pwr): + res *= base + return 1 / res + + +print(power(2, 5)) +print(power2(2, 5)) \ No newline at end of file diff --git a/HW_3/hw_3_5.py b/HW_3/hw_3_5.py new file mode 100644 index 0000000..ad0c89a --- /dev/null +++ b/HW_3/hw_3_5.py @@ -0,0 +1,24 @@ +5. # Программа запрашивает у пользователя строку чисел, разделенных пробелом. + + +# При нажатии Enter должна выводиться сумма чисел. +# Пользователь может продолжить ввод чисел, разделенных пробелом и снова нажать Enter. +# Сумма вновь введенных чисел будет добавляться к уже подсчитанной сумме. +# Но если вместо числа вводится специальный символ, выполнение программы завершается. +# Если специальный символ введен после нескольких чисел, +# то вначале нужно добавить сумму этих чисел к полученной ранее сумме и после этого завершить программу. + +def summator(): + total_sum = 0 + while True: + num_list = input('Enter numbers: ') + stopper = num_list.count('!') # считаем кол-во стоп символов в строке + if stopper: + total_sum += sum(map(int, num_list[:num_list.index('!') - 1].split())) + break + total_sum += sum(map(int, num_list.split())) + print(f'Temporary sum value: {total_sum}') + return total_sum + + +print(summator()) diff --git a/HW_3/hw_3_6.py b/HW_3/hw_3_6.py new file mode 100644 index 0000000..ecdc86e --- /dev/null +++ b/HW_3/hw_3_6.py @@ -0,0 +1,13 @@ +"""6. Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же, +но с прописной первой буквой. +Например, print(int_func(‘text’)) -> Text. +Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. +Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, +но каждое слово должно начинаться с заглавной буквы. Необходимо использовать написанную ранее функцию int_func().""" + + +def int_func(word): + return word.capitalize() + +word_string = input('Enter the words: ') +print(' '.join(list(map(int_func, word_string.split()))))