diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..362ac9b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ + +class_work.py +debug.log diff --git a/class_work.py b/class_work.py new file mode 100644 index 0000000..d80fabd --- /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 + diff --git a/debug.log b/debug.log new file mode 100644 index 0000000..44ecd3a --- /dev/null +++ b/debug.log @@ -0,0 +1 @@ +[1215/093726.014:ERROR:directory_reader_win.cc(43)] FindFirstFile: . (0x3) diff --git a/lesson2_task_1.py b/lesson2_task_1.py new file mode 100644 index 0000000..b486478 --- /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",None] +print(type(a_list)) + +#проверка типа данных каждого элемента. +for element in range(len(a_list)): + 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) 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)) 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 new file mode 100644 index 0000000..5855388 --- /dev/null +++ b/lesson2_task_5.py @@ -0,0 +1,23 @@ +"""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, 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(us_input) + +my_list = [7, 5, 3, 3, 2] +my_rates(my_list, 77) +my_rates(my_list, 6) +my_rates(my_list, 4) +my_rates(my_list, 4) +my_rates(my_list, 5) +print(my_list) 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)