From 66c254890e49805ac1857221efd5d43fa23e3faa Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Tue, 8 Dec 2020 20:51:49 +0300 Subject: [PATCH 1/8] Create class_work.py 50 min --- class_work.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 class_work.py diff --git a/class_work.py b/class_work.py new file mode 100644 index 0000000..9295d8e --- /dev/null +++ b/class_work.py @@ -0,0 +1,36 @@ +""" +int неизменяемые типы +float +bool + +None + +str +tulpe + +list изменяемые типы +dict +set + +""" + +a = 0 +a * 2 == a +a = float('inf') +b = '' +b != None +b = float('nan') +b != b +b + 2 + +#мнимые числа +from math import sqrt + +some = 2 +print id(some) + +a = 258 +b = 258 +a == b # true +a is b # false + From 10845ce0815cb215f3e714ad644c7d268a1377c5 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Wed, 9 Dec 2020 13:22:53 +0300 Subject: [PATCH 2/8] Publishing branch Publishing branch --- .gitignore | 2 ++ class_work.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..879af15 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +class_work.py diff --git a/class_work.py b/class_work.py index 9295d8e..d80fabd 100644 --- a/class_work.py +++ b/class_work.py @@ -27,7 +27,7 @@ from math import sqrt some = 2 -print id(some) +print(id(some)) a = 258 b = 258 From 45672c8d52e76c0642a4a10af8b1276640e1d032 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Fri, 11 Dec 2020 12:35:06 +0300 Subject: [PATCH 3/8] Create lesson2_task_1.py task 1 commit --- lesson2_task_1.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lesson2_task_1.py diff --git a/lesson2_task_1.py b/lesson2_task_1.py new file mode 100644 index 0000000..484a151 --- /dev/null +++ b/lesson2_task_1.py @@ -0,0 +1,10 @@ +""" +1. Создать список и заполнить его элементами различных типов данных. Реализовать скрипт проверки типа данных каждого элемента. Использовать функцию type() для проверки типа. Элементы списка можно не запрашивать у пользователя, а указать явно, в программе. +""" +#Создать список и заполнить его элементами различных типов данных. +a_list = ["jdkshfkjh",4,14.314,8,90,"hi",3.5687,True,"False"] +print(type(a_list)) + +#проверка типа данных каждого элемента. +for element in range(len(a_list)): + print(type(a_list[element])) \ No newline at end of file From 95f5de34fc17de20666dc8a007fcc780f9c99d2f Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Fri, 11 Dec 2020 20:20:48 +0300 Subject: [PATCH 4/8] practice upd Task 2 --- lesson2_task_1.py | 4 ++-- lesson2_task_2.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 lesson2_task_2.py diff --git a/lesson2_task_1.py b/lesson2_task_1.py index 484a151..b486478 100644 --- a/lesson2_task_1.py +++ b/lesson2_task_1.py @@ -2,9 +2,9 @@ 1. Создать список и заполнить его элементами различных типов данных. Реализовать скрипт проверки типа данных каждого элемента. Использовать функцию type() для проверки типа. Элементы списка можно не запрашивать у пользователя, а указать явно, в программе. """ #Создать список и заполнить его элементами различных типов данных. -a_list = ["jdkshfkjh",4,14.314,8,90,"hi",3.5687,True,"False"] +a_list = ["jdkshfkjh",4,14.314,8,90,"hi",3.5687,True,"False",None] print(type(a_list)) #проверка типа данных каждого элемента. for element in range(len(a_list)): - print(type(a_list[element])) \ No newline at end of file + print(type(a_list[element])) diff --git a/lesson2_task_2.py b/lesson2_task_2.py new file mode 100644 index 0000000..710e1c9 --- /dev/null +++ b/lesson2_task_2.py @@ -0,0 +1,26 @@ +""" +2. Для списка реализовать обмен значений соседних элементов, т.е. Значениями обмениваются элементы с индексами 0 и 1, 2 и 3 и т.д. При нечетном количестве элементов последний сохранить на своем месте. Для заполнения списка элементов необходимо использовать функцию input(). +#a_list = [0, 3, 0.2,"3213",4,True,6,7,8] # заполнение через input(). +""" + +a_list = [] +for i in range(int(input("Задайте количество элементов: "))): + a_list.append(input()) + +print('=' * 30) +last_el = None + + +if len( a_list )% 2 != 0: + last_el = a_list.pop(len(a_list) - 1) + +el = 0 +while el < len(a_list) -1: + a_list[el], a_list[el + 1] = a_list[el + 1], a_list[el] + el +=2 + + +if last_el != None: + a_list.append(last_el) + +print(a_list) From ec8f53409e20f03f06c1740c98603088871dd622 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Sun, 13 Dec 2020 01:08:15 +0300 Subject: [PATCH 5/8] Create lesson2_task_3.py --- lesson2_task_3.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 lesson2_task_3.py diff --git a/lesson2_task_3.py b/lesson2_task_3.py new file mode 100644 index 0000000..c472d47 --- /dev/null +++ b/lesson2_task_3.py @@ -0,0 +1,28 @@ +""" +3. Пользователь вводит месяц в виде целого числа от 1 до 12. Сообщить к какому времени года относится месяц (зима, весна, лето, осень). Напишите решения через list и через dict. +""" + +year_times_list: list = ['зима', 'весна', 'лето', 'осень'] +year_times_dict = { + 0: 'зима', + 1: 'весна', + 2: 'лето', + 3: 'осень', +} + +def range_limited_in(): + '''Проверяет введеные параметры в пределах 1 до 12''' + while True: + _input = input("\nВведите месяц в виде целого числа от 1 до 12:\n~ # ") + if _input.isdigit(): + _input = int(_input) + if 0 < _input < 13: + return _input + print("Ошибка: введены неверные параметры. Попробуйте еще раз!\n") + +month = range_limited_in() + +month = 0 if month == 12 else month # если месяц 12 то месяц 0 иначе без изменений + +print("Используя список: " + year_times_list[month // 3]) +print("Используя словарь: " + year_times_dict.get(month // 3)) From a910fa8efd21c35b8e0c93df25f94bbf09c563a4 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Tue, 15 Dec 2020 09:24:17 +0300 Subject: [PATCH 6/8] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=204=20=D0=B8=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson2_task_5.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lesson2_task_5.py diff --git a/lesson2_task_5.py b/lesson2_task_5.py new file mode 100644 index 0000000..ee0f4be --- /dev/null +++ b/lesson2_task_5.py @@ -0,0 +1,24 @@ +"""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].""" + +def my_rates(dd, value): + max_value = max(dd) + if value > max_value: + dd.insert(0,value) + elif value in dd: + print(f'(-dd[::-1].index(value)') + print(-dd[::-1].index(value)) + dd.insert(-dd[::-1].index(value), value) + else: + dd.append(value) + +my_list = [7, 5, 3, 3, 2] +print(my_list) +my_rates(my_list, 77) +print(my_list) +my_rates(my_list, 6) +print(my_list) From a76ca1f71edb8ff3b81d2de5de84629a62418844 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Tue, 15 Dec 2020 15:32:06 +0300 Subject: [PATCH 7/8] UPD --- debug.log | 0 lesson2_task_4.py | 10 ++++++++++ lesson2_task_5.py | 21 ++++++++++----------- 3 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 debug.log create mode 100644 lesson2_task_4.py diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..e69de29 diff --git a/lesson2_task_4.py b/lesson2_task_4.py new file mode 100644 index 0000000..f50582a --- /dev/null +++ b/lesson2_task_4.py @@ -0,0 +1,10 @@ +""" +4. Пользователь вводит строку из нескольких слов, разделённых пробелами. Вывести каждое слово с новой строки. Строки необходимо пронумеровать. Если в слово длинное, выводить только первые 10 букв в слове. +""" +b = input() + +b = b.split() +line = 0 +for i in b: + print(f'{line}: {i[:10]}') + line += 1 diff --git a/lesson2_task_5.py b/lesson2_task_5.py index ee0f4be..5855388 100644 --- a/lesson2_task_5.py +++ b/lesson2_task_5.py @@ -5,20 +5,19 @@ Пользователь ввел число 1. Результат: 7, 5, 3, 3, 2, 1. Набор натуральных чисел можно задать непосредственно в коде, например, my_list = [7, 5, 3, 3, 2].""" -def my_rates(dd, value): - max_value = max(dd) - if value > max_value: - dd.insert(0,value) - elif value in dd: - print(f'(-dd[::-1].index(value)') - print(-dd[::-1].index(value)) - dd.insert(-dd[::-1].index(value), value) +def my_rates(dd, us_input): + max_val = max(dd) + if us_input > max_val: + dd.insert(0,us_input) + elif us_input in dd: + dd.insert(-dd[::-1].index(us_input), us_input) else: - dd.append(value) + dd.append(us_input) my_list = [7, 5, 3, 3, 2] -print(my_list) my_rates(my_list, 77) -print(my_list) my_rates(my_list, 6) +my_rates(my_list, 4) +my_rates(my_list, 4) +my_rates(my_list, 5) print(my_list) From e3f5f65c45561dcb9ce0fb6217fadc0e0c446a42 Mon Sep 17 00:00:00 2001 From: gitddpsm <37410949+gitddpsm@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:40:50 +0300 Subject: [PATCH 8/8] Lesson 2 Task 6 --- .gitignore | 1 + debug.log | 1 + lesson2_task_6.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 lesson2_task_6.py diff --git a/.gitignore b/.gitignore index 879af15..362ac9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ class_work.py +debug.log diff --git a/debug.log b/debug.log index e69de29..44ecd3a 100644 --- a/debug.log +++ b/debug.log @@ -0,0 +1 @@ +[1215/093726.014:ERROR:directory_reader_win.cc(43)] FindFirstFile: . (0x3) diff --git a/lesson2_task_6.py b/lesson2_task_6.py new file mode 100644 index 0000000..a1f0d3f --- /dev/null +++ b/lesson2_task_6.py @@ -0,0 +1,53 @@ +""" +6. * Реализовать структуру данных «Товары». Она должна представлять собой список кортежей. Каждый кортеж хранит информацию об отдельном товаре. В кортеже должно быть два элемента — номер товара и словарь с параметрами (характеристиками товара: название, цена, количество, единица измерения). Структуру нужно сформировать программно, т.е. запрашивать все данные у пользователя. +Пример готовой структуры: +[ +(1, {“название”: “компьютер”, “цена”: 20000, “количество”: 5, “eд”: “шт.”}), +(2, {“название”: “принтер”, “цена”: 6000, “количество”: 2, “eд”: “шт.”}), +(3, {“название”: “сканер”, “цена”: 2000, “количество”: 7, “eд”: “шт.”}) +] +Необходимо собрать аналитику о товарах. Реализовать словарь, в котором каждый ключ — характеристика товара, например название, а значение — список значений-характеристик, например список названий товаров. +Пример: +{ +“название”: [“компьютер”, “принтер”, “сканер”], +“цена”: [20000, 6000, 2000], +“количество”: [5, 2, 7], +“ед”: [“шт.”] +} +""" +production_tmpl = { + 'название' : ("Наименование", str), + 'цена' : ('стоимость', int), + 'количество' : ('количество', int), + 'ед' : ('ед/мзм (шт)', str) +} + +next_enter = True + +auto_inc = 1 # инкрементирование — операция, увеличивающая переменную. +items_list = [] + +while next_enter: + item = {} + for key, value in production_tmpl.items(): + while True: + user_value = input(f'{value[0]}\n') + try: + user_value = value[1](user_value) # int (user_value) + except ValueError as e: + print(f'{e}\nWrong input type') + continue + item[key] = user_value + break + items_list.append((auto_inc, item)) + auto_inc += 1 + + while True: + choise = input("Добавить позицию? да/нет\n") + if choise.lower() in ('да' , 'нет'): + next_enter = choise.lower() == 'да' + break + else: + print('Невверный ввод, повторите') + +print(items_list)