diff --git a/TEMA3/report.md b/TEMA3/report.md new file mode 100644 index 0000000..15a3655 --- /dev/null +++ b/TEMA3/report.md @@ -0,0 +1,535 @@ +# Отчет по теме 3 + +***Цель темы: изучение способов использования объектов разных типов.*** + +Терехов Фёдор Валерьевич, А-01-23 + +## 1. Цель темы: изучение способов использования объектов разных типов. + +### 1.1. Преобразование в логический тип с помощью функции bool(<Объект>). + +```python +logiz1=bool(56) +print(f"{logiz1}\n") + +logiz2=bool(0) +print(f"{logiz2}\n") + +logiz3=bool("Beta") +print(f"{logiz3}\n") + +logiz4=bool("") +print(f"{logiz4}\n") +``` + +Ответ программы: + +```shell +True + +False + +True + +False +``` + +### 1.2. Преобразование в целое десятичное число объекта с заданной системой счисления. + +*Преобразование в целое десятичное число объекта с заданной системой счисления осуществляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объект>]). По умолчанию система счисления принимается десятичной.* + +```python +tt1=int(198.6) #Отбрасывается дробная часть +print(f"{tt1}\n") + +tt2=int("-76") #Число – в строке символов, система по умолчанию - десятичная +print(f"{tt2}\n") + +tt3=int("B",16) +print(f"{tt3}\n") + +tt4=int("71",8) +print(f"{tt4}\n") + +tt5=int("98.76") +print(f"{tt5}\n") +``` + +Ответ программы: + +```shell +198 + +-76 + +11 + +57 + +Traceback (most recent call last): + File "/home/user/Desktop/VUZ/3CURSE/POAS_labs/python-labs/TEMA3/task1.py", line 26, in + tt5=int("98.76") + ^^^^^^^^^^^^ +ValueError: invalid literal for int() with base 10: '98.76' +``` + +*Объясните, почему при выполнении последней инструкции выдано диагностическое сообщение.* + +"98.76" - это строка. Функция int принимает либо строку с целым числом, либо число с точкой, но не строку с числом с точкой. Вариант решения - использовать функцию float(), которая преобразует строку в вещественное число, а затем функцию int() для преобразование в целое: + +```python +tt5=int(float("98.76")) +print(f"{tt5}\n") +``` + +Ответ программы: +```shell +98 +``` + +*Преобразование целых чисел или строк символов в вещественное число – с помощью функции float(<Объект>).* + +```python +flt1=float(789) +print(f"{flt1}\n") + +flt2=float(-6.78e2) +print(f"{flt2}\n") + +flt3=float("Infinity") +print(f"{flt3}\n") + +flt4=float("-inf") +print(f"{flt4}\n") +``` + +Ответ программы: + +```shell +789.0 + +-678.0 + +inf + +-inf +``` + +### 1.3. Преобразование десятичных чисел в другие системы счисления. + +```python +hh=123 +dv1=bin(hh) #Преобразование в строку с двоичным представлением +print(f"{dv1}\n") + +vos1=oct(hh) # Преобразование в строку с восьмеричным представлением +print(f"{vos1}\n") + +shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением +print(f"{shs1}\n") +``` + +Ответ программы: + +```shell +0b1111011 + +0o173 + +0x7b +``` + +*Для проверки выполним обратные преобразования объектов dv1, vos1, shs1 по образцу int(dv1,2):* + +```python +print(f"{int(dv1, 2)}\n") +print(f"{int(vos1, 8)}\n") +print(f"{int(shs1, 16)}\n") +``` + +Ответ программы: +```shell +123 + +123 + +123 +``` + +## 2. Преобразование более сложных базовых типов объектов. + +### 2.1. Преобразование в строку символов с помощью функции str(<Объект>). + +```python +strk1=str(23.6) +print(f"{strk1}\n") + +strk2=str(logiz3) +print(f"{strk2}\n") + +strk3=str(["A","B","C"]) #Преобразуем список +print(f"{strk3}\n") + +strk4=str(("A","B","C")) #Преобразуем кортеж +print(f"{strk4}\n") + +strk5=str({"A":1,"B":2,"C":9}) #Преобразуем словарь +print(f"{strk5}\n") +``` + +Ответ программы: + +```shell +23.6 + +True + +['A', 'B', 'C'] + +('A', 'B', 'C') + +{'A': 1, 'B': 2, 'C': 9} +``` + +### 2.2. Преобразование элементов объекта в список с помощью функции list(<Объект>). + +```python +spis1=list("Строка символов") #Заданная строка разделяется на символы +print(f"{spis1}\n") + +spis2=list((124,236,-15,908)) #Кортеж превращается в список +print(f"{spis2}\n") + +spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список +print(f"{spis3}\n") +``` + +Ответ программы: + +```shell +['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'] + +[124, 236, -15, 908] + +['A', 'B', 'C'] +``` + +*Обратите внимание на то, что из словаря попало в созданный список. Придумайте инструкцию, обеспечивающую создание из того же словаря списка с другими его частями.* + +list(словарь) берёт только ключи словаря. + +**.items()** — это метод словаря, который даёт представление (view) пар (ключ, значение). Возвращает не список, а объект-«вид» (dict_items). Он живой: если словарь меняется, меняется и этот вид. + +```python +spis3=list({"A":1,"B":2,"C":9}.items()) #Преобразование словаря в список +print(f"{spis3}\n") +``` + +Ответ программы: + +```shell +[('A', 1), ('B', 2), ('C', 9)] +``` + +### 2.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>). + +```python +kort7=tuple('Строка символов') #Преобразование строки символов в кортеж8 +print(f"{kort7}\n") + +kort8=tuple(spis2) #Преобразование списка в кортеж +print(f"{kort8}\n") + +kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж +print(f"{kort9}\n") +``` + +Ответ программы: + +```shell +('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в') + +(124, 236, -15, 908) + +('A', 'B', 'C') +``` + +### 2.4. Удаление объектов. + +*Очистить оперативную память от ранее созданных объектов можно с помощью инструкции del.* + +```python +print(f"Объекты в пространстве до удаления:\n{dir()}\n") +del strk5, kort8 +print(f"Объекты в пространстве после удаления:\n{dir()}\n") +``` + +Ответ программы: + +```shell +Объекты в пространстве до удаления: +['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'kort7', 'kort8', 'kort9', 'logiz3', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'strk5'] + +Объекты в пространстве после удаления: +['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'kort7', 'kort9', 'logiz3', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4'] +``` + +### Задание. + +*Создайте строку со своей фамилией и инициалами, преобразуйте её в список, затем список – в кортеж и, наконец, кортеж – в строку.* + +```python +name="TerekhovFV" +print(f"{name}\n{type(name)}\n") + +list_name=list(name) +print(f"{list_name}\n{type(list_name)}\n") + +tuple_name=tuple(list_name) +print(f"{tuple_name}\n{type(tuple_name)}\n") + +string_name=str(tuple_name) +print(f"{string_name}\n{type(string_name)}\n") +``` + +Ответ программы: + +```shell +TerekhovFV + + +['T', 'e', 'r', 'e', 'k', 'h', 'o', 'v', 'F', 'V'] + + +('T', 'e', 'r', 'e', 'k', 'h', 'o', 'v', 'F', 'V') + + +('T', 'e', 'r', 'e', 'k', 'h', 'o', 'v', 'F', 'V') + +``` + +## 3. Арифметические операции. + +### 3.1. Сложение и вычитание (+ и -). + +```python +print(12+7+90) # Сложение целых чисел +print(5.689e-1 - 0.456) #Вычитание вещественных чисел +print(23.6+54) #Сложение вещественного и целого чисел +print(14-56.7+89) # Сложение и вычитание целых и вещественных чисел +``` + +Ответ программы: + +```shell +109 +0.11289999999999994 +77.6 +46.3 +``` + +### 3.2. Умножение (*). + +```python +print(-6.7*12) #Умножение вещественного числа на целое число +``` + +Ответ программы: + +```shell +-80.4 +``` + +### 3.3. Деление (/). + +```python +print(-234.5/6) #Деление вещественного числа на целое +a=178/45 #Деление двух целых чисел +print(f"a={a}\n{type(a)}\n") +``` + +Ответ программы: + +```shell +-39.083333333333336 +a=3.9555555555555557 + +``` + +### 3.4. Деление с округлением вниз (//). + +*Здесь результат может быть целым или вещественным.* + +```python +b=178//45 #Деление двух целых чисел +print(f"b={b}\n{type(b)}\n") + +c=-24.6//12.1 #Деление двух вещественных чисел +print(f"c={c}\n{type(c)}\n") +``` + +Ответ программы: + +```shell +b=3 + + +c=-3.0 + +``` + +*Самостоятельно попробуйте смешанные комбинации типов чисел в этой операции.* + + +```python +b=b//c +print(f"b={b}\n{type(b)}\n") + +c=c//int(b) +print(f"c={c}\n{type(c)}\n") +``` + +Ответ программы: + +```shell +b=-1.0 + + +c=3.0 + +``` + +**Значит если хотя бы одно из чисел вещественное, то ответ будет вещественным.** + +### 3.5. Получение остатка от деления (%). + +```python +print(148%33) #Остаток от деления двух целых чисел +print(12.6%3.8) #Остаток от деления двух вещественных чисел +``` + +Ответ программы: + +```shell +16 +1.2000000000000002 +``` + +*Самостоятельно попробуйте смешанные комбинации типов чисел в этой операции.* + +```python +print(1%0.3) +print(3.0%1) +``` + +Ответ программы: + +```shell +0.10000000000000003 +0.0 +``` + +**Значит если хотя бы одно из чисел вещественное, то ответ будет вещественным.** + +### 3.6. Возведение в степень (**). + +```python +print(14**3) #Целое число возводится в целую степень +e=2.7**3.6 #Вещественное число возводится в вещественную степень +print(e) +``` + +Ответ программы: + +```shell +2744 +35.719843790663525 +``` + +*Самостоятельно попробуйте смешанные комбинации типов чисел в этой операции.* + +```python +print(4**2.5) +print(4.0**2) +``` + +Ответ программы: + +```shell +32.0 +16.0 +``` + +**Значит если хотя бы одно из чисел вещественное, то ответ будет вещественным.** + +### Задание. + +*Попробуйте операции с участием комплексных чисел. Какие из приведенных выше операций можно применять к комплексным числам, а какие – нет?* + +* Классические сложение, вычитание, умножение, деление: + +```python +print((5-9j)+(2+5j)) +print((5-9j)-(2+5j)) +print((5-9j)*(2+5j)) +print((5-9j)/(2+5j)) +``` + +Ответ программы: + +```shell +(7-4j) +(3-14j) +(55+7j) +(-1.206896551724138-1.4827586206896552j) +``` + +* Остаток от деления: + +```python +print((5-9j)%(2+5j)) +``` + +Ответ программы: + +```shell +Traceback (most recent call last): + File "/home/user/Desktop/VUZ/3CURSE/POAS_labs/python-labs/TEMA3/task3.py", line 46, in + print((5-9j)%(2+5j)) + ~~~~~~^^~~~~~ +TypeError: unsupported operand type(s) for %: 'complex' and 'complex' +``` + +**Нельзя получить остаток от деления компексных чисел.** + +* Деление с округлением в меньшую сторону: + +```python +print((5-9j)//(2+5j)) +``` + +Ответ программы: + +```shell +Traceback (most recent call last): + File "/home/user/Desktop/VUZ/3CURSE/POAS_labs/python-labs/TEMA3/task3.py", line 47, in + print((5-9j)//(2+5j)) + ~~~~~~^^~~~~~~ +TypeError: unsupported operand type(s) for //: 'complex' and 'complex' +``` + +* Возведение в степень: + +```python +print((5-9j)**(2+5j)) +``` + +Ответ программы: + +```shell +(-21509.595911266613-2297.8216985074932j) +``` + +**Можно комплексное число возвести в комплексную степень.** + +***Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее наиболее сложный тип из тех типов, которые участвуют в операции.*** \ No newline at end of file diff --git a/TEMA3/task1.py b/TEMA3/task1.py new file mode 100644 index 0000000..ff83d01 --- /dev/null +++ b/TEMA3/task1.py @@ -0,0 +1,58 @@ +logiz1=bool(56) +print(f"{logiz1}\n") + +logiz2=bool(0) +print(f"{logiz2}\n") + +logiz3=bool("Beta") +print(f"{logiz3}\n") + +logiz4=bool("") +print(f"{logiz4}\n") + + + +tt1=int(198.6) #Отбрасывается дробная часть +print(f"{tt1}\n") + +tt2=int("-76") #Число – в строке символов, система по умолчанию - десятичная +print(f"{tt2}\n") + +tt3=int("B",16) +print(f"{tt3}\n") + +tt4=int("71",8) +print(f"{tt4}\n") + +tt5=int(float("98.76")) +print(f"{tt5}\n") + + + +flt1=float(789) +print(f"{flt1}\n") + +flt2=float(-6.78e2) +print(f"{flt2}\n") + +flt3=float("Infinity") +print(f"{flt3}\n") + +flt4=float("-inf") +print(f"{flt4}\n") + + + +hh=123 +dv1=bin(hh) #Преобразование в строку с двоичным представлением +print(f"{dv1}\n") + +vos1=oct(hh) # Преобразование в строку с восьмеричным представлением +print(f"{vos1}\n") + +shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением +print(f"{shs1}\n") + +print(f"{int(dv1, 2)}\n") +print(f"{int(vos1, 8)}\n") +print(f"{int(shs1, 16)}\n") \ No newline at end of file diff --git a/TEMA3/task2.py b/TEMA3/task2.py new file mode 100644 index 0000000..839baff --- /dev/null +++ b/TEMA3/task2.py @@ -0,0 +1,64 @@ +logiz3=bool("Beta") + +strk1=str(23.6) +print(f"{strk1}\n") + +strk2=str(logiz3) +print(f"{strk2}\n") + +strk3=str(["A","B","C"]) #Преобразуем список +print(f"{strk3}\n") + +strk4=str(("A","B","C")) #Преобразуем кортеж +print(f"{strk4}\n") + +strk5=str({"A":1,"B":2,"C":9}) #Преобразуем словарь +print(f"{strk5}\n") + + + + +spis1=list("Строка символов") #Заданная строка разделяется на символы +print(f"{spis1}\n") + +spis2=list((124,236,-15,908)) #Кортеж превращается в список +print(f"{spis2}\n") + +spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список +print(f"{spis3}\n") + +spis3=list({"A":1,"B":2,"C":9}.items()) #Преобразование словаря в список +print(f"{spis3}\n") + + + +kort7=tuple('Строка символов') #Преобразование строки символов в кортеж8 +print(f"{kort7}\n") + +kort8=tuple(spis2) #Преобразование списка в кортеж +print(f"{kort8}\n") + +kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж +print(f"{kort9}\n") + + + + +print(f"Объекты в пространстве до удаления:\n{dir()}\n") +del strk5, kort8 +print(f"Объекты в пространстве после удаления:\n{dir()}\n") + + + + +name="TerekhovFV" +print(f"{name}\n{type(name)}\n") + +list_name=list(name) +print(f"{list_name}\n{type(list_name)}\n") + +tuple_name=tuple(list_name) +print(f"{tuple_name}\n{type(tuple_name)}\n") + +string_name=str(tuple_name) +print(f"{string_name}\n{type(string_name)}\n") \ No newline at end of file diff --git a/TEMA3/task3.py b/TEMA3/task3.py new file mode 100644 index 0000000..cfa7d86 --- /dev/null +++ b/TEMA3/task3.py @@ -0,0 +1,47 @@ +print(12+7+90) # Сложение целых чисел +print(5.689e-1 - 0.456) #Вычитание вещественных чисел +print(23.6+54) #Сложение вещественного и целого чисел +print(14-56.7+89) # Сложение и вычитание целых и вещественных чисел + +print(-6.7*12) #Умножение вещественного числа на целое число + +print(-234.5/6) #Деление вещественного числа на целое +a=178/45 #Деление двух целых чисел +print(f"a={a}\n{type(a)}\n") + +b=178//45 #Деление двух целых чисел +print(f"b={b}\n{type(b)}\n") + +c=-24.6//12.1 #Деление двух вещественных чисел +print(f"c={c}\n{type(c)}\n") + +b=b//c +print(f"b={b}\n{type(b)}\n") + +c=c//int(b) +print(f"c={c}\n{type(c)}\n") + + + + +print(148%33) #Остаток от деления двух целых чисел +print(12.6%3.8) #Остаток от деления двух вещественных чисел +print(1%0.3) +print(3.0%1) +print('\n') + +print(14**3) #Целое число возводится в целую степень +e=2.7**3.6 #Вещественное число возводится в вещественную степень +print(e) +print('\n') + +print(4**2.5) +print(4.0**2) +print('\n') + +print((5-9j)+(2+5j)) +print((5-9j)-(2+5j)) +print((5-9j)*(2+5j)) +print((5-9j)/(2+5j)) + +print((5-9j)**(2+5j)) \ No newline at end of file