diff --git a/TEMA3/report.md b/TEMA3/report.md index 0fcb67e..b66f65e 100644 --- a/TEMA3/report.md +++ b/TEMA3/report.md @@ -532,4 +532,450 @@ print((5-9j)**(2+5j)) **Можно комплексное число возвести в комплексную степень.** -***Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее наиболее сложный тип из тех типов, которые участвуют в операции.*** \ No newline at end of file +***Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее наиболее сложный тип из тех типов, которые участвуют в операции.*** + +## 4. Операции с двоичными представлениями целых чисел. + +### 4.1. Двоичная инверсия (~). Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0). + +```python +dv1=9 +dv2=~dv1 +print(bin(dv1)) +print(bin(dv2)) +``` + +Ответ программы: + +```shell +0b1001 +-0b1010 +``` + +### 4.2. Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел. + +```python +print(bin(7&9)) # 111 и 1001 = 0001 +print(bin(7&8)) # 111 и 1000 = 0000 +``` + +Ответ программы: + +```shell +0b1 +0b0 +``` + +### 4.3. Двоичное «ИЛИ» (|) – побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0. + +```python +print(bin(7|9)) # 111 или 1001 = 1111 +print(bin(7|8)) # 111 или 1000 = 1111 +print(bin(14|5)) # 1110 или 0101 = 1111 +``` + +Ответ программы: + +```shell +0b1111 +0b1111 +0b1111 +``` + +### 4.4. Двоичное «исключающее ИЛИ»(^) - побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1. + +```python +print(bin(14^5)) # 1110 исключающее или 0101 = 1011 +print(f"В десятичном представлении: {14^5}") +``` + +Ответ программы: + +```shell +0b1011 +В десятичном представлении: 11 +``` + +### 4.5. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева. + +```python +h=14 #Двоичное представление = 1110 +print(f"В десятичном представлении: {h}") +print(f"В двоичном представлении: {bin(h)}\n") +g=h<<2 # Новое двоичное представление = 111000 +print(f"В десятичном представлении: {g}") +print(f"В двоичном представлении: {bin(g)}\n") +g1=h>>1 # Новое двоичное представление = 0111 +print(f"В десятичном представлении: {g1}") +print(f"В двоичном представлении: {bin(g1)}\n") +g2=h>>2 # Новое двоичное представление = 0011 +print(f"В десятичном представлении: {g2}") +print(f"В двоичном представлении: {bin(g2)}\n") +``` + +Ответ программы: + +```shell +В десятичном представлении: 14 +В двоичном представлении: 0b1110 + +В десятичном представлении: 56 +В двоичном представлении: 0b111000 + +В десятичном представлении: 7 +В двоичном представлении: 0b111 + +В десятичном представлении: 3 +В двоичном представлении: 0b11 +``` + +### Задание. + +*Придумайте два двоичных числа, не менее чем с 7 знаками, и попробуйте выполнить с ними разные операции.* + +```python +a = 91 +b = 101 +print(f"В десятичном представлении a: {a}") +print(f"В двоичном представлении a: {bin(a)}\n") +print(f"В десятичном представлении: {b}") +print(f"В двоичном представлении: {bin(b)}\n") + +print(f"В десятичном представлении a & b = {a&b}") +print(f"В двоичном представлении a & b = {bin(a&b)}\n") + +print(f"В десятичном представлении a | b = {a|b}") +print(f"В двоичном представлении a | b = {bin(a|b)}\n") + +print(f"В десятичном представлении a ^ b = {a^b}") +print(f"В двоичном представлении a ^ b = {bin(a^b)}\n") + +print(f"В десятичном представлении ~a = {~a}") +print(f"В двоичном представлении ~a = {bin(~a)}\n") + +print(f"В десятичном представлении ~a = {~b}") +print(f"В двоичном представлении ~a = {bin(~b)}\n") + +print(f"В десятичном представлении a<<4 = {a<<4}") +print(f"В двоичном представлении a<<4 = {bin(a<<4)}\n") + +print(f"В десятичном представлении b>>5 = {b>>5}") +print(f"В двоичном представлении b>>5 = {bin(b>>5)}\n") +``` + +Ответ программы: + +```shell +В десятичном представлении a | b = 127 +В двоичном представлении a | b = 0b1111111 + +В десятичном представлении a ^ b = 62 +В двоичном представлении a ^ b = 0b111110 + +В десятичном представлении ~a = -92 +В двоичном представлении ~a = -0b1011100 + +В десятичном представлении ~a = -102 +В двоичном представлении ~a = -0b1100110 + +В десятичном представлении a<<4 = 1456 +В двоичном представлении a<<4 = 0b10110110000 + +В десятичном представлении b>>5 = 3 +В двоичном представлении b>>5 = 0b11 +``` + +## 5. Операции при работе с последовательностями (строками, списками, кортежами). + +### 5.1. Объединение последовательностей (конкатенация)(+). + +``` python +print('Система '+'регулирования') #Соединение двух строк символов +print(['abc','de','fg']+['hi','jkl']) # Объединение двух списков +print(('abc','de','fg')+('hi','jkl')) # Объединение двух кортежей +``` + +Ответ программы: + +```shell +Система регулирования +['abc', 'de', 'fg', 'hi', 'jkl'] +('abc', 'de', 'fg', 'hi', 'jkl') +``` + +### 5.2. Повторение (*). + +```python +print('ля-'*5) #Повторение строки 5 раз +print(['ку','-']*3) #Повторение списка 3 раза +print(('кис','-')*4) #Повторение кортежа 4 раза +``` + +Ответ программы: + +```shell +ля-ля-ля-ля-ля- +['ку', '-', 'ку', '-', 'ку', '-'] +('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-') +``` + +*Создание списка со 100 отсчетами сигнала-ступеньки:* + +```python +signal1=[0]*3+[1]*99 +print(signal1) +``` + +Ответ программы: + +```shell +[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 +print(signal2) +print("\n") +``` + +Ответ программы: + +```shell +(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0) +``` + +### 5.3. Проверка наличия заданного элемента в последовательности (in). + +```python +stroka='Система автоматического управления' +print('автомат' in stroka) #Наличие подстроки в строке +print('ку' in ['ку','-']*3) #Наличие контекста в списке +print('ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')) #Наличие контекста в кортеже +``` + +Ответ программы: + +```shell +True +True +False +``` + +### 5.4. Подстановка значений в строку с помощью оператора «%». + +***Пример №1*** + +```python +stroka='Температура = %g %s %g' +print(stroka % (16,' меньше ',25)) +``` + +Ответ программы: + +```shell +Температура = 16 меньше 25 +``` + +***Пример №2*** + +```python +stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' +print(stroka % {'zn1':16,'sravn':' меньше ','zn2':25}) +``` + +Ответ программы: + +```shell +Температура = 16 меньше 25 +``` + +## 6. Оператор присваивания. + +### 6.1. Обычное присваивание значения переменной (=). + +```python +zz=-12 +print(zz) +``` + +Ответ программы: + +```shell +-12 +``` + +### 6.2. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=). + +```python +zz+=5 # Значение zz увеличивается на 5 +print(zz) +zz-=3 # Значение уменьшается на 3 +print(zz) +``` + +Ответ программы: + +```shell +-7 +-10 +``` + +*Для последовательностей операция (+=) означает конкатенацию текущего значения объекта с заданным дополнением.* + +```python +stroka='Система' +stroka+=' регулирования' +print(stroka) +``` + +Ответ программы: + +```shell +Система регулирования +``` + +### 6.3. Умножение текущего значения переменной на заданную величину (*=) или деление (/=). + +```python +zz/=2 +print(zz) +zz*=5 +print(zz) +``` + +Ответ программы: + +```shell +-5.0 +-25.0 +``` + +_Для строк операция (*=) означает повторение текущего значения объекта заданное число раз._ + +```python +stroka*= 3 +print(stroka) +``` + +Ответ программы: + +```shell +Система регулированияСистема регулированияСистема регулирования +``` + +### 6.4. Деления с округлением вниз (//=). + +```python +zz//=2 +print(zz) +``` + +Ответ программы: + +```shell +-13.0 +``` + +### 6.5. Возведение в степень. + +```python +zz**=2 +print(zz) +``` + +Ответ программы: + +```shell +169.0 +``` + +### 6.6. Получение остатка от деления (%=). + +```python +zz%=3 +print(zz) +``` + +Ответ программы: + +```shell +1.0 +``` + +### Множественное присваивание. + +```python +w=v=10 # Переменным присваивается одно и то же значение +print(w) +print(v) + +n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа +print(n1, n2, n3) +``` + +Ответ программы: + +```shell +10 +10 +11 -3 all +``` + +***Вместо кортежа нельзя использовать строку*** + +```python +n1,n2,n3="11,-3,'all'" +print(n1, n2, n3) +``` + +Ответ программы: + +```shell +Traceback (most recent call last): + File "/home/user/Desktop/VUZ/3CURSE/POAS_labs/python-labs/TEMA3/task6.py", line 40, in + n1,n2,n3="11,-3,'all'" + ^^^^^^^^ +ValueError: too many values to unpack (expected 3) +``` + +***Вместо кортежа можно использовать список*** + +```python +n1,n2,n3=[11,-3,'all'] +print(n1, n2, n3) +``` + +Ответ программы: + +```shell +11 -3 all +``` + +***Вместо кортежа можно использовать множество*** + +```python +n1,n2,n3={11,-3,'all'} +print(n1, n2, n3) +``` + +Ответ программы: + +```shell +11 -3 all +``` + +***Вместо кортежа можно использовать словарь*** + +```python +n1,n2,n3={'11':1,'-3':2,"all": 3} +print(n1, n2, n3) +``` + +Ответ программы: + +```shell +11 -3 all +``` + diff --git a/TEMA3/task4.py b/TEMA3/task4.py new file mode 100644 index 0000000..7d29cd2 --- /dev/null +++ b/TEMA3/task4.py @@ -0,0 +1,59 @@ +dv1=9 +dv2=~dv1 +print(bin(dv1)) +print(bin(dv2)) + + +print(bin(7&9)) # 111 и 1001 = 0001 +print(bin(7&8)) # 111 и 1000 = 0000 + +print(bin(7|9)) # 111 или 1001 = 1111 +print(bin(7|8)) # 111 или 1000 = 1111 +print(bin(14|5)) # 1110 или 0101 = 1111 + +print(bin(14^5)) # 1110 исключающее или 0101 = 1011 +print(f"В десятичном представлении: {14^5}") + +h=14 #Двоичное представление = 1110 +print(f"В десятичном представлении: {h}") +print(f"В двоичном представлении: {bin(h)}\n") +g=h<<2 # Новое двоичное представление = 111000 +print(f"В десятичном представлении: {g}") +print(f"В двоичном представлении: {bin(g)}\n") +g1=h>>1 # Новое двоичное представление = 0111 +print(f"В десятичном представлении: {g1}") +print(f"В двоичном представлении: {bin(g1)}\n") +g2=h>>2 # Новое двоичное представление = 0011 +print(f"В десятичном представлении: {g2}") +print(f"В двоичном представлении: {bin(g2)}\n") + + + + +a = 91 +b = 101 +print(f"В десятичном представлении a: {a}") +print(f"В двоичном представлении a: {bin(a)}\n") +print(f"В десятичном представлении: {b}") +print(f"В двоичном представлении: {bin(b)}\n") + +print(f"В десятичном представлении a & b = {a&b}") +print(f"В двоичном представлении a & b = {bin(a&b)}\n") + +print(f"В десятичном представлении a | b = {a|b}") +print(f"В двоичном представлении a | b = {bin(a|b)}\n") + +print(f"В десятичном представлении a ^ b = {a^b}") +print(f"В двоичном представлении a ^ b = {bin(a^b)}\n") + +print(f"В десятичном представлении ~a = {~a}") +print(f"В двоичном представлении ~a = {bin(~a)}\n") + +print(f"В десятичном представлении ~a = {~b}") +print(f"В двоичном представлении ~a = {bin(~b)}\n") + +print(f"В десятичном представлении a<<4 = {a<<4}") +print(f"В двоичном представлении a<<4 = {bin(a<<4)}\n") + +print(f"В десятичном представлении b>>5 = {b>>5}") +print(f"В двоичном представлении b>>5 = {bin(b>>5)}\n") \ No newline at end of file diff --git a/TEMA3/task5.py b/TEMA3/task5.py new file mode 100644 index 0000000..f9e9d8d --- /dev/null +++ b/TEMA3/task5.py @@ -0,0 +1,30 @@ +print('Система '+'регулирования') #Соединение двух строк символов +print(['abc','de','fg']+['hi','jkl']) # Объединение двух списков +print(('abc','de','fg')+('hi','jkl')) # Объединение двух кортежей +print("\n") + +print('ля-'*5) #Повторение строки 5 раз +print(['ку','-']*3) #Повторение списка 3 раза +print(('кис','-')*4) #Повторение кортежа 4 раза +print("\n") + +signal1=[0]*3+[1]*99 +print(signal1) +print("\n") + +signal2=(0,)*3+(1,)*5+(0,)*7 +print(signal2) +print("\n") + + +stroka='Система автоматического управления' +print('автомат' in stroka) #Наличие подстроки в строке +print('ку' in ['ку','-']*3) #Наличие контекста в списке +print('ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')) #Наличие контекста в кортеже + +stroka='Температура = %g %s %g' +print(stroka % (16,' меньше ',25)) + + +stroka='Температура = %(zn1)g %(sravn)s %(zn2)g' +print(stroka % {'zn1':16,'sravn':' меньше ','zn2':25}) \ No newline at end of file diff --git a/TEMA3/task6.py b/TEMA3/task6.py new file mode 100644 index 0000000..c2d4e4c --- /dev/null +++ b/TEMA3/task6.py @@ -0,0 +1,41 @@ +zz=-12 +print(zz) +print('\n') + +zz+=5 # Значение zz увеличивается на 5 +print(zz) +zz-=3 # Значение уменьшается на 3 +print(zz) +print('\n') + + +stroka='Система' +stroka+=' регулирования' +print(stroka) +print('\n') + +zz/=2 +print(zz) +zz*=5 +print(zz) +print('\n') + +stroka*= 3 +print(stroka) +print('\n') + +zz//=2 +print(zz) +zz**=2 +print(zz) +zz%=3 +print(zz) +print('\n') + + +w=v=10 # Переменным присваивается одно и то же значение +print(w) +print(v) + +n1,n2,n3={'11':1,'-3':2,"all": 3} +print(n1, n2, n3)