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

806 строки
24 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
### 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 Преобразование в целое десятичное число объекта с заданной системой счисления
```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'
```
В последней инструкции `tt5=int("98.76")` возникает ошибка, потому что функция `int()` ожидает строку, представляющую целое число, а не вещественное (дробное) число.
Функция `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
>>> dv1=bin(hh) #Преобразование в строку с двоичным представлением
>>> dv1
'0b1111011'
>>> vos1=oct(hh) # Преобразование в строку с восьмеричным представлением
>>> vos1
'0o173'
>>>shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением
>>> shs1
'0x7b'
>>> 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
>>> spis31=list({"A":1,"B":2,"C":9}.values())
spis31
[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 Удаление объектов
```python
>>> del strk5, kort8
>>> strk5
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
strk5
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
>>> kort8
Traceback (most recent call last):
File "<pyshell#66>", line 1, in <module>
kort8
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
```
##### Создание строки с фамилией и инициалами и ее преобразования
``` python
>>> fam = "Podolsky"
>>> im = "N"
>>> ot = "K"
>>> fio = fam + im+ ot
>>> fio
'PodolskyNK'
>>> listfio=list(fio)
>>> listfio
['P', 'o', 'd', 'o', 'l', 's', 'k', 'y', 'N', 'K']
>>> kort = tuple(listfio)
>>> kort
('P', 'o', 'd', 'o', 'l', 's', 'k', 'y', 'N', 'K')
>>> strkfio = str(kort)
>>> strkfio
"('P', 'o', 'd', 'o', 'l', 's', 'k', 'y', 'N', 'K')"
```
### 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'>
>>> z = 52 // 2.5
>>> z
20.0
>>> type (z)
<class 'float'>
>>> zz = 52.5 // 7
>>> zz
7.0
>>> type (zz)
<class 'float'>
```
#### 4.5 Получение остатка от деления (%)
``` python
>>> 148%33 #Остаток от деления двух целых чисел
16
>>> 12.6%3.8 #Остаток от деления двух вещественных чисел
1.2000000000000002
>>> 148 % 3.8
3.6000000000000068
>>> 12.6 % 3
0.5999999999999996
```
#### 4.6.  Возведение в степень **
``` python
>>> 14**3 #Целое число возводится в целую степень148 % 3.8
2744
>>> e=2.7**3.6 #Вещественное число возводится в вещественную степень
>>> e
35.719843790663525
>>> 5**2.5
55.90169943749474
>>> 2.5**5
97.65625
```
##### Другие арифметические операции над комплексными числами
###### Сложение
``` python
>>>> z1 = 2 + 3j
>>> z2 = 4 - 5j
>>> sum_result = z1 + z2
>>> sum_result
(6-2j)
```
###### Вычитание
``` python
>>> sub_result = z1 - z2
>>> sub_result
(-2+8j)
```
###### Умножение
``` python
>>> mul_result = z1 * z2
>>> mul_result
(23+2j)
```
###### Деление
``` python
>>> delen = z1 / z2
>>> delen
(-0.17073170731707318+0.5365853658536587j)
```
###### Возведение в степень
``` python
>>> e = 5**(2+1j) # Получится комплексное число (complex)
>>> e
(-0.9657992483483834+24.98133767058701j)
>>> f = (3+4j)**2 # Получится комплексное число (complex)
>>> f
(-7+24j)
>>> g = (2+3j)**1.5 # Получится комплексное число (complex)
>>> g
(0.6603660276815663+6.814402636366296j)
```
###### Деление с округлением вниз
``` python
>>> z1 // z2
Traceback (most recent call last):
File "<pyshell#135>", line 1, in <module>
z1 // z2
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
>>> z1 // 2
Traceback (most recent call last):
File "<pyshell#136>", line 1, in <module>
z1 // 2
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
```
Видим, что деление с округлением вниз нельзя использовать с комплексными числами
###### Взятие остатка от деления
``` python
>>> z1 % z2
Traceback (most recent call last):
File "<pyshell#137>", line 1, in <module>
z1 % z2
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
>>> z1 % 2
Traceback (most recent call last):
File "<pyshell#138>", line 1, in <module>
z1 % 2
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
```
Взятие остатка от деления нельзя так же применять к комплексным числам
### 5. Операции с двоичными представлениями целых чисел
#### 5.1 Двоичная инверсия (~)
``` python
>>> dv1=9
>>> dv2 = ~dv1
>>> dv2
-10
>>> bin(dv1)
'0b1001'
>>> bin(dv2)
'-0b1010'
```
#### 5.2 Двоичное И (&)
``` python
>>> bin(7&9)
'ob1'
>>> bin (7&8)
'0b0'
```
#### 5.3 Двоичное ИЛИ (|)
``` python
>>> bin(7|9) # 111 или 1001 = 1111
'0b1111'
>>> bin(7|8) # 111 или 1000 = 1111
'0b1111'
>>> bin(14|5) # 1110 или 0101 = 1111
'0b1111'
```
#### 5.4 Двоичное исключающее ИЛИ (^)
``` python
>>> bin(14^5) # 1110 исключающее или 0101 = 1011
'0b1011'
>>>14^5
11
```
#### 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.
``` python
>>> h=14
>>> 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'
```
``` python
a = 0b1011101 # это 93 в десятичной системе
b = 0b1100110 # это 102 в десятичной системе
```
##### Инверсия
``` python
>>> ainv = ~a
>>> binv = ~b
>>> ainv
-94
>>> binv
-103
>>> bin(a)
'0b1011101'
>>> bin (b)
'0b1100110'
```
##### Двоичное И
``` python
>>> andres = a & b
>>> andres
68
>>> bin(andres)
'0b1000100'
```
##### Двоичное ИЛИ
``` python
>>> orres = a | b
>>> orres
127
>>> bin(orres)
'0b1111111'
```
##### Двоичное исключающее ИЛИ
``` python
>>> isclres = a ^ b
>>> isclres
59
>>> bin(isclres)
'0b111011'
```
##### Сдвиг влево на 2 разряда
``` python
>>> shleft = a << 2
>>> shleft
372
>>> bin(shleft)
'0b101110100'
```
##### Сдвиг вправо на 3 разряда
``` python
>>> shright = b >> 3
>>> shright
12
>>> bin(shright)
'0b1100'
```
### 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 раза
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> 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)
``` python
>>> stroka='Система автоматического управления'
'автомат' in stroka #Наличие подстроки в строке
True
>>> 'ку' in ['ку','-']*3 #Наличие контекста в списке
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
False
```
#### 6.4 Подстановка значений в строку с помощью оператора "%"
``` python
>>> 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 Обычное присваивание значения переменной (=)
```python
zz = -12
```
#### 7.2 Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
``` python
>>> zz+=5 # Значение zz увеличивается на 5
>>> zz
-7
>>> zz -= 3 # Значение zz уменьшается на 3
>>> zz
-10
```
``` python
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> stroka
'Система регулирования'
```
#### 7.3 Умножение текущего значения переменной на заданную величину ( * = ) или деление (/=)
``` python
>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
```
``` python
>>> stroka2='привет'
>>> stroka2*=3
>>> stroka2
'приветприветпривет'
```
#### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(** =)
``` python
>>> zz //= 2
>>> zz
-13.0
>> zz %= -2
>> zz
-1.0
>> step = 21
>> step **= 4
>> step
194481
```
#### 7.5 Множественное присваивание
``` python
>>> w=v=10 # Переменным присваивается одно и то же значение
>>> n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа
```
##### Присваивание кортежу
``` python
>>> a1, a2, a3 = "a", "b", "c" # Строка
>>> a1, a2, a3
('a', 'b', 'c')
>>> b1, b2, b3 = ["a", 1, None] # Список
>>> b1
'a'
>>> b3
>>> c1, c2, c3 = {"one": 1, "two": 2, "three": 3} # Словарь
>>> c1, c2, c3
('one', 'two', 'three')
>>> m1, m2, m3 = {52, 0, 3} # Множество
>>> m1, m2, m3
(0, 3, 52)
```
### 8. Логические операции - при создании логических выражений, дающих в результате вычисления значения  True или False
#### 8.1 Операции сравнение: равенство ( = = ), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=)
``` python
>>> w
10
>>> v
10
>>> w==v # Равенство
True
>>> w!=v # Не равно
False
>>> w<v # Меньше
False
>>> w<=v # Меньше или равно
True
```
#### 8.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)
##### Операции с множеством
``` python
>>> 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 Создание больших логических выражений с использованием соединительных слов.
``` python
>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
```
```python
>>> (a < 20 or b == -6) and not ('pen' in mnoz1)
False
>>> not (a == 0) and ('Moscow' in dic1 or 'book' not in mnoz1)
False
```
#### 8.4 Проверка ссылок переменных на один и тот же объект (is)
``` python
>>> w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
>>> w is v
True
>>> w1=['A','B']
>>> w1
['A', 'B']
>>> v1=['A','B']
>>> v1
['A', 'B']
>>> w1 is v1
False
```
Когда создаю переменные w и v с одним числом, они ссылаются на один и тот же объект в памяти, поэтому `w is v` выдаёт True.
А когда создаю два одинаковых списка, w1 и v1, то это уже два разных объекта, хоть и одинаковых по содержанию, поэтому `w1 is v1` выдаёт False.
### 9. Операции с объектами, выполняемые с помощью методов
``` python
>>> 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 Методы для работы со строками
``` 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 применяется для красивого и удобного подставления данных внутрь строки. В строке делаются специальные “места” — фигурные скобки {}, а внутрь них можно подставить значения через `.format(...)`.
``` python
>>> strk1='Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
```
``` python
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
```
#### 9.2 Методы для работы со списками
``` python
>>> spsk = ["apple", 52, (6, 9), "macbook", 52.52] #Создаю произвольный список
>>> spsk.pop(2) # Удаляет элемент с индексом 2
(6, 9)
>>> spsk.append('c') # Добавляет в конец списка элемент 'c'
>>> spsk
['apple', 52, 'macbook', 52.52, 'c']
>>> spsk.insert(2,'a') # Вставляет элемент 'a' на место индекса 2
>>> spsk
['apple', 52, 'a', 'macbook', 52.52, 'c']
>>> spsk.count('a') # Подсчитывает количество 'a', которые встречаются в списке
1
```
#### 9.3 Самостоятельно создайте кортеж и изучите применение его методов.
``` python
>>> my_tuple = (5, 2, 7, 2, 9, 2)
>>> count_2 = my_tuple.count(2) # Считает, сколько раз 2 встречается в кортеже
>>> count_2
3
>>> index_7 = my_tuple.index(7) # Находит индекс первого появления 7 в кортеже
>>> index_7
2
>>> my_tuple
(5, 2, 7, 2, 9, 2)
```
#### 9.4 Словари и множества
#### Словари
``` python
>>> d = {'name': 'Оля', 'age': 20}
>>> d.get('age')
20
>>> d.get('city', 'Москва')
'Москва'
>>> list(d.keys())
['name', 'age']
>>> list(d.values())
['Оля', 20]
>>> list(d.items())
[('name', 'Оля'), ('age', 20)]
>>> d.update({'city': 'Москва'})
>>> d
{'name': 'Оля', 'age': 20, 'city': 'Москва'}
>>> d.pop('age')
20
>>> d
{'name': 'Оля', 'city': 'Москва'}
>>> d.clear()
>>> d
{}
>>> d2 = d.copy()
>>> d2
{}
```
#### Множество
``` python
>>> s = {1, 2, 3}
>>> s.add(4)
s
{1, 2, 3, 4}
>>> s.remove(2)
>>> s
{1, 3, 4}
>>> s.discard(3)
>>>> s
{1, 4}
>>> x=s.pop()
>>> x
1
>>> x,s
1 {4}
>>> s.clear()
>>> s
>>> set()
>>> s2=s.copy()
>>> s.update([5,6])
>>> s
{5, 6}
>>> s3 = s.union({7, 8})
>>> s3
{8, 5, 6, 7}
>>> s4 = s.intersection({5, 6, 9})
>>> s4
{5, 6}
>>> s5 = s.difference({4, 6})
>>> s5
{5}
>>> s6 = s.symmetric_difference({5, 9})
>>> s6
{9, 6}
>>> {5}.issubset(s)
True
>>> s.issuperset({5})
True
>>> {10, 11}.isdisjoint(s)
True
```
### 10. Завершил работу со средой