#Протокол по теме 2 <Лазарев Данил Вячеславович>
1.Запуск оболочки IDLE
![](1.png)

2.Были рассмотрены операции присваивания значения объектам-переменным

![](2.png)
```
dir()

['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']

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']
```
2.1 Получим список существующих на данный момент объектов в среде IDLE.

![](4.png)

2.2 Получим список атрибутов объектjd x1 & x2

![](3.png)

2.3 Определим классвовую принадлежность объекта f2

![](5.png)

2.4 Удалим имеющиеся объекты и далее проверим их наличие в памяти
```
del f1,f2
```
![](6.png)

Исходя из полученного результата можно сделать вывод о том, что переменные были удалены.

3.Изучим правила именования объектов.
Правила именования:
- имена должны состоять из латинских букв, цифр и символов подчеркивания; 

- имена должны начинаться с латинской буквы (иногда могут начинаться с символа подчеркивания, но это – особый вид переменных); 

- имена не должны совпадать с ключевыми словами и встроенными идентификаторами языка Python; 

 большие и малые буквы в именах различаются (имена – чувствительные к регистру)! 
 
3.1 Запишем ряд простых переменных

![](7.png)

3.2 в последующих двух случаях мы видим нарушение праыил именование, из-за чего возникает ошибка

73sr = 3

![](8.png)
![](9.png)

4. Выведем список ключевых слов с помощью инструкции. Также сохраним полученный список с помощью переменной.


![](10.png)

5.Выведем список встроенных идентификаторов.

![](11.png)

5.1 Изучим ряд  приведенных выше функций:
а) Функция модуля:

![](12.png)

б) Функция длины(показывает длину строки, списка и др.)

![](13.png)

в) Функции максимума и минимума:

![](14.png)

г) Функция возведения в сетепень:

![](15.png)

д)Функция округления в большую сторону:

![](16.png)

е)Функция сортировки по критерию:

![](17.png)

ж)Функция суммирования:

![](18.png)

з)Функция zip(соединение):

![](19.png)

6.Убедимся, что малые и большие буквы в именах объектов различаются:

Присвоим сначение переменной G и выведем значения gg1 и Gg1:

![](20.png)

7.Изучим простые базовые типы объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str).

7.1. Логический тип.

![](21.png)

7.2. Другие простые типы:
Изучим их аналогично предыдущему примеру:

![](22.png)

7.3. Строка символов
Строки можно заключать в апострофы или двойные ковычки:
Также можно использовать экранированные последовательности, начинающиеся со знака \, например, \\, \', \", \t, \n.


![](23.png)


7.3.1 Создадим и выведем  строку по шаблону, предложенному в задании:


![](24.png)

7.3.2 Многострочные строки можно задавать в виде значения объекта с использованием тройных кавычек


![](25.png)


7.3.3 Можно обращаться к частям строки символов с использованием индексов символов по их порядку в строке. При этом надо учитывать, что нумерация символов начинается с 0.
С четвертого элемента можем пронаблюдать операцию «разрезания» или «создания среза», создающую новый объект: 


![](26.png)

7.4. Необходимо заметить, что строка является неизменяемым объектом:


![](27.png)


7.5 Однако имеем  возможность переопределить строку:


![](28.png)


Создадим объекты с разными срезами исходной строки ss1b

![](28.png)

Самостоятельно придумали объекты и отобразили их типы и значения:

![](29.png)

8.Изучим свойства более сложных типов объектов:

8.1.Списки:
Введем примеры списков:

![](30.png)

Списки можно вводить на нескольких строках:

![](31.png)

Используем индексы для обращения к элементам:

![](32.png)

или

![](33.png)

в данном случае идет обращение к элементам списка начиная с -8 с шагом 2

Изменим список, присвоим 1му его элеиенту новое значение:

![](34.png)

Измери дину списка  spis1:

![](36.png)

Запросим помощь в описани функции append и воспользуемся полученными сведениями:

![](37.png)

Воспользуемся другим способом добавления элемента в список:

![](38.png)

Добавим в конец списка spis1 строку ss1b и отобразим список.

![](39.png)

Удалим элемент в списке:
```
spis1.pop(1)
'Список'
[111,(5-9j),'New item', 'Меня именуют: \n <Лазарев Д.В.>']
```
Возможны и прочие методы работы над списками:
а)insert

![](40.png)

б)remove

![](41.png)

в)extend

![](42.png)

г)clear

![](43.png)

д)sort 

![](44.png)

е)reverse

![](45.png)

ж)copy

![](46.png)

з)count

![](47.png)

и)index

![](48.png)

Списки могут быть вложенными:

![](49.png)

Обращение к элементам вложенного списка и замена значения элемента такого списка:

![](50.png)

spis1 изменил своё значение в силу того, что над ним была произведена операция по замене переменной.

Придумаем и создадим объект-список , элементами которого будут объекты разных типов: число, строка, логическое значение, список.

![](51.png)

8.2 Кортежи

Создадим кортеж и переопределим его, так как изменению он не подлежит.

![](52.png)

Добавим ещё один элемент в картеж:

![](53.png)

Переопределим кортеж с удалением комплексного элемента с помощью срезов:

![](54.png)

Определим индекс заданного элемента и произведем подсчет числа вхождений заданного элемента в кортеж:

![](55.png)

Попробуем провести операцию замены элемента в котреже:
```
kort1[2] = 90
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    kort1[2] = 90
TypeError: 'tuple' object does not support item assignment
```
Однако возникнет ошибка,в силу неизменности кортежа.


Создадим объект-кортеж с элементами разных типов: число, строка, список, кортеж. 

![](56.png)

8.3. Словари.

Создаим словарь и обратимся к его элементу:

![](57.png)

Пополним словарь:

![](58.png)

Произведем сортировку двумя способами по методам keys & values

![](59.png)

Создадим несколько словарей, чтобы показать, что элеементы словаря могут быть любого типа:

![](60.png)

Создадим более сложный словарь из списка с элементами-кортежами с использованием функции dict

![](61.png)

Создадим словарь из двух списков: один для ключей и другой – для значений, с помощью функций dict и zip: 

![](62.png)

Самостоятельно составим объек объект-кортеж с 7 элементами и объект-список с 5 элементами и создадим из них словарь  с помощью функций dict и zip.

![](63.png)

5 - элеменов получится пять, ведь команда zip продолжала работать до тех пор пока не достигнет последнего элемента наименьшего из наборов.

Приведем пример словаря с описанием состава студентов, обучающихся на АВТИ: 

![](64.png)


8.4. Объект-множество.

Создадим множество:

![](65.png)

Определим число элементов множества:

![](66.png)

Определим наличие элемента во множестве:

![](67.png)

Добавим элемент во множество:

![](68.png)

Удалим элемент из множемтва:

![](69.png)

Самостоятельно составим объект-множество с элементами разных типов и попробуйте с ним выполнить разные операции. 

![](70.png)


9.Сохраним созданный текстовый файл в своем рабочем каталоге. Закончим сеанс работы со средой.