Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

875 строки
34 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

Жалнин Вадим А-01-23
## 1. Запуск IDLE
## 2. Преобразование простых базовых типов объектов.
### 2.1. Преобразование в логический тип с помощью функции bool(<Объект>).
Примеры использования:
```python
>>>logiz1 = bool(56)
>>>logiz1
True
>>>logiz2 = bool(0)
>>>logiz2
False
>>>logiz3 = bool("Beta")
>>>logiz3
True
>>>logiz4 = bool(" ")
>>>logiz4
True
```
### 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления. осуществляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объект>]). По умолчанию система счисления принимается десятичной.
Примеры использования:
``` python
>>>tt1 = int(198.6) #Отбрасывается дробная часть
>>>tt1
198
>>>tt2 = int("-76")#Число – в строке символов, система по умолчанию - десятичная
>>>tt2
-76
>>>tt3 = int("B", 16)
>>>tt3
11
>>>tt4 = int("71", 8)
>>>tt4
57
>>>tt5 = int("98,76")
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
tt5 = int("98,76")
ValueError: invalid literal for int() with base 10: '98,76'
```
Как видно, выводится диагностическое сообщение. Строка "98.76" содержит десятичную точку, то есть это вещественное число в строковом формате.
int() не выполняет автоматическое отбрасывание дробной части для строк — это делается только если на вход подано вещественное число типа float, а не строка с точкой.
Исправить можно, преобразовав сначала строку в float, а затем в int:
```python
tt5 = int(float("98.76"))
```
Преобразование целых чисел или строк символов в вещественное число – с помощью функции float(<Объект>).
Примеры преобразований:
```python
>>>flt1 = float(789)
>>>flt1
789.0
>>>flt2 = float(-6.78e2)
>>>flt2
-678.0
>>>flt3 = float("Infinity")
>>>flt3
inf
>>>flt4 = float("-inf")
>>>flt4
-inf
```
### 2.3. Преобразование десятичных чисел в другие системы счисления:
```python
>>>hh=123
>>>hh
123
>>>dv1=bin(hh) #Преобразование в строку с двоичным представлением
>>>dv1
'0b1111011'
>>>vos1=oct(hh) # Преобразование в строку с восьмеричным представлением
>>>vos1
'0o173'
>>>shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением
>>>shs1
'0x7b'
```
Выполним обратные преобразования объектов dv1, vos1, shs1:
```python
>>>int(dv1,2)
123
>>>int(vos1, 8)
123
>>>int(shs1, 16)
123
```
## 3. Преобразования более сложных базовых типов объектов.
### 3.1. Преобразование в строку символов с помощью функции str(<Объект>).
Примеры использования:
```python
>>>strk1 = str(23.6)
>>>strk1
'23.6'
>>>strk2 = str(logiz3)
>>>strk2
'True'
>>>strk3 = str(["A", "B", "C"]) # Преобразуем список
>>>strk3
"['A', 'B', 'C']"
>>>strk4 = str(("A", "B", "C")) # Преобразуем кортеж
>>>strk4
"('A', 'B', 'C')"
>>>strk5=str({"A":1,"B":2,"C":9}) # Преобразуем словарь
>>>strk5
"{'A': 1, 'B': 2, 'C': 9}"
```
### 3.2. Преобразование элементов объекта в список с помощью функции list(<Объект>).
Примеры преобразований:
```python
>>>spis1=list("Строка символов") #Заданная строка разделяется на символы
>>>spis1
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
>>>spis2=list((124,236,-15,908)) #Кортеж превращается в список
>>>spis2
[124, 236, -15, 908]
>>>spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список
>>>spis3
['A', 'B', 'C']
```
Инструкция, обеспечивающую создание из того же словаря списка с другими его частями:
```python
>>>spis4 = list({"A":1,"B":2,"C":9}.values())
>>>spis4
[1, 2, 9]
```
### 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).
Примеры преобразований
```python
>>>kort7=tuple('Строка символов') #Преобразование строки символов в кортеж
>>>kort7
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
>>>kort8=tuple(spis2) #Преобразование списка в кортеж
>>>kort8
(124, 236, -15, 908)
>>>kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж
>>>kort9
('A', 'B', 'C')
```
### 3.4. Удаление объектов.
Очистить оперативную память от ранее созданных объектов можно с помощью инструкции del.
Пример:
```python
>>>del strk5, kort8
>>>strk5
Traceback (most recent call last):
File "<pyshell#77>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>>kort8
Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
Создание строки со своей фамилией и инициалами, преобразование её в список, затем список – в кортеж и, наконец, кортеж – в строку. .
```python
>>>fio = "Zhalnin VY"
>>>fio
"Zhalnin VY"
>>>fio_list = list(fio)
>>>fio_list
['Z', 'h', 'a', 'l', 'n', 'i', 'n', ' ', 'V', 'Y']
>>>fio_tuple = tuple(fio_list)
>>>fio_tuple
('Z', 'h', 'a', 'l', 'n', 'i', 'n', ' ', 'V', 'Y')
>>>fio_string = str(fio_tuple)
>>>fio_string
"('Z', 'h', 'a', 'l', 'n', 'i', 'n', ' ', 'V', 'Y')"
```
## 4. Арифметические операции.
### 4.1. Сложение и вычитание (+ и -)
```python
>>>12+7+90 # Сложение целых чисел
109
>>>5.689e-1 - 0.456 #Вычитание вещественных чисел
0.11289999999999994
>>>23.6+54 #Сложение вещественного и целого чисел
77.6
>>>14-56.7+89 # Сложение и вычитание целых и вещественных чисел
46.3
```
### 4.2. Умножение (*)
```python
>>>-6.7*12 #Умножение вещественного числа на целое число
-80.4
```
### 4.3. Деление (/). (Результатом деления всегда будет вещественное число!)
```python
>>>-234.5/6 #Деление вещественного числа на целое
-39.083333333333336
>>>a=178/45 #Деление двух целых чисел – проверьте тип объекта a!
a
3.9555555555555557
type(a)
<class 'float'>
```
### 4.4. Деление с округлением вниз (//).
Здесь результат может быть целым или вещественным. В нижеследующих операциях определите тип результата.
```python
>>>b=178//45 #Деление двух целых чисел
>>>b
3
>>>type(b)
<class 'int'>
>>>c=-24.6//12.1 #Деление двух вещественных чисел
>>>c
-3.0
>>>type(c)
<class 'float'>
>>>zz1 = 78.4 / 16
>>>zz1
4.9
>>>type(zz1)
<class 'float'>
>>>zz2 = 78.4 // 16
>>>zz2
4.0
>>>type(zz2)
<class 'float'>
>>>zz3 = 78 // 16
>>>zz3
4
>>>type(zz3)
<class 'int'>
```
### 4.5. Получение остатка от деления (%).
```python
>>>148 % 33 #Остаток от деления двух целых чисел
16
>>>12.6 % 3.8 #Остаток от деления двух вещественных чисел
1.2000000000000002
1.2000000000000002
>>>36 % 12
0
>>>36.98 % 23.56
>>>13.419999999999998
```
### 4.6. Возведение в степень (* *).
```python
>>>14**3
2744
>>>e=2.7**3.6 #Вещественное число возводится в вещественную степень
>>>e
35.719843790663525
```
Попробуем проделать арифметические операции над комплексными числами. Создадим два
комплексных числа.
```python
>>>comp1 = (5 + 3j)
>>>comp1
(5+3j)
>>>type(comp1)
<class 'complex'>
>>>comp2 = (10 - 5j)
>>>comp2
(10-5j)
>>>type(comp2)
<class 'complex'>
```
Сложение:
```python
>>>comp1 + comp2
(15-2j)
```
Вычитание:
```python
>>>comp1 - comp2
(-5+8j)
```
Умножение:
```python
>>>comp1 * comp2
(65+5j)
```
Деление:
```python
>>>comp1 / comp2
(0.28+0.44j)
```
Целочисленное деление:
```python
>>>comp1 // comp2
Traceback (most recent call last):
File "<pyshell#129>", line 1, in <module>
comp1 // comp2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
>>>comp1 // 2
Traceback (most recent call last):
File "<pyshell#130>", line 1, in <module>
comp1 // 2
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
```
Как видим, целочисленное деление нельзя применять к комплексным числам.
Взятие остатка от деления:
```python
>>>comp1 % comp2
Traceback (most recent call last):
File "<pyshell#131>", line 1, in <module>
comp1 % comp2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
>>>comp1 % 2
Traceback (most recent call last):
File "<pyshell#132>", line 1, in <module>
comp1 % 2
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
```
Как видим, взятие остатка от деления нельзя применять к комплексным числам.
Возведение в степень:
```python
>>>comp1 ** comp2
(-652921189.7700557+180781145.7454619j)
>>>comp1**5
(-6100+2868j)
```
## 5. Операции с двоичными представлениями целых чисел.
### 5.1. Двоичная инверсия (~).
Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0).
```python
>>>dv1 = 9
>>>dv2 = ~dv1
>>>dv2
-10
>>>bin(dv1)
'0b1001'
>>>bin(dv2)
'-0b1010'
```
### 5.2. Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел
```python
>>>bin(7&9)
'0b1'
```
Совпадение единиц только в первом разряде, поэтому итог - 0001 или просто 1
```python
>>>bin(7&8)
'0b0'
```
Совпадений единиц нет, итог - 0000 или просто 0
### 5.3. Двоичное «ИЛИ» (|)
Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0
```python
bin(7|9) # 111 или 1001 = 1111
'0b1111'
bin(7|8) # 111 или 1000 = 1111
'0b1111'
bin(14|5) # 1110 или 0101 = 1111
'0b1111'
```
### 5.4. Двоичное «исключающее ИЛИ»(^)
Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1.
```python
>>>bin(14^5) # 1110 исключающее или 0101 = 1011
'0b1011'
```
Значение в десятичном представление:
```python
>>>14^5
11
```
### 5.5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.
```python
>>>h=14 #Двоичное представление = 1110
>>>bin(h)
'0b1110'
>>>g=h<<2 # Новое двоичное представление = 111000
>>>g
56
bin(g)
'0b111000'
>>>g1=h>>1 # Новое двоичное представление = 0111
>>>g1
7
bin(g1)
'0b111'
>>>g2=h>>2 # Новое двоичное представление = 0011
>>>g2
3
bin(g2)
'0b11'
```
Придумайте два двоичных числа, не менее чем с 7 знаками, и попробуйте выполнить с ними разные операции.
Возьмем два двоичных числа:
1011001 (в десятичной системе это 89)
10001001 (в десятичной системе это 137)
1. Двоичная инверсия
```python
>>>~89
-90
>>>bin(~89)
'-0b1011010'
```
2. Двоичное "И"
```python
>>>bin(89 & 137)
'0b1001'
```
3. Двоичное "ИЛИ"
```python
>>>bin(89 | 137)
'0b11011001'
```
4. Двоичное "исключающее ИЛИ"
```python
>>>bin(89^137)
'0b11010000'
```
5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.
```python
>>>89 >> 2
22
>>>bin(89 >> 2)
'0b10110'
>>>137 << 3
1096
>>>bin(137 << 3)
'0b10001001000'
```
## 6. Операции при работе с последовательностями (строками, списками, кортежами).
### 6.1. Объединение последовательностей (конкатенация)(+)
```python
>>>'Система '+'регулирования' #Соединение двух строк символов
'Система регулирования'
>>>['abc','de','fg']+['hi','jkl'] # Объединение двух списков
['abc', 'de', 'fg', 'hi', 'jkl']
>>>('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
('abc', 'de', 'fg', 'hi', 'jkl')
```
### 6.2. Повторение (*)
```python
>>>'ля-'*5 #Повторение строки 5 раз
'ля-ля-ля-ля-ля-'
>>>['ку','-']*3 #Повторение списка 3 раза
['ку', '-', 'ку', '-', 'ку', '-']
>>>('кис','-')*4 #Повторение кортежа 4 раза
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
```
Создание списка со 100 отсчетами сигнала-ступеньки:
```python
>>>signal1=[0]*3+[1]*99
>>>signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
```
Создание кортежа с отсчетами сигнала – импульса:
```python
>>>signal2=(0,)*3+(1,)*5+(0,)*7
>>>signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
```
### 6.3. Проверка наличия заданного элемента в последовательности (in)
```python
>>>stroka='Система автоматического управления'
'автомат' in stroka #Наличие подстроки в строке
True
>>>'ку' in ['ку','-']*3 #Наличие контекста в списке
True
>>>'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
False
```
### 6.4. Подстановка значений в строку с помощью оператора «%»
```python
>>>stroka='Температура = %g %s %g'
'Температура = %g %s %g'
>>>stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
```
Вставка с использованием данных из словаря.
```python
>>>stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>>stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
## 7. Оператор присваивания
### 7.1. Обычное присваивание значения переменной (=)
```python
>>>zz=-12
>>>zz
-12
```
### 7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
```python
>>>zz+=5 # Значение zz увеличивается на 5
>>>zz
-7
>>>zz-=3 # Значение уменьшается на 3
>>>zz
-10
```
Для последовательностей операция (+=) означает конкатенацию текущего значения объекта с заданным дополнением.
```python
>>>stroka = 'Система'
>>>stroka
'Система'
>>>stroka += ' регулирования'
>>>stroka
'Система регулирования'
```
### 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```python
>>>zz /= 2
>>>zz
-5.0
>>>zz*= 5
>>>zz
-25.0
>>>per = 2
>>>per*=10
>>>per
20
```
### 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=).
```python
>>>zz //= 2
>>>zz
-13.0
>>>zz %= -2
>>>zz
-1.0
>>>per **= 4
>>>per
160000
```
### 7.5. Множественное присваивание
w=v=10 # Переменным присваивается одно и то же значение
n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа
Самостоятельно проверьте, можно ли вместо кортежа справа использовать строку, список, словарь, множество?
1) Присваивание одного значения двум переменным
```python
>>>w = v =10
>>>w, v
(10, 10)
```
2) Присваивание кортежем
```python
n1, n2, n3 = (11, -3, 'all')
n1, n2, n3
(11, -3, 'all')
```
3) Присваивание строкой
```python
>>>a1, a2, a3 = 'red', 'black' , 'blue'
>>>a1, a2, a3
('red', 'black', 'blue')
```
4) Присваивание списком
```python
>>>b1, b2, b3 = ["s", 67, None]
>>>b1, b2, b3
('s', 67, None)
>>>b3
>>>type(b3)
<class 'NoneType'>
```
5) Присваивание словарем
```python
>>>c1, c2, c3 = {"one": 1, "two": 2, "three": 3}
>>>c1, c2, c3
('one', 'two', 'three')
```
По умолчанию в словарях итерируются именно ключи. Если нужно задать значения, надо
указать дополнительно ".value":
```python
>>>c1, c2, c3 = {"one": 1, "two": 2, "three": 3}.values()
>>>c1, c2, c3
(1, 2, 3)
```
Если в каждую переменную надо положить именно и ключ, и значение одновременно, можно
использовать метод .items(), который каждую пару(ключ-значение) распределяет в отдельный
кортеж
```python
>>>d1, d2, d3 = {"one": 1, "two": 2, "three": 3}.items()
>>>d1
('one', 1)
>>>d2
('two', 2)
>>>d3
('three', 3)
```
6) Присваивание множеством
```python
>>>m1, m2, m3 = {100, 23, 59}
>>>m1, m2, m3
(59, 100, 23)
```
## 8. Логические операции
### 8.1. Операции сравнение: равенство (= =), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=)
```python
>>>w == v
True
>>>w != v
False
>>>w < v
False
>>>w > v
False
>>>w >= v
True
```
Другие примеры:
```python
>>>0 == False
True
>>>0 == True
False
>>>100 != 1000
True
>>>1200 > 100
True
>>>1200 < 1000
False
>>>1200 >= 1000
True
```
### 8.2. Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in).
Операции с множеством
```python
>>>mnoz1={'pen','book','pen','iPhone','table','book'}
>>>'book' in mnoz1
True
>>>'cap' in mnoz1
False
```
Операции со словарем
```python
>>>dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>>'Vologda' in dic1
True
>>>'Pskov' in dic1
False
>>>56 in dic1.values()
True
```
Ещё пример работы со словарем:
```python
>>>dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
>>>dct1
{'Institut': ['AVTI', 'IEE', 'IBB'], 'Depart': ['UII', 'PM', 'VMSS', 'MM'], 'gruppa': ['A-01-15', 'A-02-15']}
>>>'UII' in dct1['Depart']
True
>>>dct1['Depart'][1] == 'MM'
False
```
### 8.3. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
```python
>>>a=17
>>>b=-6
>>>(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
```
Собственные примеры:
```python
>>>((145) in dic1.values()) and not ('Rostov' in dic1)
True
>>>not(len(dic1) == 3) or (sum(dic1.values()) > 300) or ('ITAE' in dct1['Depart'])
False
```
### 8.4. Проверка ссылок переменных на один и тот же объект (is).
w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
```python
>>>w is v
True
>>>w1 = ['A', 'B']
>>>v1 = ['A', 'B']
>>>w1 is v1
```
Но при этом:
``` python
False
>>>w1 == v1
True
```
Основная разница "= =" и "is":
- is проверяет, являются ли две переменные ссылками на один и тот же объект в памяти
- == проверяет, равны ли значения объектов (содержимое одинаковое)
Переменные целочисленного типа были созданы в одну строку и имеют один и тот же адрес в памяти. `Словари были созданы в разных строках, и адреса разные, т.е. они ссылаются на разные участки в памяти, поэтому is возвращает False.
## 9. Операции с объектами, выполняемые с помощью методов.
Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например,
```python
>>>stroka = 'Микропроцессорная система управления'
>>>dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
```
### 9.1. Методы для работы со строками.
``` python
>>>stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
5
>>>stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
4
>>>stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>>spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
>>>spis22
['Микропроцессорная', 'система', 'управления']
>>>stroka.upper() #Возвращает строку со всеми заглавными буквами
>>>stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
>>>stroka3
'Микропроцессорная система управления'
>>>stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
('Микропроце', 'с', 'сорная система управления')
>>>stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
('Микропроцессорная си', 'с', 'тема управления')
```
Изучим метод format.
```python
>>>strk1 = 'Момент времени {}, значение = {}'
>>>strk1
'Момент времени {}, значение = {}'
>>>strk1.format(1, 89.7)
'Момент времени 1, значение = 89.7'
```
Можно указать порядок:
```python
>>>strk2='Момент времени {1}, значение = {0}:{2}'
>>>strk2
'Момент времени {1}, значение = {0}:{2}'
>>>strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
```
Порядок подстановки: сначала подставляется второй аргумент, потом первый и затем третий
Теперь зададим следующую строку:
```python
>>>strk3='Момент времени {num}, значение = {znch}'
>>>strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
В этом варианте порядок аргументов не обязательно соответствует порядку вставок в строке.
### 9.2. Методы для работы со списками.
Создайте произвольный список spsk, не менее чем с 5 элементами. Отобразите его атрибуты.
Последовательно обратитесь к методам этого списка с отображением каждый раз полученного списка:
```python
spsk = ["blue", 163, (1, 2), "green", 78.69] #Создаем список
spsk.pop(2) #Удаляем второй элемент из списка
(1, 2) #Удаленный элемент
spsk
['blue', 163, 'green', 78.69]
spsk.append('c') #Добавляем элемент в список, по умолчанию добавляется в конец
spsk
['blue', 163, 'green', 78.69, 'c']
spsk.insert(2, 'a') #Добавление элемента в список с индексом два
spsk
['blue', 163, 'a', 'green', 78.69, 'c']
spsk.count('a') #Подсчет элементов 'a' в списке
1
```
### 9.3. Создание кортежа и изучение создания его методов.
```python
>>>cort = ('abc', 52.3, 'a', 167, 3 + 2j)
>>>dir(cort)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>>cort.count('a')
1
>>>cort.index(3+2j)
4
```
Благодаря функции dir видим, что кортеж имеет меньше атрибутов чем список.
### 9.4. Методы словарей и множеств.
- Методы словарей
Возьмем уже ранее использованный словарь dic1
```python
>>>dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
>>>dic1.keys() # Возвращение объектов, состоящих только из ключей.
>>>dict_keys(['Saratov', 'Orel', 'Vologda'])
>>dir(dic1)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>>dic1.items() #Возвращение кортежей из пар ключ-значение
>>>dict_items([('Saratov', 145), ('Orel', 56), ('Vologda', 45)])
>>>dic1.get("Saratov") #Возвращение значения по ключу
145
>>>dic1.values() #Возвращение объекта только из значений
>>>dict_values([145, 56, 45])
>>>dic1["key4"] = 49 #Вызов значения по ключу
>>>dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'key4': 49}
>>>dic1_k = dic1.keys() #Создание отдельного объекта, чтобы положить в него dict_keys
>>>dic1_k
>>>dict_keys(['Saratov', 'Orel', 'Vologda', 'key4'])
>>>dic1.popitem() #Удаление последнего добавленного элемента
('key4', 49)
>>>dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
>>>dic1_k
>>>dict_keys(['Saratov', 'Orel', 'Vologda'])
>>>dic1.pop("Orel") #Удаление ключа и возвращение значения
56
```
- Методы множеств
```python
>>>mn = {1, "per", 35.8, "red", True, 153} #Создаем множество
>>>mn
{1, 35.8, 'per', 153, 'red'}
>>>dir(mn)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
>>>mn.add(6+3j) #Добавление элемента в конец множества
>>>mn
{1, 35.8, 'per', 153, 'red', (6+3j)}
>>>mn.remove(1) #Удаление элемента по значению
>>>mn
{35.8, 'per', 153, 'red', (6+3j)}
>>>mn.discard("red") #Удаление элемента по значению с возвратом None при отсутствии
>>>mn
{35.8, 'per', 153, (6+3j)}
{35.8, 'per', 153, (6+3j)}
>>>print(mn.discard(1000))
None
>>>mn.pop() #Удаление и возвращение случайного элемента из множества
35.8
>>>mn
{'per', 153, (6+3j)}
>>>mn.update({63, "klumba"}) #Добавление элементов
>>>mn
{'klumba', 'per', 153, 63, (6+3j)}
```
## 10. Сохранение созданного текстового файла протокола в своем рабочем каталоге. Завершение сеанса работы с IDLE.