Сделал до пункта 5

main
TerekhovFV 4 недель назад
Родитель dfc7b078a1
Сommit 400700982c

@ -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 <module>
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
<class 'str'>
['T', 'e', 'r', 'e', 'k', 'h', 'o', 'v', 'F', 'V']
<class 'list'>
('T', 'e', 'r', 'e', 'k', 'h', 'o', 'v', 'F', 'V')
<class 'tuple'>
('T', 'e', 'r', 'e', 'k', 'h', 'o', 'v', 'F', 'V')
<class 'str'>
```
## 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
<class 'float'>
```
### 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
<class 'int'>
c=-3.0
<class 'float'>
```
*Самостоятельно попробуйте смешанные комбинации типов чисел в этой операции.*
```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
<class 'float'>
c=3.0
<class 'float'>
```
**Значит если хотя бы одно из чисел вещественное, то ответ будет вещественным.**
### 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 <module>
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 <module>
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)
```
**Можно комплексное число возвести в комплексную степень.**
***Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее наиболее сложный тип из тех типов, которые участвуют в операции.***

@ -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")

@ -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")

@ -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))
Загрузка…
Отмена
Сохранить