diff --git a/TEMA2/TEMA2report.md b/TEMA2/TEMA2report.md new file mode 100644 index 0000000..85ede4a --- /dev/null +++ b/TEMA2/TEMA2report.md @@ -0,0 +1,490 @@ +# Отчет по теме 2 + +Шинкаренко Варвара, А-02-23 + +## 1. Настройка рабочего каталога + +Перед началом работы со средой настроили рабочий каталог + +```py +import os +os.chdir('C:\\Users\\LENOVO\\Desktop') +``` + +## 2. Изучение простых объектов + +Присвоили значения двум объектам-переменным и рассмотрели разные способы их отображения: + +```py +f1 = 16; f2 = 3 +f1, f2 +(16, 3) +f1; f2 +16 +3 +``` + +Изучили как просмотреть все существующие объекты среды, а также как получить их атрибуты: + +```py +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os'] +dir(f1) +['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes'] +``` + +Определили классовую принадлежность объектов, а затем удалили их все и убедились в этом: + +```py +type(f2) + +f3 = 15.5 +type(f3) + +del f1, f2, f3 +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os'] +``` + +## 3. Изучение правил наименования объектов + +Ввели несколько правильных и неправильных вариантов: + +```py +gg1 = 1.6 +hh1 = 'Строка' +73sr = 3 +SyntaxError: invalid decimal literal +and = 7 +SyntaxError: invalid syntax +``` + +При неверных названиях появляется диагностическое сообщение. + +## 4. Изучение ключевых слов + +Вывели список ключевых слов и сохранили его в переменной kw: + +```py +import keyword +keyword.kwlist +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +kw = keyword.kwlist +kw +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +``` + +## 5. Изучение встроенных идентификаторов + +Сначала получили идентификаторов: + +```py +import keyword +keyword.kwlist +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +kw = keyword.kwlist +kw +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] + +``` + +После этого изучили несколько функций на практике: + +```py +abs(-10) +10 +len(kw) +35 +len(hh1) +6 +max(gg1, 3) +3 +min(gg1, 3) +1.6 +round(1.3) +1 +round(gg1) +2 +help(sorted) +Help on built-in function sorted in module builtins: + +sorted(iterable, /, *, key=None, reverse=False) + Return a new... +ww1 = [1, 8, 6, 10] +sorted(ww1) +[1, 6, 8, 10] +``` + +При необходимости пользовались командой help() + +## 6. Имена чувствительны к регистру + +Создали две схожие переменные, имена которых отличются только регистром некоторых букв. Вывели эти переменные и убедились, что в среде они действительно считаются разными: + +```py +Gg1 = 45 +Gg1 +45 +gg1 +1.6 +``` + +## 7. Изучение базовых типов объектов + +### 7.1 Логический тип (bool) +Создали две логические переменные + +```py +bb1 = True; bb2 = False +bb1; bb2 +True +False +type(bb1) + +``` +### 7.2 Изучили другие типы переменных + +```py +ii1 = -1234567890 +ff1 = -8.9876e-12 +dv = 0b1101010 +vsm1 = 0o52765 +shest1 = 0x7109af6 +ccl = 2-3j +a = 3.67; b = -0. +cc2 = complex(a,b) + +``` + +### 7.3 Изучили строку символов + +Для начала получили строку символов: + +```py +ss1 = 'Это - строка символ' +``` + +Затем получили более сложную кострукцию, воспользовавшись экранированными последовательностями: + +```py +ss1a = 'Это - \'строка символоов\',\n \t выводим на двух строках' +print(ss1a) +Это - 'строка символоов', + выводим на двух строках +ss1b = "Меня зовут: \n Шинкаренко В. А." +print (ss1b) +Меня зовут: + Шинкаренко В. А. +``` + +Изучили задание многострочных строк с использованием тройных кавык: + +```py + +mnogo = """Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее более сложный тип из тех, которые учавствуют в операции""" +print(mnogo) +Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее более сложный тип из тех, которые учавствуют в операции +``` + +Попробуем обратиться к элементам строки, используя индексы символов (нумерация начинается с 0): + +```py +ss1[0] +'Э' +ss1[8] +'р' +ss1[-2] +'о' +``` + +В последней строке отсчет ведется с конца строки. +Создадим с помощью той же команды новые объекты, обрезав уже существующий: + +```py +ss1[6:9] +'стр' # Символы от 6го до 8го (Символ с 9м индексом не входит) +ss1[13:] +'символ' # Часть строки от 13го индекса и до конца +ss1[13:13] +'' # Сам 13й символ +ss1[:13] +'Это - строка ' # Наоборот, с начала и до 13го символа +ss1[5:-8] +' строк' # Символы от 5го до 8го м конца +ss1[3:17:2] +' тоасм' # Символы с 3го индекса по 16й с шагом 2 +ss1[17:3:-2] +'омсаот ' # Символы с 17го по 3й, при этом шаг делается в обратном направлении +# Получается примерно тот же результат, если заменить 17 на -4 (главное, что четное) +ss1[-4:3:-2] +'мсаот ' +ss1[-6:3:-2] +'саот ' +ss1[-2:3:-2] +'омсаот ' +``` + +Попробуем изменить строку: + +```py +ss1 = ss1[:4]+'='+ss1[5:] +ss1 +'Это = строка символ' +``` + +Проведем все те же действия с другой строкой: + +```py +bb1 = ss1b[3] + ' - ' + ss1b[17:20] +bb1 +'я - кар' +bb2 = ss1b[3] + ' ' + ss1b[5:9] + ' ' + ss1b[15] + ss1b[17:20] + ss1b[28] +bb2 +'я зову икарА' +bb3 = ss1b[:10] + ss1b[13:16] + ss1b[17:20] + ss1b[21] + ss1b[23] +bb3 +'Меня зовут Шикарно' +``` + +Создали и отобразили несколько объектов разных типов: + +```py +x1 = 16 +type(x1) + +x2 = 12.4 +type(x2) + +x3 = 'Буквы' +type(x3) + +x4 = [1, 4, 9] +type(x4) + +x5 = ['one', 'two', 'three'] +type(x5) + +x6 = True +type(x6) + +x7 = True, False +type(x7) + + +x1 +16 +x2 +12.4 +x3 +'Буквы' +x4 +[1, 4, 9] +x5 +['one', 'two', 'three'] +x6 +True +x7 +(True, False) +``` + +## 8. Изучение более сложных типов объектов + +### 8.1 Тип объекта: список + +Изучили создание и отображение списков: + +```py +spis1 = [111, 'Spisok', 5-9j] +spis1 +[111, 'Spisok', (5-9j)] +stup = [0,0,1,1,1,1,1,1,1] +stup +[0, 0, 1, 1, 1, 1, 1, 1, 1] +spis = [9, 67, + 69, 75, 45, 30, + 100] +spis +[9, 67, 69, 75, 45, 30, 100] +spis[-2] +30 +stup[2:9] +[1, 1, 1, 1, 1, 1, 1] +spis[0] = 'Spisok' # Заменили один из элементов списка +spis +['Spisok', 67, 69, 75, 45, 30, 100] +len(spis) # Нашли длину списка +7 +``` + +Изучили методы списка: + +```py +help(spis1.append) +Help on built-in function append: + +append(object, /) method of builtins.list instance + Append object to the end of the list. + +spis1.append('New item') # Добавили элемент в конец списка +spis1 +[111, 'Spisok', (5-9j), 'New item'] +spis1 + ['New item'] # Добавил только временно +[111, 'Spisok', (5-9j), 'New item', 'New item'] +spis1 +[111, 'Spisok', (5-9j), 'New item'] +spis1.append(ss1b) +spis1 +[111, 'Spisok', (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.'] +spis1.pop(1) # Удалили один элемент +'Spisok' +spis1 +[111, (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.'] +spis1.insert(0, 'zero') # Вставляет элемент на место нужного индекса, все остальное двигает +spis1 +['zero', 111, (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.'] +spis1.remove(111) # Удаляет нужный элемент, если такого нет, выдает ошибку +spis1 +['zero', (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.'] + +spis1.extend('New item') # Расширяет список нужным элементом +spis1 +['zero', (5-9j), 'New item', 'Меня зовут: \n Шинкаренко В. А.', 'N', 'e', 'w', ' ', 'i', 't', 'e', 'm'] +ex1 = [-1, 20, -40, 15] # Сортировка без создания нового объекта +ex1.sort(key = abs, reverse = True) +ex1 +[-40, 20, 15, -1] +ex1.reverse() # Переворот наоборот +ex1 +[-1, 15, 20, -40] +excopy = ex1.copy() # Копирование объекта +excopy +[-1, 15, 20, -40] +ex1.index(-1) # Выдает индекс нужного элемента +0 +ex1.count(-40) # Количество нужных элементов +1 +ex1.clear() # Очищает объект +ex1 +[] +``` + +Изучили создание вложенных списков: + +```py +spis2 = [spis1, [1,2,3,4]] +spis2[0][1] +(5-9j) +spis2[1][0] +1 +spis2[0][1] = 78 +spis2 +[['zero', 78, 'New item', 'Меня зовут: \n Шинкаренко В. А.', 'N', 'e', 'w', ' ', 'i', 't', 'e', 'm'], [1, 2, 3, 4]] +spis1 # Первый список тоже изменился +['zero', 78, 'New item', 'Меня зовут: \n Шинкаренко В. А.', 'N', 'e', 'w', ' ', 'i', 't', 'e', 'm'] +# Собственный вложенный список: + +let = 'лет' +mne = ['м', 'н', 'е'] +age = 20 +mne = ['М', 'н', 'е'] +my_age = [mne, age, let, '!'] +my_age +[['М', 'н', 'е'], 20, 'лет', '!'] +``` + +### 8.2 Тип объекта: кортеж + +Изучили создание данного типа объекта и работу с ним: + +```py +kort1 = (222, 'Kortezh', 77 + 8j) +kort1 = kort1 + (ss1b,) +kort1 +(222, 'Kortezh', (77+8j), 'Меня зовут: \n Шинкаренко В. А.') +kort2 = kort1[:2] + kort1[3:] +kort2 +(222, 'Kortezh', 'Меня зовут: \n Шинкаренко В. А.') +kort1.index(222) +0 +kort1.count(222) +1 + +word = 'World' +coma = ',' +my_kortezh = ('H', 'e', 'l', 'l', 'o', coma, word, '!') +my_kortezh +('H', 'e', 'l', 'l', 'o', ',', 'World', '!') +``` + +### 8.3 Тип объекта: словарь + +Изучили способы создания и управления словарей: + +```py +dic1 = {'Saratov':145, 'Orel':56, 'Vologda':45} +dic1['Orel'] +56 +dic1['Pskov'] = 78 +dic1 +{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} +sorted(dic1.keys()) +['Orel', 'Pskov', 'Saratov', 'Vologda'] +sorted(dic1.values()) +[45, 56, 78, 145] +dic2 = {1:'mean', 2:'standart deviation', 3:'correlation'} +dic3 = {'statistics':dic2, 'POAS':['base', 'elementary', 'programming']} +dic3 +{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']} +dic3['statistics'][2] +'standart deviation' +dic4 = dict([(1, ['A', 'B', 'C']), (2, [4, 5]), ('Q', 'Prim'), ('Stroka', ss1b)]) +dic5 = dict(zip(['A', 'B', 'C', 'Stroka'], [16, -3, 9, ss1b])) + +# Мой словарь: +my_kortezh + +('H', 'e', 'l', 'l', 'o', ',', 'World', '!') +my_age + +[['М', 'н', 'е'], 20, 'лет', '!'] +my_dic = dict(zip(my_kortezh, my_age)) + +my_dic + +{'H': ['М', 'н', 'е'], 'e': 20, 'l': '!'} # Количество элементов соотвествует минимальному количеству эементов 2х объектов +``` + +### 8.4 Тип объекта: множество + +```py +mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} + +mnoz1 + +{'датчик', 'микропроцессор', 'линия связи', 'двигатель'} +len(mnoz1) # Нашли длину объекта + +4 +'датчик' in mnoz1 + +True +mnoz1.add('реле') # Добавили элементт + +mnoz1.remove('линия связи') # Удалили элемент + +mnoz1 + +{'двигатель', 'датчик', 'реле', 'микропроцессор'} +mnoz_mine = {52, 'Ночь', 'День', my_kortezh, 'Ночь'} + +mnoz_mine # Создали свой объект-множество + +{'Ночь', 52, 'День', ('H', 'e', 'l', 'l', 'o', ',', 'World', '!')} +mnoz_mine.remove('Ночь') +mnoz_mine.add('День') +mnoz_mine + +{52, 'День', ('H', 'e', 'l', 'l', 'o', ',', 'World', '!')} +``` + +## 9. Завершили сеанс работы. \ No newline at end of file diff --git a/TEMA2/TEMA2task.md b/TEMA2/TEMA2task.md new file mode 100644 index 0000000..fd50295 --- /dev/null +++ b/TEMA2/TEMA2task.md @@ -0,0 +1,73 @@ +# Общее контрольное задание по теме 2 + +## Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции + +## Решение + +```py +familia = 'Shinkarenko' +``` + +## Создать переменную со значением, совпадающим с первой буквой из familia + +## Решение + +```py +f = 'S' +``` + +## Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python + +## Решение + +```py +import keyword +sp_kw = keyword.kwlist +``` + +## Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка + +## Решение + +```py +sp_kw.remove('nonlocal') +sp_kw +['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] +``` + +## Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple + +## Решение + +```py +kort_nam = ('Андрей', 'Женя', 'Богдан') +type(kort_nam) + +``` + +## Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов + +## Решение + +```py +kort_nam = kort_nam + ('Артем', 'Стас') +kort_nam +('Андрей', 'Женя', 'Богдан', 'Артем', 'Стас') +``` + +## Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима» + +## Решение + +```py +kort_nam.count('Дима') +0 +``` + +## Создайте словарь dict_bas, в котором ключами являются русские названия типов перемен-ных, использованных в предыдущих операторах, а значениями – ранее созданные пере-менные, соответствующие этим типам + +## Решение + +```py +dict_bas = {'Список':'', 'Кортеж':('Андрей', 'Женя', 'Богдан', 'Артем', 'Стас'), 'Список':['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']} +``` \ No newline at end of file