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

584 строки
19 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.

### Отчёт по теме 3
Лазарев Данил, А-01-23
### 1.Запуск оболочки IDLE и установка рабочего каталога.
```
import os
os.chdir('C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA3\\')
```
### 2.Преобразование простых базовых типов объектов.
## 2.1. Преобразование в логический тип
```
logiz1 = bool(56)
logiz1
True
logiz2 = bool(0)
logiz2
False
logiz3 = bool("Beta")
logiz3
True
logiz4 = bool("")
logiz4
False
```
### 2.2. Преобразование объектов различных типов объектов в объект типа int/float
```
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#18>", line 1, in <module>
tt5 = int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
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. Преобразование десятичных чисел в другие системы счисления(двоичную,восьмеричную, и шестнадцатеричную), а также обратные преобразования
```
hh = 123
dv1 = bin(hh)
dv1
'0b1111011'
vos1 = oct(hh)
vos1
'0o173'
dhs1 = hex(hh)
shs1 = hex(hh)
shs1
'0x7b'
int(dv1,2)
123
int(vos1,8)
123
int(shs1,16)
123
```
### 3. Преобразование сложных типов обьектов в другие типы
### 3.1. Преобразование элементов в строку символов
```
strk1 = str(23.6)
strk1
'23.6'
strk2 = str(logiz3)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
strk2 = str(logiz3)
NameError: name 'logiz3' is not defined
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
```
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']
```
### 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple
```
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 strk5, kort8
strk5
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
kort8
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
Создадим строку в соответствии с заданием. Проведем над ней изложенные операции:
```
f = "LazarevDV"
m = list(f)
m
['L', 'a', 'z', 'a', 'r', 'e', 'v', 'D', 'V']
v = tuple(m)
v
('L', 'a', 'z', 'a', 'r', 'e', 'v', 'D', 'V')
w = str(f)
w
"('L', 'a', 'z', 'a', 'r', 'e', 'v', 'D', 'V')"
```
### 4. Арифметические операции
### 4.1. Изучены операции сложения и вычитания
```
12+7+90
109
5.689e-1 - 0.456
0.11289999999999994
23.6+54
77.6
14-56.7+89
46.3
```
### 4.2. Изучена операция умножения
```
-6.7*12
-80.4
```
### 4.3. Изучение операции деления
```
-234.5/6
-39.083333333333336
a=178/4
a
44.5
type(a)
<class 'float'>
```
Результатом всегда будет вещественное число
### 4.4. Изучение операции деления с округлением вниз
```
b=178//45
b
3
type(b)
<class 'int'>
c=-24.6//12.1
c
-3.0
type(c)
<class 'float'>
d = 27.1// 4
d
6.0
type(d)
<class 'float'>
p = -7 // 32
p
-1
type(p)
<class 'int'>
```
### 4.5. Изучение операции получения остатка от деления
```
148%33
16
12.6%3.8
1.2000000000000002
21.3%3
0.3000000000000007
```
### 4.6. Изучение операции возведения в степень
Возведение в степень целых и вещественных чисел
```
14**3
2744
e=2.7**3.6
e
35.719843790663525
32.1** 2
1030.41
2**3.11
8.633825892035416
```
Рассмотрим приведенные выше операции над комплексными числами
```
k1 = 2+2j
k2 = 1 +9j
k1+k2
(3+11j)
k1 -k2
(1-7j)
k1*k2
(-16+20j)
k1 / k2
(0.24390243902439027-0.1951219512195122j)
k1 // k2
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
k1 // k2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
k1//2
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
k1//2
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
k1%k2
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
k1%k2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
k2 % 2
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
k2 % 2
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
k1**4
(-64+0j)
k1**k2
(-0.001813524614321925-0.0015845209011050843j)
```
Заметим, что из всех операций не выполняются операции деления с остатком и округления вниз
### 5.Операции с двоичными представлениями целых чисел
### 5.1. Двоичная инверсия
```
dv1=9
dv2=~dv1
dv2
-10
```
### 5.2. Двоичное «И» (&) – побитовое совпадение
```
7 & 8 # 111 и 1000 = 0000
0
```
### 5.3. Двоичное «ИЛИ»
```
7|9 # 111 или 1001 = 1111
15
7|8     # 111 или 1000 = 1111
15
14|5 # 1110 или 0101 = 1111
15
```
### 5.4. Двоичное «исключающее ИЛИ»
```
14^5 # 1110 исключающее или 0101 = 1011
11
```
### 5.5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева
```
h=14
h
14
bin(h)
'0b1110'
g=h<<2
g
56
bin(g)
'0b111000'
g1 = h>>1
bin(g1)
'0b111'
g1
7
g2 = h>>2
g2
3
bin(g2)
'0b11'
l = 832
l << 2
3328
bin(3328)
'0b110100000000'
l
832
bin(l)
'0b1101000000'
bin(l<<7)
'0b11010000000000000'
bin(l>>7)
'0b110'
```
### 6. Операции при работе с последовательностями (строками, списками, кортежами)
### 6.1. Объединение последовательностей (конкатенация)
```
'Система '+'регулирования' #Соединение двух строк
'Система регулирования'
['abc','de','fg']+['hi','jkl'] # Объединение двух списков
['abc', 'de', 'fg', 'hi', 'jkl']
('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
('abc', 'de', 'fg', 'hi', 'jkl')
```
### 6.2. Повторение элементов обьекта различных типов
```
'ля-'*5
'ля-ля-ля-ля-ля-'
['ку','-']*3
['ку', '-', 'ку', '-', 'ку', '-']
('кис','-')*4
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
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]
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)
```
stroka='Система автоматического управления'
'автомат' in stroka #Наличие подстроки в строке
True
'ку' in ['ку','-']*3 #Наличие контекста в списке
True
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
False
```
### 6.4. Подстановка значений в строку с помощью оператора «%»
```
stroka='Температура = %g %s %g'
stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
```
### 7.Оператор присваивания
### 7.1. Обычное присваивание значения переменной
```
zz=-12
zz
-12
```
### 7.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
```
zz+=5
zz
-7
zz-=3
zz
-10
stroka='Система'
stroka+=' регулирования'
stroka
'Система регулирования'
```
### 7.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
```
zz/=2
zz
-5.0
zz*=5
zz
-25.0
stroka *= 3
stroka
'Система регулированияСистема регулированияСистема регулирования'
```
### 7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
```
p=27.3
p //= 2
p
13.0
p %= 3
p
1.0
p +=2
p**=2
p
9.0
```
### 7.5. Множественное присваивание
```
w=v=10
w,v
(10, 10)
n1,n2,n3=(11,-3,'all')
n1,n2,n3
(11, -3, 'all')
b1,b2,b3 = {"A":1,"B":2,"C":9}
b1,b2,b3
('A', 'B', 'C')
b1,b2,b3 = {"A","B","C"}
b1,b2,b3
('A', 'B', 'C')
b1,b2,b3= '123'
b1,b2,b3
('1', '2', '3')
```
### 8. Изучение логических операций
### 8.1. Операции сравнения
```
w=v=10
w==v
True
w != v
False
w >v
False
w <= v
True
w >= v
True
```
### 8.2. Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)
```
mnoz1={'pen','book','pen','iPhone','table','book'}
'book' in mnoz1
True
'cap' in mnoz1
False
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
'Vologda' in dic1
True
'Pskov' in dic1
False
56 in dic1.values()
True
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)
```
a=17
b=-6
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
(a<b) or ('book' in mnoz1)
True
(a != b) and ( a>b) and (a == 17)
True
```
### 8.4. Проверка ссылок переменных на один и тот же объект (is)
```
w=v=10 #переменные ссылаются на один и тот же объект в оперативной памяти
w is v
True
w1=['A','B']
v1=['A','B']
w1 is v1 В данном случае эти переменные не записаны в один адрес памяти, питон создает для списков два разных обьекта
False
```
### 9.Операции с объектами, выполняемые с помощью методов.
Создание строки и вывод её атрибутов
```
stroka='Микропроцессорная система управления'
dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__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. Методы работы со строками
```
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
```
strk1='Момент времени {}, значение = {}'
strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
strk2='Момент времени {1}, значение = {0}:{2}'
strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
strk3='Момент времени {num}, значение = {znch}'
strk3
'Момент времени {num}, значение = {znch}'
strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
```
### 9.2. Методы работы со списками
```
spisok = [1, 'book', 32.2, [21,32], 'sss']
dir(spisok)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
spisok
[1, 'book', 32.2, [21, 32], 'sss']
spisok.pop(2) # Удаление элемента из списка
32.2
spisok
[1, 'book', [21, 32], 'sss']
spisok.append('j') # добавление элемента j в конец списка
spisok
[1, 'book', [21, 32], 'sss', 'j']
spisok.insert(2,'i') #Добавление в список элемента i с индексом 2
spisok
[1, 'book', 'i', [21, 32], 'sss', 'c']
spisok.count('i') #Подсчёт числа элементов i, входящих в список
1
```
### 9.3. Методы работы с кортежами
```
kort1 = (1,3,'a',[2,1])
dir(kort1)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
kort1.index('a') #Нахождение индекса элемента в кортеже
2
kort1.count(1) #Подсчёт числа элементов 1, входящих в кортеж
1
```
### 9.4. Методы для работы со словарями
```
dd = {'A':19,'B':20,'C':21}
dir(dd)
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__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']
dd.keys() #Отображение ключей словаря
dict_keys(['A', 'B', 'C'])
dd.values() #Отображение значений словаря
dict_values([19, 20, 21])
dd.pop('A') #Удаление элемента словаря по ключу
19
dd
{'B': 20, 'C': 21}
```
### 9.5. Методы работы с множествами
```
mnoz = {"A","B","C",2,1}
dir(mnoz)
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__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']
mnoz.remove("A")
mnoz
{1, 2, 'C', 'B'}
```
### Завершение работы в среде IDLE