Сравнить коммиты
14 Коммитов
| Автор | SHA1 | Дата | |
|---|---|---|---|
|
|
b4ce53684b | ||
|
|
1bb16f9cff | ||
|
|
7885d7766d | ||
|
|
f4e2fe42e4 | ||
|
|
ca629ba762 | ||
|
|
b76b2b2f44 | ||
|
|
eacca83cea | ||
|
|
6c5ebb68d2 | ||
|
|
53b067d900 | ||
|
|
d62679c8a1 | ||
|
|
b9d359be65 | ||
|
|
84df5ff6b8 | ||
|
|
ed719a2ff1 | ||
|
|
8c0877c95b |
21
55665.py
Обычный файл
@@ -0,0 +1,21 @@
|
||||
import random
|
||||
import os
|
||||
import pickle
|
||||
|
||||
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
|
||||
|
||||
random.seed(5)
|
||||
|
||||
sps = []
|
||||
|
||||
for i in range(10):
|
||||
sps.append(random.randint(2,5))
|
||||
|
||||
fp = open('test.txt','w')
|
||||
st = str(sps[1:])
|
||||
print(st)
|
||||
st = st.replace("[","")
|
||||
st = st.replace("]","")
|
||||
print(st)
|
||||
fp.write(st)
|
||||
fp.close()
|
||||
24
IKZ.py
Обычный файл
@@ -0,0 +1,24 @@
|
||||
import random
|
||||
|
||||
random.seed(5)
|
||||
|
||||
sps = []
|
||||
for i in range(50):
|
||||
sps.append(random.randint(-1, 1))
|
||||
sps2 = [random.randint(-1, 1) for i in range(50)]
|
||||
print("Полученный список ",sps)
|
||||
|
||||
men = 0
|
||||
bol = 0
|
||||
rav = 0
|
||||
|
||||
for i in range(1,50):
|
||||
if sps[i-1] < sps[i]:
|
||||
bol+=1
|
||||
elif sps[i-1] > sps[i]:
|
||||
men+=1
|
||||
else:
|
||||
rav+=1
|
||||
print(f"Больше = {bol}, меньше = {men}, равно = {rav}")
|
||||
|
||||
|
||||
Двоичные данные
Pasted image 20251012124853.png
Обычный файл
|
После Ширина: | Высота: | Размер: 63 KiB |
Двоичные данные
Pasted image 20251124110347.png
Обычный файл
|
После Ширина: | Высота: | Размер: 29 KiB |
@@ -1,6 +1,6 @@
|
||||
# Тема 0: образец оформления материалов
|
||||
|
||||
* `README.md` — этот документ, в своих темах создавать не нужно;
|
||||
* [`report.md`](report.md) — отчет;
|
||||
* [`task.md`](task.md) — общее контрольное задание;
|
||||
* [`test.md`](test.md) — индивидуальное контрольное задание.
|
||||
* [`report.md`](TEMA0/report.md) — отчет;
|
||||
* [`task.md`](TEMA0/task.md) — общее контрольное задание;
|
||||
* [`test.md`](TEMA0/test.md) — индивидуальное контрольное задание.
|
||||
|
||||
Двоичные данные
TEMA1/1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 140 KiB |
Двоичные данные
TEMA1/2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 44 KiB |
Двоичные данные
TEMA1/3.png
Обычный файл
|
После Ширина: | Высота: | Размер: 61 KiB |
6
TEMA1/Pr0.py
Обычный файл
@@ -0,0 +1,6 @@
|
||||
#Программа по теме 1 Хатюхин Евгений Сергеевич
|
||||
|
||||
print('Hello')
|
||||
h = input('Your name = ')
|
||||
import os
|
||||
os.chdir(r'C:\python-labs\TEMA1')
|
||||
55
TEMA1/Protocol.py
Обычный файл
@@ -0,0 +1,55 @@
|
||||
# Протокол по Теме 1 Хатюхин Евгений Сергеевич
|
||||
|
||||
===================== RESTART: C:/python-labs/TEMA1/Pr0.py =====================
|
||||
Hello
|
||||
Your name = Jenya
|
||||
import prb1
|
||||
Как Вас зовут? Jenya
|
||||
Привет, Jenya
|
||||
|
||||
help(print)
|
||||
Help on built-in function print in module builtins:
|
||||
|
||||
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||
Prints the values to a stream, or to sys.stdout by default.
|
||||
|
||||
sep
|
||||
string inserted between values, default a space.
|
||||
end
|
||||
string appended after the last value, default a newline.
|
||||
file
|
||||
a file-like object (stream); defaults to the current sys.stdout.
|
||||
flush
|
||||
whether to forcibly flush the stream.
|
||||
|
||||
help(print);help(input)
|
||||
Help on built-in function print in module builtins:
|
||||
|
||||
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||
Prints the values to a stream, or to sys.stdout by default.
|
||||
|
||||
sep
|
||||
string inserted between values, default a space.
|
||||
end
|
||||
string appended after the last value, default a newline.
|
||||
file
|
||||
a file-like object (stream); defaults to the current sys.stdout.
|
||||
flush
|
||||
whether to forcibly flush the stream.
|
||||
|
||||
Help on built-in function input in module builtins:
|
||||
|
||||
input(prompt='', /)
|
||||
Read a string from standard input. The trailing newline is stripped.
|
||||
|
||||
The prompt string, if given, is printed to standard output without a
|
||||
trailing newline before reading input.
|
||||
|
||||
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
|
||||
On *nix systems, readline is used if available.
|
||||
|
||||
===================== RESTART: C:\python-labs\TEMA1\prb1.py ====================
|
||||
Как Вас зовут? Jenya
|
||||
Привет, Jenya
|
||||
================= RESTART: C:\python-labs\TEMA1\tdemo_chaos.py =================
|
||||
|
||||
128
TEMA1/report .md
Обычный файл
@@ -0,0 +1,128 @@
|
||||
# Отчет по теме 1
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
## 1 Создание рабочей папки в GITHUB
|
||||
## 2 Запуск программы-интерпретатора
|
||||
## 3 Проверка работы интерпретатора
|
||||
|
||||
После символов >>> я ввел инструкцию:
|
||||
```py
|
||||
print("Hello")
|
||||
```
|
||||
Интерпретатор успешно выполнил эту команду и вывел мне Hello. Я убедился, что он работает.
|
||||
## 4 Применение команды для ввода текста пользователем
|
||||
|
||||
Я ввел еще 1 инструкцию:
|
||||
```py
|
||||
h = input("Your name = ")
|
||||
```
|
||||
Интерпретатор вывел Your name = , после чего я ввел свое имя.
|
||||
## 5 Завершение работы с интерпретатором
|
||||
|
||||
Ввел инструкцию:
|
||||
```py
|
||||
exit()
|
||||
```
|
||||
И вышел из интерпретатора
|
||||
|
||||
## 6 Запустил графическую оболочку IDLE
|
||||
## 7 Изучил функционал окна среды
|
||||
## 8 Настройка рабочего каталога среды
|
||||
|
||||
Ввел команды:
|
||||
```py
|
||||
import os
|
||||
os.chdir(r'C:\python-labs\TEMA1')
|
||||
```
|
||||
И с помощью них настроил свой рабочий каталог в папке Тема1
|
||||
## 9 Изучил главное меню и изменил шрифт и размер текста под себя
|
||||
## 10 Создание файла с инструкциями
|
||||
|
||||
Создал новый файл и добавил в него все нужные команды:
|
||||
```py
|
||||
#Программа по теме 1 Хатюхин Евгений Сергеевич
|
||||
print('Hello')
|
||||
h = input('Your name = ')
|
||||
import os
|
||||
os.chdir(r'C:\python-labs\TEMA1')
|
||||
```
|
||||
Запустил эту программу 3 разными способами:
|
||||
1) Через run module
|
||||
2) через f5
|
||||
3) через ввод инструкции:
|
||||
```py
|
||||
import Pr0
|
||||
```
|
||||
## 11 Запустил программу prb1.py
|
||||
|
||||
Через повторение ранее введенной команды с помощью курсора мыши и enter получил команду:
|
||||
```py
|
||||
import Pr0
|
||||
```
|
||||
Которую отредактировал до:
|
||||
```py
|
||||
import prb1
|
||||
Как Вас зовут? Jenya
|
||||
Привет, Jenya
|
||||
```
|
||||
## 12 Открыл файл Pr0.cpython-311.pyc
|
||||
|
||||
Там я увидел непонтяные символы. Это связано с тем, что компилятор пайтона переводит код в байт-код в одной кодировке
|
||||
а блокнот считывает этот код в другой кодировке, из-за этого один и тот же код элемента будет выдавать 2 разных символа.
|
||||
Этот файл нам нужен, чтобы при последующих компиляциях программы она быстрее обрабатывалась.
|
||||
## 13 Создал протокол по Теме 1 и внес в него копию всех строк из командной строки. Сохранил этот файл и назвал Protocol.py
|
||||
## 14 Изучение раздела Help
|
||||
Был изучен раздел Help и получена информация про инструкцию print:
|
||||
```py
|
||||
help(print)
|
||||
Help on built-in function print in module builtins:
|
||||
|
||||
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||
Prints the values to a stream, or to sys.stdout by default.
|
||||
|
||||
sep
|
||||
string inserted between values, default a space.
|
||||
end
|
||||
string appended after the last value, default a newline.
|
||||
file
|
||||
a file-like object (stream); defaults to the current sys.stdout.
|
||||
flush
|
||||
whether to forcibly flush the stream.
|
||||
```
|
||||
Также были введены две команды в 1 строчке через ; и получена информация про print и input:
|
||||
```py
|
||||
help(print);help(input)
|
||||
Help on built-in function print in module builtins:
|
||||
|
||||
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||
Prints the values to a stream, or to sys.stdout by default.
|
||||
|
||||
sep
|
||||
string inserted between values, default a space.
|
||||
end
|
||||
string appended after the last value, default a newline.
|
||||
file
|
||||
a file-like object (stream); defaults to the current sys.stdout.
|
||||
flush
|
||||
whether to forcibly flush the stream.
|
||||
|
||||
Help on built-in function input in module builtins:
|
||||
|
||||
input(prompt='', /)
|
||||
Read a string from standard input. The trailing newline is stripped.
|
||||
|
||||
The prompt string, if given, is printed to standard output without a
|
||||
trailing newline before reading input.
|
||||
|
||||
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
|
||||
On *nix systems, readline is used if available.
|
||||
```
|
||||
В документации по Питону была найдена информация по функции print():
|
||||
![[1.png]]
|
||||
## 15 Были изучены графические примеры среды
|
||||
1) Была изучена программа для вывод нескольких графиков по точкам:
|
||||
![[2.png]]
|
||||
2) Был изучен раздел помощи по графическим программам и пример с часами:
|
||||
![[3.png]]
|
||||
Такие шаблоны программ очень сильно облегчают написание своих собственных инструкций.
|
||||
## 16 Завершение работы со средой
|
||||
306
TEMA2/fbdfbf.py
Обычный файл
@@ -0,0 +1,306 @@
|
||||
Python 3.13.2 (tags/v3.13.2:4f8bb39, Feb 4 2025, 15:23:48) [MSC v.1942 64 bit (AMD64)] on win32
|
||||
Type "help", "copyright", "credits" or "license()" for more information.
|
||||
f1=16; f2=3
|
||||
f1,f2
|
||||
(16, 3)
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
|
||||
dir(f1)
|
||||
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
|
||||
type(f2)
|
||||
<class 'int'>
|
||||
del f1,f2
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
|
||||
gg1=1.6 #значение в виде вещественного числа
|
||||
hh1='Строка' #значение в виде символьной строки
|
||||
73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
|
||||
SyntaxError: invalid decimal literal
|
||||
and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика!
|
||||
SyntaxError: invalid syntax
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'gg1', 'hh1']
|
||||
import keyword
|
||||
keyword.kwlist
|
||||
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
kl = keyword.kwlist
|
||||
kl
|
||||
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
import builtins
|
||||
dir(builtins)
|
||||
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
|
||||
abs(-10)
|
||||
10
|
||||
len("len")
|
||||
3
|
||||
max(1,25)
|
||||
25
|
||||
min(1,25)
|
||||
1
|
||||
pow(2,3)
|
||||
8
|
||||
pow(2,3,3)
|
||||
2
|
||||
round(2.85)
|
||||
3
|
||||
>>> round(2.855,2)
|
||||
2.85
|
||||
>>> round(2.856,2)
|
||||
2.86
|
||||
>>> sorted(3,2,1)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#27>", line 1, in <module>
|
||||
sorted(3,2,1)
|
||||
TypeError: sorted expected 1 argument, got 3
|
||||
>>> sorted(321)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#28>", line 1, in <module>
|
||||
sorted(321)
|
||||
TypeError: 'int' object is not iterable
|
||||
>>> sorted("c",'b','a')
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#29>", line 1, in <module>
|
||||
sorted("c",'b','a')
|
||||
TypeError: sorted expected 1 argument, got 3
|
||||
>>> sorted("cba")
|
||||
['a', 'b', 'c']
|
||||
>>> sum(5,2)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#31>", line 1, in <module>
|
||||
sum(5,2)
|
||||
TypeError: 'int' object is not iterable
|
||||
>>> sum([3,7])
|
||||
10
|
||||
>>> list(zip([1,2,3],['a','b','c']))
|
||||
[(1, 'a'), (2, 'b'), (3, 'c')]
|
||||
>>> Gg1 = 45
|
||||
>>> gg1
|
||||
1.6
|
||||
>>> dir()
|
||||
['Gg1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'builtins', 'gg1', 'hh1', 'keyword', 'kl']
|
||||
>>> Gg1
|
||||
45
|
||||
bb1=True; bb2=False
|
||||
bb1;bb2
|
||||
True
|
||||
False
|
||||
type(bb1)
|
||||
<class 'bool'>
|
||||
ii1=-1234567890
|
||||
ff1=-8.9876e-12 #экспоненциальная форма записи вещественного числа
|
||||
dv1=0b1101010 #Это – двоичное число. В объекте какого класса оно сохранено?
|
||||
type(dv1)
|
||||
<class 'int'>
|
||||
vsm1=0o52765 #Это – восьмеричное число
|
||||
type(vsm1)
|
||||
<class 'int'>
|
||||
shest1=0x7109af6 #Это – шестнадцатеричное число
|
||||
type(shest1)
|
||||
<class 'int'>
|
||||
cc1=2-3j
|
||||
type(cc1)
|
||||
<class 'complex'>
|
||||
a=3.67; b=-0.45
|
||||
cc2=complex(a,b) #Создается комплексное число
|
||||
ss1='Это - строка символов'
|
||||
ss1
|
||||
'Это - строка символов'
|
||||
ss1="Это - строка символов"
|
||||
ss1
|
||||
'Это - строка символов'
|
||||
|
||||
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||
print(ss1a)
|
||||
Это - " строка символов ",
|
||||
выводимая на двух строках
|
||||
ss1b= 'Меня зовут: \n Хатюхин Е.С.'
|
||||
ss1b
|
||||
'Меня зовут: \n Хатюхин Е.С.'
|
||||
ss1b='Меня зовут: \n Хатюхин Е.С.'
|
||||
print(ss1b)
|
||||
Меня зовут:
|
||||
Хатюхин Е.С.
|
||||
mnogo="""Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||
|
||||
print(mnogo)
|
||||
Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||
ss1[0] #Это – символ «Э»
|
||||
'Э'
|
||||
ss1[8] #А это – символ «р»
|
||||
'р'
|
||||
ss1[-2] #А это – символ «о» (при знаке «-»(минус) отсчет от конца строки)
|
||||
'о'
|
||||
ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
|
||||
'стр'
|
||||
ss1[13:] #Это часть строки – с 13-го индекса и до конца
|
||||
'символов'
|
||||
ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
|
||||
'Это - строка '
|
||||
ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
|
||||
' строка '
|
||||
ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
|
||||
' тоасм'
|
||||
ss1[17:3:-2]
|
||||
'омсаот '
|
||||
ss1[-4:3:-2]
|
||||
'омсаот '
|
||||
ss1[4]='=' # Будет диагностика!
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#23>", line 1, in <module>
|
||||
ss1[4]='=' # Будет диагностика!
|
||||
TypeError: 'str' object does not support item assignment
|
||||
ss2 = ss1[:6] + ss1b[-12:]
|
||||
ss2
|
||||
'Это - Хатюхин Е.С.'
|
||||
spis1=[111,'Spisok',5-9j]
|
||||
stup=[0,0,1,1,1,1,1,1,1]
|
||||
spis=[1,2,3,4,
|
||||
5,6,7,
|
||||
8,9,10]
|
||||
spis1[-1]
|
||||
(5-9j)
|
||||
stup[-8::2] # вошло 4 элемента, начиная со 2 через 1(если по индексам: 1,3,5,7)
|
||||
[0, 1, 1, 1]
|
||||
spis1[1]='Список'
|
||||
spis1
|
||||
[111, 'Список', (5-9j)]
|
||||
len(spis1)
|
||||
3
|
||||
help(spis1.append)
|
||||
Help on built-in function append:
|
||||
|
||||
append(object, /) method of builtins.list instance
|
||||
Append object to the end of the list.
|
||||
|
||||
spis1.append('New item') # В конец списка добавлен элемент «New item»
|
||||
spis1+['New item']
|
||||
[111, 'Список', (5-9j), 'New item', 'New item']
|
||||
spis1.append('New item') # В конец списка добавлен элемент «New item»
|
||||
spis1.append(ss1b)
|
||||
spis1
|
||||
[111, 'Список', (5-9j), 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']
|
||||
spis1.pop(1) #Из списка удален элемент с индексом 1
|
||||
'Список'
|
||||
stup.insert(1,2)
|
||||
stup
|
||||
[0, 2, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
stup.insert(2,123)
|
||||
stup
|
||||
[0, 2, 123, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
stup.remove(123)
|
||||
stup
|
||||
[0, 2, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
last = [4,6,8
|
||||
]
|
||||
stup.extend(last)
|
||||
stup
|
||||
[0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 4, 6, 8]
|
||||
stup.sort()
|
||||
stup
|
||||
[0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 4, 6, 8]
|
||||
stup.reverse()
|
||||
stup
|
||||
[8, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0]
|
||||
stup.copy()
|
||||
[8, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0]
|
||||
stup.count(1)
|
||||
7
|
||||
stup.index(2)
|
||||
3
|
||||
stup.clear()
|
||||
stup
|
||||
[]
|
||||
spis2=[spis1,[4,5,6,7]] #здесь элементами являются два списка
|
||||
spis2[0][1] #обращение к элементу списка spis1
|
||||
(5-9j)
|
||||
spis2[0][1]=78 #Убедитесь, что значение элемента заменено на 78
|
||||
spis2[0][1]
|
||||
78
|
||||
spis1
|
||||
[111, 78, 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']
|
||||
# список 1 изменился, потому что он входит в элементы списка 2 не как копия, а как ссылка, поэтому любое изменение элементов списка 1 через список 2 приведет к изменению списка 1 как отделной переменной
|
||||
a = 5
|
||||
b = True
|
||||
spisok = [a,ss2,b,spis1]
|
||||
spisok
|
||||
[5, 'Это - Хатюхин Е.С.', True, [111, 78, 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']]
|
||||
kort1=(222,'Kortezh',77+8j)
|
||||
kort1= kort1+(1,2)
|
||||
kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2)
|
||||
kort1= kort1+(ss1b,)
|
||||
kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Хатюхин Е.С.')
|
||||
kort2=kort1[:2]+kort1[3:]
|
||||
kort2
|
||||
(222, 'Kortezh', 1, 2, 'Меня зовут: \n Хатюхин Е.С.')
|
||||
kort1.index(2) # Будет получено значение 4
|
||||
4
|
||||
kort1.count(222) #Будет получено значение 1
|
||||
1
|
||||
kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#98>", line 1, in <module>
|
||||
kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
|
||||
TypeError: 'tuple' object does not support item assignment
|
||||
korteg = (a,ss1,b,spisok,kort1)
|
||||
korteg
|
||||
(5, 'Это - строка символов', True, [5, 'Это - Хатюхин Е.С.', True, [111, 78, 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']], (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Хатюхин Е.С.'))
|
||||
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||
dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
|
||||
dic1['Orel']
|
||||
56
|
||||
dic1['Pskov']=78
|
||||
dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||
sorted(dic1.keys())
|
||||
['Orel', 'Pskov', 'Saratov', 'Vologda']
|
||||
sorted(dic1.values())
|
||||
[45, 56, 78, 145]
|
||||
dic2={1:'mean',2:'standart deviation',3:'correlation'}
|
||||
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
|
||||
dic3['statistics'][2]
|
||||
'standart deviation'
|
||||
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
|
||||
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||
kort7 = (1,2,3,4,5,6,7)
|
||||
kort7
|
||||
(1, 2, 3, 4, 5, 6, 7)
|
||||
lis5 = ['a','b','c','d','e']
|
||||
lis5
|
||||
['a', 'b', 'c', 'd', 'e']
|
||||
dic6 = dict(zip(kort7,lis5))
|
||||
dic6
|
||||
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
|
||||
#Длинна нашего словаря равна 5, поскольку zip объединяет элементы в словарь по минимальной длинне аргументов
|
||||
AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
|
||||
AVTI['Курс III'][5]
|
||||
15
|
||||
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
|
||||
mnoz1
|
||||
{'двигатель', 'датчик', 'микропроцессор', 'линия связи'}
|
||||
len(mnoz1)
|
||||
4
|
||||
'датчик' in mnoz1
|
||||
True
|
||||
mnoz1.add('реле')
|
||||
mnoz1.remove('линия связи')
|
||||
mnoz2 = {1, True, long, int, 24, Евгений}
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#136>", line 1, in <module>
|
||||
mnoz2 = {1, True, long, int, 24, Евгений}
|
||||
NameError: name 'long' is not defined
|
||||
mnoz2 = {1, True, 'long', 'int', 24, 'Евгений'}
|
||||
mnoz2
|
||||
{1, 24, 'int', 'Евгений', 'long'}
|
||||
'True' in mnoz2
|
||||
False
|
||||
mnoz2.add("True")
|
||||
'True' in mnoz2
|
||||
True
|
||||
|
||||
0
TEMA2/protocol.py
Обычный файл
349
TEMA2/report.md
Обычный файл
@@ -0,0 +1,349 @@
|
||||
# Отчет по теме 2
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
## 1 Создание протокола и настройка рабочей среды
|
||||
## 2 Простые объекты
|
||||
Я создал 2 простых объекта, проверил их значения, убедился, что они присутствуют в памяти компьютера, узнал тип одного из объектов, удалил эти объекты и убедился, что они пропали из памяти компьютера.
|
||||
```py
|
||||
f1=16; f2=3
|
||||
f1,f2
|
||||
(16, 3)
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2']
|
||||
dir(f1)
|
||||
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
|
||||
type(f2)
|
||||
<class 'int'>
|
||||
del f1,f2
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
|
||||
```
|
||||
## 3 Изучил правила именования объектов в пайтон и проверил их на практике
|
||||
```py
|
||||
gg1=1.6 #значение в виде вещественного числа
|
||||
hh1='Строка' #значение в виде символьной строки
|
||||
73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
|
||||
SyntaxError: invalid decimal literal
|
||||
and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика!
|
||||
SyntaxError: invalid syntax
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'gg1', 'hh1']
|
||||
```
|
||||
## 4 Просмотрел список ключевых слов и присвоил его переменной
|
||||
```py
|
||||
import keyword
|
||||
keyword.kwlist
|
||||
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
kl = keyword.kwlist
|
||||
kl
|
||||
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
```
|
||||
## 5 Просмотрел список встроенных идентификаторов и изучил некоторые из них с помощью функции help
|
||||
- abs - выдает значение по модулю
|
||||
- len - выдает длину объекта
|
||||
- max - выдает максимальное число из списка введенных в аргумент
|
||||
- min - выдает минимальное число из списка введенных в аргумент
|
||||
- pow - при двух аргументах: возводит первый в степень второго. При наличие третьего аргумента делит получившийся результат на третий аргумент и показывает остаток
|
||||
- round - округляет число до целого ,если 1 аргумент. При наличие второго аргумента округляет до стольких цифр после запятой, сколько указано во втором аргументе
|
||||
- sorted - сортирует числа или буквы по возрастанию или убыванию
|
||||
- sum - суммирует числа
|
||||
- zip - создает итератор, который объединяет элементы из нескольких перебираемых объектов по соответствию.
|
||||
```py
|
||||
import builtins
|
||||
dir(builtins)
|
||||
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
|
||||
abs(-10)
|
||||
10
|
||||
len("len")
|
||||
3
|
||||
max(1,25)
|
||||
25
|
||||
min(1,25)
|
||||
1
|
||||
pow(2,3)
|
||||
8
|
||||
pow(2,3,3)
|
||||
2
|
||||
round(2.85)
|
||||
3
|
||||
round(2.855,2)
|
||||
2.85
|
||||
round(2.856,2)
|
||||
2.86
|
||||
sorted("cba")
|
||||
['a', 'b', 'c']
|
||||
sum([3,7])
|
||||
10
|
||||
list(zip([1,2,3],['a','b','c']))
|
||||
[(1, 'a'), (2, 'b'), (3, 'c')]
|
||||
```
|
||||
## 6 Убедился, что переменные чувствительны к регистру
|
||||
```py
|
||||
Gg1 = 45
|
||||
gg1
|
||||
1.6
|
||||
Gg1
|
||||
45
|
||||
|
||||
```
|
||||
## 7 Изучил простые базовые объекты
|
||||
### 7.1 Изучил логический тип данных(bool)
|
||||
```py
|
||||
bb1=True; bb2=False
|
||||
bb1;bb2
|
||||
True
|
||||
False
|
||||
type(bb1)
|
||||
<class 'bool'>
|
||||
```
|
||||
### 7.2 Изучил другие простые типы данных(int,float,complex)
|
||||
```py
|
||||
ii1=-1234567890
|
||||
ff1=-8.9876e-12 #экспоненциальная форма записи вещественного числа
|
||||
dv1=0b1101010 #Это – двоичное число. В объекте какого класса оно сохранено?
|
||||
type(dv1)
|
||||
<class 'int'>
|
||||
vsm1=0o52765 #Это – восьмеричное число
|
||||
type(vsm1)
|
||||
<class 'int'>
|
||||
shest1=0x7109af6 #Это – шестнадцатеричное число
|
||||
type(shest1)
|
||||
<class 'int'>
|
||||
cc1=2-3j
|
||||
type(cc1)
|
||||
<class 'complex'>
|
||||
a=3.67; b=-0.45
|
||||
cc2=complex(a,b) #Создается комплексное число
|
||||
```
|
||||
### 7.3 Изучил тип объекта - строка-символ
|
||||
```py
|
||||
ss1='Это - строка символов'
|
||||
ss1
|
||||
'Это - строка символов'
|
||||
ss1="Это - строка символов"
|
||||
ss1
|
||||
'Это - строка символов'
|
||||
|
||||
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||
print(ss1a)
|
||||
Это - " строка символов ",
|
||||
выводимая на двух строках
|
||||
ss1b= 'Меня зовут: \n Хатюхин Е.С.'
|
||||
ss1b
|
||||
'Меня зовут: \n Хатюхин Е.С.'
|
||||
ss1b='Меня зовут: \n Хатюхин Е.С.'
|
||||
print(ss1b)
|
||||
Меня зовут:
|
||||
Хатюхин Е.С.
|
||||
mnogo="""Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||
|
||||
print(mnogo)
|
||||
Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||
ss1[0] #Это – символ «Э»
|
||||
'Э'
|
||||
ss1[8] #А это – символ «р»
|
||||
'р'
|
||||
ss1[-2] #А это – символ «о» (при знаке «-»(минус) отсчет от конца строки)
|
||||
'о'
|
||||
ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
|
||||
'стр'
|
||||
ss1[13:] #Это часть строки – с 13-го индекса и до конца
|
||||
'символов'
|
||||
ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
|
||||
'Это - строка '
|
||||
ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
|
||||
' строка '
|
||||
ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
|
||||
' тоасм'
|
||||
ss1[17:3:-2]
|
||||
'омсаот '
|
||||
ss1[-4:3:-2]
|
||||
'омсаот '
|
||||
ss1[4]='=' # Будет диагностика!
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#23>", line 1, in <module>
|
||||
ss1[4]='=' # Будет диагностика!
|
||||
TypeError: 'str' object does not support item assignment
|
||||
ss2 = ss1[:6] + ss1b[-12:]
|
||||
ss2
|
||||
'Это - Хатюхин Е.С.'
|
||||
```
|
||||
## 8 Изучил более сложные типы данных
|
||||
### 8.1 Изучил список и проверил на практике некоторые его методы
|
||||
```py
|
||||
spis1=[111,'Spisok',5-9j]
|
||||
stup=[0,0,1,1,1,1,1,1,1]
|
||||
spis=[1,2,3,4,
|
||||
5,6,7,
|
||||
8,9,10]
|
||||
spis1[-1]
|
||||
(5-9j)
|
||||
stup[-8::2] # вошло 4 элемента, начиная со 2 через 1(если по индексам: 1,3,5,7)
|
||||
[0, 1, 1, 1]
|
||||
spis1[1]='Список'
|
||||
spis1
|
||||
[111, 'Список', (5-9j)]
|
||||
len(spis1)
|
||||
3
|
||||
help(spis1.append)
|
||||
Help on built-in function append:
|
||||
|
||||
append(object, /) method of builtins.list instance
|
||||
Append object to the end of the list.
|
||||
|
||||
spis1.append('New item') # В конец списка добавлен элемент «New item»
|
||||
spis1+['New item']
|
||||
[111, 'Список', (5-9j), 'New item', 'New item']
|
||||
spis1.append('New item') # В конец списка добавлен элемент «New item»
|
||||
spis1.append(ss1b)
|
||||
spis1
|
||||
[111, 'Список', (5-9j), 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']
|
||||
spis1.pop(1) #Из списка удален элемент с индексом 1
|
||||
'Список'
|
||||
```
|
||||
Методы:
|
||||
- insert - вставляет элемент соответствующий второму аргументу на индекс равный первому аргументу
|
||||
- remove - удаляет первый элемент из списка, который соответствует значению аргумента
|
||||
- extend - добaвляет в конец списка все элемента из объекта в аргументе
|
||||
- sort - сортирует элементы по порядку
|
||||
- reverse - переворачивает порядок элементов списка
|
||||
- copy - создает копию списка
|
||||
- count - возвращает число, сколько раз элемент из аргумента встречается в списке
|
||||
- index - возвращает индекс первого вхождения элемента соответствующему аргументу.
|
||||
- clear - очищает список
|
||||
```py
|
||||
stup.insert(1,2)
|
||||
stup
|
||||
[0, 2, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
stup.insert(2,123)
|
||||
stup
|
||||
[0, 2, 123, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
stup.remove(123)
|
||||
stup
|
||||
[0, 2, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
last = [4,6,8
|
||||
]
|
||||
stup.extend(last)
|
||||
stup
|
||||
[0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 4, 6, 8]
|
||||
stup.sort()
|
||||
stup
|
||||
[0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 4, 6, 8]
|
||||
stup.reverse()
|
||||
stup
|
||||
[8, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0]
|
||||
stup.copy()
|
||||
[8, 6, 4, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0]
|
||||
stup.count(1)
|
||||
7
|
||||
stup.index(2)
|
||||
3
|
||||
stup.clear()
|
||||
stup
|
||||
[]
|
||||
```
|
||||
```py
|
||||
spis2=[spis1,[4,5,6,7]] #здесь элементами являются два списка
|
||||
spis2[0][1] #обращение к элементу списка spis1
|
||||
(5-9j)
|
||||
spis2[0][1]=78 #Убедитесь, что значение элемента заменено на 78
|
||||
spis2[0][1]
|
||||
78
|
||||
spis1
|
||||
[111, 78, 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']
|
||||
# список 1 изменился, потому что он входит в элементы списка 2 не как копия, а как ссылка, поэтому любое изменение элементов списка 1 через список 2 приведет к изменению списка 1 как отделной переменной
|
||||
a = 5
|
||||
b = True
|
||||
spisok = [a,ss2,b,spis1]
|
||||
spisok
|
||||
[5, 'Это - Хатюхин Е.С.', True, [111, 78, 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']]
|
||||
```
|
||||
### 8.2 Изучил объект-кортеж
|
||||
```py
|
||||
kort1=(222,'Kortezh',77+8j)
|
||||
kort1= kort1+(1,2)
|
||||
kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2)
|
||||
kort1= kort1+(ss1b,)
|
||||
kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Хатюхин Е.С.')
|
||||
kort2=kort1[:2]+kort1[3:]
|
||||
kort2
|
||||
(222, 'Kortezh', 1, 2, 'Меня зовут: \n Хатюхин Е.С.')
|
||||
kort1.index(2) # Будет получено значение 4
|
||||
4
|
||||
kort1.count(222) #Будет получено значение 1
|
||||
1
|
||||
kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#98>", line 1, in <module>
|
||||
kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
|
||||
TypeError: 'tuple' object does not support item assignment
|
||||
korteg = (a,ss1,b,spisok,kort1)
|
||||
korteg
|
||||
(5, 'Это - строка символов', True, [5, 'Это - Хатюхин Е.С.', True, [111, 78, 'New item', 'New item', 'Меня зовут: \n Хатюхин Е.С.']], (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n Хатюхин Е.С.'))
|
||||
```
|
||||
### 8.3 Изучил объект-словарь
|
||||
```py
|
||||
dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||
dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
|
||||
dic1['Orel']
|
||||
56
|
||||
dic1['Pskov']=78
|
||||
dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||
sorted(dic1.keys())
|
||||
['Orel', 'Pskov', 'Saratov', 'Vologda']
|
||||
sorted(dic1.values())
|
||||
[45, 56, 78, 145]
|
||||
dic2={1:'mean',2:'standart deviation',3:'correlation'}
|
||||
dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
|
||||
dic3['statistics'][2]
|
||||
'standart deviation'
|
||||
dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
|
||||
dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||
kort7 = (1,2,3,4,5,6,7)
|
||||
kort7
|
||||
(1, 2, 3, 4, 5, 6, 7)
|
||||
lis5 = ['a','b','c','d','e']
|
||||
lis5
|
||||
['a', 'b', 'c', 'd', 'e']
|
||||
dic6 = dict(zip(kort7,lis5))
|
||||
dic6
|
||||
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
|
||||
#Длинна нашего словаря равна 5, поскольку zip объединяет элементы в словарь по минимальной длинне аргументов
|
||||
AVTI={'Курс I':[22,23,17,24,30,29,28,25,23,0,4,31,30,33,18,12,27],'Курс II':[18,16,12,15,29,18,21,23,13,0,4,20,31,26,16,], 'Курс III':[17,12,0,6,17,15,19,19,0,0,5,17,22,18,12], 'Курс IV':[27,16,0,13,17,15,19,20,0,0,2,15,18,16,17]}
|
||||
AVTI['Курс III'][5]
|
||||
15
|
||||
```
|
||||
### 8.4 Изучил объект-множество
|
||||
```py
|
||||
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
|
||||
mnoz1
|
||||
{'двигатель', 'датчик', 'микропроцессор', 'линия связи'}
|
||||
len(mnoz1)
|
||||
4
|
||||
'датчик' in mnoz1
|
||||
True
|
||||
mnoz1.add('реле')
|
||||
mnoz1.remove('линия связи')
|
||||
mnoz2 = {1, True, long, int, 24, Евгений}
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#136>", line 1, in <module>
|
||||
mnoz2 = {1, True, long, int, 24, Евгений}
|
||||
NameError: name 'long' is not defined
|
||||
mnoz2 = {1, True, 'long', 'int', 24, 'Евгений'}
|
||||
mnoz2
|
||||
{1, 24, 'int', 'Евгений', 'long'}
|
||||
'True' in mnoz2
|
||||
False
|
||||
mnoz2.add("True")
|
||||
'True' in mnoz2
|
||||
True
|
||||
```
|
||||
## 9 Завершил сеанс работы в IDLE
|
||||
48
TEMA2/task.md
Обычный файл
@@ -0,0 +1,48 @@
|
||||
# Общее контрольное задание по теме 2
|
||||
|
||||
Хатюхин Евгений А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
•Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
|
||||
|
||||
•Создать переменную со значением, совпадающим с первой буквой из familia.
|
||||
|
||||
•Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
|
||||
|
||||
•Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
|
||||
|
||||
•Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
|
||||
|
||||
•Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
|
||||
|
||||
•Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
|
||||
|
||||
•Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
familia = 'KhatiukhinYS'
|
||||
f = familia[0]
|
||||
f
|
||||
'K'
|
||||
import keyword
|
||||
sp_kw = keyword.kwlist
|
||||
sp_kw
|
||||
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
sp_kw.remove('nonlocal')
|
||||
sp_kw
|
||||
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
kort_name = ('Jenya','Stas','Lena','Andrew')
|
||||
type(kort_nam)
|
||||
<class 'tuple'>
|
||||
kort_nam = kort_nam + ('Dima','Denis')
|
||||
kort_nam
|
||||
('Jenya', 'Stas', 'Lena', 'Andrew', 'Dima', 'Denis')
|
||||
kort_nam.count('Dima')
|
||||
1
|
||||
dict_bas = dict(zip(('str','list','tuple'),(familia,sp_kw,kort_nam)))
|
||||
dict_bas
|
||||
{'str': 'KhatiukhinYS', 'list': ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'], 'tuple': ('Jenya', 'Stas', 'Lena', 'Andrew', 'Dima', 'Denis')}
|
||||
```
|
||||
32
TEMA3/M1_6.py
Обычный файл
@@ -0,0 +1,32 @@
|
||||
'''2 Создайте объект-словарь с 3 элементами, в которых ключами являются
|
||||
строки с названиями профессий, а значениями - списки с элементами:
|
||||
средняя зарплата по соответствующей профессии, вероятность
|
||||
устроиться на работу и возможность профессионального роста (логическое значение).
|
||||
Значения придумайте самостоятельно.'''
|
||||
dic1 = {'Программист': [500000,0.9, False], 'Уборщик': [1000000000, 1.0, True],
|
||||
'Президент': [10, 0.1, True]}
|
||||
print(dic1)
|
||||
|
||||
''' 3 Создайте объект-строку с названием одной из профессий и
|
||||
напишите инструкцию, позволяющую для этого объекта
|
||||
определить из словаря список с ее характеристиками.'''
|
||||
|
||||
st = list(dic1.keys())
|
||||
#print(st)
|
||||
strk = ('Характеристики профессии {prof}: {har}')
|
||||
print(strk.format(prof = st[0], har = dic1[st[0]]))
|
||||
|
||||
'''4 Напишите инструкцию, создающую на основе словаря
|
||||
список со значениями средних зарплат по представленным в словаре профессиям.'''
|
||||
|
||||
spis = list(dic1.values())
|
||||
spis = sum(spis,[])
|
||||
zp = spis[0::3]
|
||||
print('Средние зарплаты:', zp)
|
||||
|
||||
''' 5 Напишите инструкцию, вычисляющую
|
||||
среднюю вероятность трудоустройства по представленным в словаре профессиям.'''
|
||||
|
||||
ver = spis[1::3]
|
||||
#print(ver)
|
||||
print('Средняя вероятность трудоустройства:', round(sum(ver)/len(ver),2))
|
||||
59
TEMA3/Task.md
Обычный файл
@@ -0,0 +1,59 @@
|
||||
```py
|
||||
# Общее КЗ
|
||||
a = int("45", 8)
|
||||
a
|
||||
37
|
||||
D={"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||
spis1=list(D)
|
||||
spis2=list(D.values())
|
||||
spis1
|
||||
['усиление', 'запаздывание', 'постоянная времени']
|
||||
spis2
|
||||
[23, 12, 78]
|
||||
kor=tuple(spis1)+tuple(spis2)
|
||||
kor
|
||||
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||
((1768//24.8)%3)**2.4
|
||||
5.278031643091577
|
||||
((~(13&27))^14)<<2
|
||||
-32
|
||||
spis3 = ['колебат']*4
|
||||
spis3
|
||||
['колебат', 'колебат', 'колебат', 'колебат']
|
||||
'аткол' in spis3[1] + spis3[2]
|
||||
True
|
||||
dir(D)
|
||||
['__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']
|
||||
D.keys()
|
||||
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||
D.values()
|
||||
dict_values([23, 12, 78])
|
||||
help(D.keys)
|
||||
Help on built-in function keys:
|
||||
|
||||
keys() method of builtins.dict instance
|
||||
Return a set-like object providing a view on the dict's keys.
|
||||
|
||||
help(D.values)
|
||||
Help on built-in function values:
|
||||
|
||||
values() method of builtins.dict instance
|
||||
Return an object providing a view on the dict's values.
|
||||
|
||||
S="Создать объект - символьную строку с текстом данного предложения"
|
||||
L=list(S.split())
|
||||
L
|
||||
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
L[L.index("-")] = ","
|
||||
l
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#200>", line 1, in <module>
|
||||
l
|
||||
NameError: name 'l' is not defined
|
||||
L
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
L.remove("данного")
|
||||
L
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||
|
||||
```
|
||||
625
TEMA3/protokol.py
Обычный файл
@@ -0,0 +1,625 @@
|
||||
Python 3.13.2 (tags/v3.13.2:4f8bb39, Feb 4 2025, 15:23:48) [MSC v.1942 64 bit (AMD64)] on win32
|
||||
Type "help", "copyright", "credits" or "license()" for more information.
|
||||
logiz1=bool(56)
|
||||
logiz2=bool(0)
|
||||
logiz2=bool(0)
|
||||
logiz4=bool("")
|
||||
logiz4
|
||||
False
|
||||
logiz3=bool("Beta")
|
||||
|
||||
|
||||
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'
|
||||
# Т.к. число является вещественным и представлено в виде строки, то для преобразования его в целочисленный тип данных нужно сперва преобразовать строку в тип данных float, а потом из float в int
|
||||
|
||||
|
||||
flt1=float(789)
|
||||
flt1
|
||||
789.0
|
||||
flt2=float(-6.78e2)
|
||||
flt2
|
||||
-678.0
|
||||
flt3=float("Infinity")
|
||||
flt3
|
||||
inf
|
||||
flt4=float("-inf")
|
||||
flt4
|
||||
-inf
|
||||
|
||||
|
||||
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,8*2)
|
||||
123
|
||||
|
||||
|
||||
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}"
|
||||
|
||||
|
||||
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']
|
||||
spis3 = list({"A":1,"B":2,"C":9}.values())
|
||||
spis3
|
||||
[1, 2, 9]
|
||||
|
||||
|
||||
kort7=tuple('Строка символов') #Преобразование строки символов в кортеж
|
||||
лщке
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#68>", line 1, in <module>
|
||||
лщке
|
||||
NameError: name 'лщке' is not defined
|
||||
kort7
|
||||
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
|
||||
kort8=tuple(spis2) #Преобразование списка в кортеж
|
||||
kort8
|
||||
(124, 236, -15, 908)
|
||||
kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж
|
||||
kort9
|
||||
('A', 'B', 'C')
|
||||
|
||||
|
||||
del strk5, kort8
|
||||
strk5
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#88>", line 1, in <module>
|
||||
strk5
|
||||
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'shs1', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1']
|
||||
fam = "Хатюхин Е.С."
|
||||
fam_ls = list(fam)
|
||||
fam_ls
|
||||
['Х', 'а', 'т', 'ю', 'х', 'и', 'н', ' ', 'Е', '.', 'С', '.']
|
||||
fam_krt = tuple(fam_ls)
|
||||
fam_krt
|
||||
('Х', 'а', 'т', 'ю', 'х', 'и', 'н', ' ', 'Е', '.', 'С', '.')
|
||||
fam_str = str(fam_krt)
|
||||
fam_str
|
||||
"('Х', 'а', 'т', 'ю', 'х', 'и', 'н', ' ', 'Е', '.', 'С', '.')"
|
||||
|
||||
"strk5" in dir()
|
||||
False
|
||||
|
||||
12+7+90 # Сложение целых чисел
|
||||
109
|
||||
5.689e-1 - 0.456 #Вычитание вещественных чисел
|
||||
0.11289999999999994
|
||||
23.6+54 #Сложение вещественного и целого чисел
|
||||
77.6
|
||||
14-56.7+89 # Сложение и вычитание целых и вещественных чисел
|
||||
46.3
|
||||
|
||||
|
||||
-6.7*12 #Умножение вещественного числа на целое число
|
||||
-80.4
|
||||
-234.5/6 #Деление вещественного числа на целое
|
||||
-39.083333333333336
|
||||
a=178/45 #Деление двух целых чисел – проверьте тип объекта a!
|
||||
type(a)
|
||||
<class 'float'>
|
||||
a
|
||||
3.9555555555555557
|
||||
|
||||
|
||||
b=178//45 #Деление двух целых чисел
|
||||
b
|
||||
3
|
||||
c=-24.6//12.1 #Деление двух вещественных чисел
|
||||
c
|
||||
-3.0
|
||||
d = -52.2 // 5
|
||||
d
|
||||
-11.0
|
||||
148%33 #Остаток от деления двух целых чисел
|
||||
16
|
||||
12.6%3.8 #Остаток от деления двух вещественных чисел
|
||||
1.2000000000000002
|
||||
12.6%4
|
||||
0.5999999999999996
|
||||
12%4.0
|
||||
0.0
|
||||
|
||||
|
||||
|
||||
|
||||
14**3 #Целое число возводится в целую степень
|
||||
2744
|
||||
e=2.7**3.6 #Вещественное число возводится в вещественную степень
|
||||
e
|
||||
35.719843790663525
|
||||
14**(1/2)
|
||||
3.7416573867739413
|
||||
2**(1/2)
|
||||
1.4142135623730951
|
||||
km1 = 5 - 7j
|
||||
km2 = 10 - 14j
|
||||
km1;km2
|
||||
(5-7j)
|
||||
(10-14j)
|
||||
km1 + km2
|
||||
(15-21j)
|
||||
km1-km2
|
||||
(-5+7j)
|
||||
km1//km2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#10>", line 1, in <module>
|
||||
km1//km2
|
||||
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
|
||||
km1/km2
|
||||
(0.5-0j)
|
||||
km1**km2
|
||||
(-1312.815003718761-3445.7568233592656j)
|
||||
km1%km2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#13>", line 1, in <module>
|
||||
km1%km2
|
||||
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
|
||||
|
||||
|
||||
|
||||
dv1=9
|
||||
dv2=~dv1
|
||||
dv2
|
||||
-10
|
||||
dv3 = bin(dv1)
|
||||
dv3
|
||||
'0b1001'
|
||||
dv4 = bin(dv2)
|
||||
dv4
|
||||
'-0b1010'
|
||||
dec(110)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#24>", line 1, in <module>
|
||||
dec(110)
|
||||
NameError: name 'dec' is not defined
|
||||
int(110,2)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#25>", line 1, in <module>
|
||||
int(110,2)
|
||||
TypeError: int() can't convert non-string with explicit base
|
||||
int(0b0110,2)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#26>", line 1, in <module>
|
||||
int(0b0110,2)
|
||||
TypeError: int() can't convert non-string with explicit base
|
||||
int('0b0110',2)
|
||||
6
|
||||
|
||||
|
||||
|
||||
7&9 # 111 и 1001 = 0001
|
||||
1
|
||||
7&8 # 111 и 1000 = 0000
|
||||
0
|
||||
6&9
|
||||
0
|
||||
7&3
|
||||
3
|
||||
15&3
|
||||
3
|
||||
15&7
|
||||
7
|
||||
7
|
||||
7
|
||||
|
||||
|
||||
7|9 # 111 или 1001 = 1111
|
||||
15
|
||||
bin(15&3)
|
||||
'0b11'
|
||||
7|8 # 111 или 1000 = 1111
|
||||
15
|
||||
14|5 # 1110 или 0101 = 1111
|
||||
15
|
||||
7|3
|
||||
7
|
||||
|
||||
|
||||
14^5 # 1110 исключающее или 0101 = 1011
|
||||
11
|
||||
|
||||
|
||||
h=14 #Двоичное представление = 1110
|
||||
g=h<<2 # Новое двоичное представление = 111000
|
||||
g
|
||||
56
|
||||
g1=h>>1 # Новое двоичное представление = 0111
|
||||
g1
|
||||
7
|
||||
g2=h>>2 # Новое двоичное представление = 0011
|
||||
g2
|
||||
3
|
||||
|
||||
|
||||
bin1 = int('0101010',2)
|
||||
bin2 = int('1010101',2)
|
||||
bin1;bin2
|
||||
42
|
||||
85
|
||||
bin1&bin2
|
||||
0
|
||||
bin1|bin2
|
||||
127
|
||||
bin1^bin2
|
||||
127
|
||||
bin3 = ~bin1
|
||||
bin3
|
||||
-43
|
||||
|
||||
'Система '+'регулирования' #Соединение двух строк символов
|
||||
'Система регулирования'
|
||||
['abc','de','fg']+['hi','jkl'] # Объединение двух списков
|
||||
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||
('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
|
||||
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||
|
||||
|
||||
|
||||
'ля-'*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)
|
||||
|
||||
|
||||
stroka='Система автоматического управления'
|
||||
stroka
|
||||
'Система автоматического управления'
|
||||
'автомат' in stroka #Наличие подстроки в строке
|
||||
True
|
||||
'ку' in ['ку','-']*3 #Наличие контекста в списке
|
||||
True
|
||||
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
|
||||
False
|
||||
|
||||
|
||||
stroka='Температура = %g %s %g'
|
||||
stroka
|
||||
'Температура = %g %s %g'
|
||||
stroka % (16,' меньше ',25)
|
||||
'Температура = 16 меньше 25'
|
||||
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
||||
stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
||||
'Температура = 16 меньше 25'
|
||||
zz=-12
|
||||
zz
|
||||
-12
|
||||
|
||||
|
||||
|
||||
zz=-12
|
||||
zz
|
||||
-12
|
||||
|
||||
|
||||
zz+=5 # Значение zz увеличивается на 5
|
||||
zz
|
||||
-7
|
||||
zz-=3 # Значение уменьшается на 3
|
||||
zz
|
||||
-10
|
||||
|
||||
|
||||
zz/=2
|
||||
zz
|
||||
-5.0
|
||||
zz*=5
|
||||
zz
|
||||
-25.0
|
||||
a = 'bb'
|
||||
a *= 2
|
||||
a
|
||||
'bbbb'
|
||||
|
||||
|
||||
zz //= 4
|
||||
zz
|
||||
-7.0
|
||||
a = 20
|
||||
a //= 6
|
||||
a
|
||||
3
|
||||
a %= 2
|
||||
a
|
||||
1
|
||||
a = 2
|
||||
a **= 4
|
||||
a
|
||||
16
|
||||
|
||||
|
||||
|
||||
w=v=10 # Переменным присваивается одно и то же значение
|
||||
w
|
||||
10
|
||||
v
|
||||
10
|
||||
n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа
|
||||
n1
|
||||
11
|
||||
n2
|
||||
-3
|
||||
n3
|
||||
'all'
|
||||
n1,n2,n3="11", "-3", "all"
|
||||
n1;n2;n3
|
||||
'11'
|
||||
'-3'
|
||||
'all'
|
||||
n1,n2,n3=[11,-3,'all']
|
||||
n1;n2;n3
|
||||
11
|
||||
-3
|
||||
'all'
|
||||
n1,n2,n3={11: 3,-3:7,'all':8}
|
||||
n1;n2;n3
|
||||
11
|
||||
-3
|
||||
'all'
|
||||
|
||||
|
||||
|
||||
w==v
|
||||
True
|
||||
w>v
|
||||
False
|
||||
w<v
|
||||
False
|
||||
w<=v
|
||||
True
|
||||
w>=v
|
||||
True
|
||||
w!=v
|
||||
False
|
||||
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
a=17
|
||||
b=-6
|
||||
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
|
||||
True
|
||||
(5>6) and 'cap' in mnoz1 and not(56 in dic1.values())
|
||||
False
|
||||
(5<6) and 'cap' in mnoz1 and not(56 in dic1.values())
|
||||
False
|
||||
(4==2*2) and (2**4 == 16) and not(100 > 1000)
|
||||
True
|
||||
|
||||
|
||||
|
||||
w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
|
||||
w is v
|
||||
True
|
||||
w1=['A','B']
|
||||
v1=['A','B']
|
||||
w1 is v1
|
||||
False
|
||||
w1=v1=['A','B']
|
||||
w1 is v1
|
||||
True
|
||||
|
||||
|
||||
|
||||
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']
|
||||
|
||||
|
||||
stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
|
||||
5
|
||||
stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
|
||||
4
|
||||
stroka.replace(' у',' автоматического у')
|
||||
'Микропроцессорная система автоматического управления'
|
||||
spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
|
||||
spis22
|
||||
['Микропроцессорная', 'система', 'управления']
|
||||
stroka.upper() #Возвращает строку со всеми заглавными буквами
|
||||
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
|
||||
stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
|
||||
stroka3
|
||||
'Микропроцессорная система управления'
|
||||
stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
|
||||
('Микропроце', 'с', 'сорная система управления')
|
||||
stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
|
||||
('Микропроцессорная си', 'с', 'тема управления')
|
||||
|
||||
|
||||
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.format(znch=89.7,num=2)
|
||||
'Момент времени 2, значение = 89.7'
|
||||
|
||||
|
||||
sp = ['a','b','c','1','5']
|
||||
sp
|
||||
['a', 'b', 'c', '1', '5']
|
||||
spsk = sp
|
||||
dir(spsk)
|
||||
['__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']
|
||||
dir(spsk)
|
||||
['__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']
|
||||
spsk.pop(2)
|
||||
'c'
|
||||
spsk.append('c')
|
||||
spsk
|
||||
['a', 'b', '1', '5', 'c']
|
||||
spsk.insert(2,'a')
|
||||
spsk
|
||||
['a', 'b', 'a', '1', '5', 'c']
|
||||
spsk.count('a')
|
||||
2
|
||||
spsk = sp
|
||||
spsk.pop(2)
|
||||
'a'
|
||||
spsk
|
||||
['a', 'b', '1', '5', 'c']
|
||||
sp.pop(1)
|
||||
'b'
|
||||
sp
|
||||
['a', '1', '5', 'c']
|
||||
|
||||
|
||||
kor = ('a','b','a','1','2')
|
||||
kor
|
||||
('a', 'b', 'a', '1', '2')
|
||||
dir(kor)
|
||||
['__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']
|
||||
kor.index('1')
|
||||
3
|
||||
kor.count('a')
|
||||
2
|
||||
kor.count(a)
|
||||
0
|
||||
|
||||
|
||||
|
||||
sl = {"A":3, "B":4}
|
||||
sl
|
||||
{'A': 3, 'B': 4}
|
||||
dir(sl)
|
||||
['__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']
|
||||
sl.keys()
|
||||
dict_keys(['A', 'B'])
|
||||
|
||||
|
||||
|
||||
|
||||
# Общее КЗ
|
||||
a = int("45", 8)
|
||||
a
|
||||
37
|
||||
D={"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||
spis1=list(D)
|
||||
spis2=list(D.values())
|
||||
spis1
|
||||
['усиление', 'запаздывание', 'постоянная времени']
|
||||
spis2
|
||||
[23, 12, 78]
|
||||
kor=tuple(spis1)+tuple(spis2)
|
||||
kor
|
||||
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||
((1768//24.8)%3)**2.4
|
||||
5.278031643091577
|
||||
((~(13&27))^14)<<2
|
||||
-32
|
||||
spis3 = ['колебат']*4
|
||||
spis3
|
||||
['колебат', 'колебат', 'колебат', 'колебат']
|
||||
'аткол' in spis3[1] + spis3[2]
|
||||
True
|
||||
dir(D)
|
||||
['__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']
|
||||
D.keys()
|
||||
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||
D.values()
|
||||
dict_values([23, 12, 78])
|
||||
help(D.keys)
|
||||
Help on built-in function keys:
|
||||
|
||||
keys() method of builtins.dict instance
|
||||
Return a set-like object providing a view on the dict's keys.
|
||||
|
||||
help(D.values)
|
||||
Help on built-in function values:
|
||||
|
||||
values() method of builtins.dict instance
|
||||
Return an object providing a view on the dict's values.
|
||||
|
||||
S="Создать объект - символьную строку с текстом данного предложения"
|
||||
L=list(S.split())
|
||||
L
|
||||
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
L[L.index("-")] = ","
|
||||
l
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#200>", line 1, in <module>
|
||||
l
|
||||
NameError: name 'l' is not defined
|
||||
L
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
L.remove("данного")
|
||||
L
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||
555
TEMA3/report.md
Обычный файл
@@ -0,0 +1,555 @@
|
||||
# Отчет по теме 3
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
## 1 Запуск IDLE
|
||||
## 2 Преобразование базовых типов объектов в другие типы
|
||||
### 2.1 Изучил преобразование объектов в логический тип данных
|
||||
```py
|
||||
logiz1=bool(56)
|
||||
logiz2=bool(0)
|
||||
logiz3=bool("Beta")
|
||||
logiz4=bool("")
|
||||
logiz4
|
||||
False
|
||||
```
|
||||
### 2.2 Изучил преобразование объектов в числовой тип данных
|
||||
```py
|
||||
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'
|
||||
# Т.к. число является вещественным и представлено в виде строки, то для преобразования его в целочисленный тип данных нужно сперва преобразовать строку в тип данных float, а потом из float в int
|
||||
|
||||
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 Изучил преобразование целочисленных объектов в строки с двоичным, восьмеричным и шестнадцатеричным представлением и обратное представление
|
||||
```py
|
||||
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,8*2)
|
||||
123
|
||||
```
|
||||
## 3 Изучил преобразования более сложных базовых типов объектов
|
||||
### 3.1 Изучил преобразование в строку символов с помощью функции str(<Объект>)
|
||||
```py
|
||||
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(<Объект>)
|
||||
```py
|
||||
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']
|
||||
spis3 = list({"A":1,"B":2,"C":9}.values())
|
||||
spis3
|
||||
[1, 2, 9]
|
||||
```
|
||||
### 3.3 Изучил преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>)
|
||||
```py
|
||||
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 Изучил удаление объектов
|
||||
```py
|
||||
del strk5, kort8
|
||||
strk5
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#88>", line 1, in <module>
|
||||
strk5
|
||||
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
|
||||
"strk5" in dir()
|
||||
False
|
||||
dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz2', 'logiz3', 'logiz4', 'shs1', 'spis1', 'spis2', 'spis3', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1']
|
||||
fam = "Хатюхин Е.С."
|
||||
fam_ls = list(fam)
|
||||
fam_ls
|
||||
['Х', 'а', 'т', 'ю', 'х', 'и', 'н', ' ', 'Е', '.', 'С', '.']
|
||||
fam_krt = tuple(fam_ls)
|
||||
fam_krt
|
||||
('Х', 'а', 'т', 'ю', 'х', 'и', 'н', ' ', 'Е', '.', 'С', '.')
|
||||
fam_str = str(fam_krt)
|
||||
fam_str
|
||||
"('Х', 'а', 'т', 'ю', 'х', 'и', 'н', ' ', 'Е', '.', 'С', '.')"
|
||||
```
|
||||
## 4 Изучил арифметические операции
|
||||
|
||||
### 4.1 Изучил сложение и вычитание (+ и -)
|
||||
```py
|
||||
12+7+90 # Сложение целых чисел
|
||||
109
|
||||
5.689e-1 - 0.456 #Вычитание вещественных чисел
|
||||
0.11289999999999994
|
||||
23.6+54 #Сложение вещественного и целого чисел
|
||||
77.6
|
||||
14-56.7+89 # Сложение и вычитание целых и вещественных чисел
|
||||
46.3
|
||||
```
|
||||
### 4.2 Изучил умножение (\*)
|
||||
```py
|
||||
-6.7*12 #Умножение вещественного числа на целое число
|
||||
```
|
||||
### 4.3 Изучил деление (/)
|
||||
```py
|
||||
-6.7*12 #Умножение вещественного числа на целое число
|
||||
-80.4
|
||||
-234.5/6 #Деление вещественного числа на целое
|
||||
-39.083333333333336
|
||||
a=178/45 #Деление двух целых чисел – проверьте тип объекта a!
|
||||
type(a)
|
||||
<class 'float'>
|
||||
a
|
||||
3.9555555555555557
|
||||
```
|
||||
### 4.4 Изучил деление с округлением вниз (//). Здесь результат может быть целым или вещественным. В нижеследующих операциях определите тип результата.
|
||||
```py
|
||||
b=178//45 #Деление двух целых чисел
|
||||
b
|
||||
3
|
||||
c=-24.6//12.1 #Деление двух вещественных чисел
|
||||
c
|
||||
-3.0
|
||||
d = -52.2 // 5
|
||||
d
|
||||
-11.0
|
||||
```
|
||||
### 4.5 Изучил получение остатка от деления (%)
|
||||
```py
|
||||
148%33 #Остаток от деления двух целых чисел
|
||||
16
|
||||
12.6%3.8 #Остаток от деления двух вещественных чисел
|
||||
1.2000000000000002
|
||||
12.6%4
|
||||
0.5999999999999996
|
||||
12%4.0
|
||||
0.0
|
||||
```
|
||||
### 4.6 Изучил возведение в степень (\*\*)
|
||||
```py
|
||||
14**3 #Целое число возводится в целую степень
|
||||
2744
|
||||
e=2.7**3.6 #Вещественное число возводится в вещественную степень
|
||||
e
|
||||
35.719843790663525
|
||||
14**(1/2)
|
||||
3.7416573867739413
|
||||
2**(1/2)
|
||||
1.4142135623730951
|
||||
```
|
||||
```py
|
||||
km1 = 5 - 7j
|
||||
km2 = 10 - 14j
|
||||
km1;km2
|
||||
(5-7j)
|
||||
(10-14j)
|
||||
km1 + km2
|
||||
(15-21j)
|
||||
km1-km2
|
||||
(-5+7j)
|
||||
km1//km2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#10>", line 1, in <module>
|
||||
km1//km2
|
||||
TypeError: unsupported operand type(s) for //: 'complex' and 'complex'
|
||||
km1/km2
|
||||
(0.5-0j)
|
||||
km1**km2
|
||||
(-1312.815003718761-3445.7568233592656j)
|
||||
km1%km2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#13>", line 1, in <module>
|
||||
km1%km2
|
||||
TypeError: unsupported operand type(s) for %: 'complex' and 'complex'
|
||||
```
|
||||
## 5 Изучил операции с двоичными представлениями целых чисел
|
||||
### 5.1 Изучил двоичную инверсию (~)
|
||||
```py
|
||||
dv1=9
|
||||
dv2=~dv1
|
||||
dv2
|
||||
-10
|
||||
```
|
||||
### 5.2 Изучил двоичное «И» (&) – побитовое совпадение двоичных представлений чисел
|
||||
```py
|
||||
7&9 # 111 и 1001 = 0001
|
||||
1
|
||||
7&8 # 111 и 1000 = 0000
|
||||
0
|
||||
```
|
||||
### 5.3 Изучил двоичное «ИЛИ» (|)
|
||||
```py
|
||||
7|9 # 111 или 1001 = 1111
|
||||
15
|
||||
7|8 # 111 или 1000 = 1111
|
||||
15
|
||||
14|5 # 1110 или 0101 = 1111
|
||||
15
|
||||
```
|
||||
### 5.4 Изучил двоичное «исключающее ИЛИ»(^)
|
||||
```py
|
||||
14^5 # 1110 исключающее или 0101 = 1011
|
||||
```
|
||||
### 5.5 Изучил сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева
|
||||
```py
|
||||
h=14 #Двоичное представление = 1110
|
||||
g=h<<2 # Новое двоичное представление = 111000
|
||||
g
|
||||
56
|
||||
g1=h>>1 # Новое двоичное представление = 0111
|
||||
g1
|
||||
7
|
||||
g2=h>>2 # Новое двоичное представление = 0011
|
||||
g2
|
||||
3
|
||||
```
|
||||
```py
|
||||
bin1 = int('0101010',2)
|
||||
bin2 = int('1010101',2)
|
||||
bin1;bin2
|
||||
42
|
||||
85
|
||||
bin1&bin2
|
||||
0
|
||||
bin1|bin2
|
||||
127
|
||||
bin1^bin2
|
||||
127
|
||||
bin3 = ~bin1
|
||||
bin3
|
||||
-43
|
||||
```
|
||||
## 6 Изучил операции при работе с последовательностями (строками, списками, кортежами)
|
||||
### 6.1 Изучил объединение последовательностей (конкатенация)(+)
|
||||
```py
|
||||
'Система '+'регулирования' #Соединение двух строк символов
|
||||
'Система регулирования'
|
||||
['abc','de','fg']+['hi','jkl'] # Объединение двух списков
|
||||
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||
('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
|
||||
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||
|
||||
```
|
||||
### 6.2 Изучил повторение (\*)
|
||||
```py
|
||||
'ля-'*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)
|
||||
```py
|
||||
stroka='Система автоматического управления'
|
||||
stroka
|
||||
'Система автоматического управления'
|
||||
'автомат' in stroka #Наличие подстроки в строке
|
||||
True
|
||||
'ку' in ['ку','-']*3 #Наличие контекста в списке
|
||||
True
|
||||
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
|
||||
False
|
||||
```
|
||||
### 6.4 Изучил подстановку значений в строку с помощью оператора «%»
|
||||
```py
|
||||
stroka='Температура = %g %s %g'
|
||||
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 Изучил обычное присваивание значения переменной (=)
|
||||
```py
|
||||
zz=-12
|
||||
zz
|
||||
-12
|
||||
```
|
||||
## 7.2 Изучил увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
|
||||
```py
|
||||
zz+=5 # Значение zz увеличивается на 5
|
||||
zz
|
||||
-7
|
||||
zz-=3 # Значение уменьшается на 3
|
||||
zz
|
||||
-10
|
||||
```
|
||||
### 7.3 Изучил умножение текущего значения переменной на заданную величину (\*=) или деление (\/=)
|
||||
```py
|
||||
zz/=2
|
||||
zz
|
||||
-5.0
|
||||
zz*=5
|
||||
zz
|
||||
-25.0
|
||||
a = 'bb'
|
||||
a *= 2
|
||||
a
|
||||
'bbbb'
|
||||
```
|
||||
## 7.4 Изучил операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(\*\*=)
|
||||
```py
|
||||
a = 20
|
||||
a //= 6
|
||||
a
|
||||
3
|
||||
a %= 2
|
||||
a
|
||||
1
|
||||
a = 2
|
||||
a **= 4
|
||||
a
|
||||
16
|
||||
```
|
||||
### 7.5 Изучил множественное присваивание
|
||||
```py
|
||||
w=v=10 # Переменным присваивается одно и то же значение
|
||||
w
|
||||
10
|
||||
v
|
||||
10
|
||||
n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа
|
||||
n1
|
||||
11
|
||||
n2
|
||||
-3
|
||||
n3
|
||||
'all'
|
||||
n1,n2,n3="11", "-3", "all"
|
||||
n1;n2;n3
|
||||
'11'
|
||||
'-3'
|
||||
'all'
|
||||
n1,n2,n3=[11,-3,'all']
|
||||
n1;n2;n3
|
||||
11
|
||||
-3
|
||||
'all'
|
||||
n1,n2,n3={11: 3,-3:7,'all':8}
|
||||
n1;n2;n3
|
||||
11
|
||||
-3
|
||||
'all'
|
||||
```
|
||||
## 8 Изучил логические операции
|
||||
### 8.1 Изучил Операции сравнение: равенство (\=\=), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=)
|
||||
```py
|
||||
w==v
|
||||
True
|
||||
w>v
|
||||
False
|
||||
w<v
|
||||
False
|
||||
w<=v
|
||||
True
|
||||
w>=v
|
||||
True
|
||||
w!=v
|
||||
False
|
||||
```
|
||||
### 8.2 Изучил проверку наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in)
|
||||
```py
|
||||
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)
|
||||
```py
|
||||
a=17
|
||||
b=-6
|
||||
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
|
||||
True
|
||||
(5>6) and 'cap' in mnoz1 and not(56 in dic1.values())
|
||||
False
|
||||
(4==2*2) and (2**4 == 16) and not(100 > 1000)
|
||||
True
|
||||
```
|
||||
### 8.4 Изучил проверку ссылок переменных на один и тот же объект (is)
|
||||
```py
|
||||
w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
|
||||
w is v
|
||||
True
|
||||
w1=['A','B']
|
||||
v1=['A','B']
|
||||
w1 is v1
|
||||
False
|
||||
w1=v1=['A','B']
|
||||
w1 is v1
|
||||
True
|
||||
```
|
||||
## 9 Изучил операции с объектами, выполняемые с помощью методов
|
||||
```py
|
||||
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 Изучил методы для работы со строками
|
||||
```py
|
||||
stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
|
||||
5
|
||||
stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
|
||||
4
|
||||
stroka.replace(' у',' автоматического у')
|
||||
'Микропроцессорная система автоматического управления'
|
||||
spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
|
||||
spis22
|
||||
['Микропроцессорная', 'система', 'управления']
|
||||
stroka.upper() #Возвращает строку со всеми заглавными буквами
|
||||
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
|
||||
stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
|
||||
stroka3
|
||||
'Микропроцессорная система управления'
|
||||
stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
|
||||
('Микропроце', 'с', 'сорная система управления')
|
||||
stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
|
||||
('Микропроцессорная си', 'с', 'тема управления')
|
||||
|
||||
|
||||
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.format(znch=89.7,num=2)
|
||||
'Момент времени 2, значение = 89.7'
|
||||
```
|
||||
### 9.2 Изучил методы для работы со списками
|
||||
```py
|
||||
sp = ['a','b','c','1','5']
|
||||
sp
|
||||
['a', 'b', 'c', '1', '5']
|
||||
spsk = sp
|
||||
dir(spsk)
|
||||
['__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']
|
||||
spsk.pop(2)
|
||||
'c'
|
||||
spsk.append('c')
|
||||
spsk
|
||||
['a', 'b', '1', '5', 'c']
|
||||
spsk.insert(2,'a')
|
||||
spsk
|
||||
['a', 'b', 'a', '1', '5', 'c']
|
||||
spsk.count('a')
|
||||
2
|
||||
spsk = sp
|
||||
spsk.pop(2)
|
||||
'a'
|
||||
spsk
|
||||
['a', 'b', '1', '5', 'c']
|
||||
sp.pop(1)
|
||||
'b'
|
||||
sp
|
||||
['a', '1', '5', 'c']
|
||||
```
|
||||
### 9.3 Изучил применение методов кортежа
|
||||
```py
|
||||
kor = ('a','b','a','1','2')
|
||||
kor
|
||||
('a', 'b', 'a', '1', '2')
|
||||
dir(kor)
|
||||
['__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']
|
||||
kor.index('1')
|
||||
3
|
||||
kor.count('a')
|
||||
2
|
||||
```
|
||||
### 9.4 Изучил методы словарей и множеств
|
||||
```py
|
||||
sl = {"A":3, "B":4}
|
||||
sl
|
||||
{'A': 3, 'B': 4}
|
||||
dir(sl)
|
||||
['__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']
|
||||
sl.keys()
|
||||
dict_keys(['A', 'B'])
|
||||
```
|
||||
## 10 Завершил работу в IDLE
|
||||
|
||||
3
TEMA3/report.py
Обычный файл
@@ -0,0 +1,3 @@
|
||||
Python 3.13.2 (tags/v3.13.2:4f8bb39, Feb 4 2025, 15:23:48) [MSC v.1942 64 bit (AMD64)] on win32
|
||||
Type "help", "copyright", "credits" or "license()" for more information.
|
||||
14**3 #Целое число возводится в целую степень
|
||||
56
TEMA3/task.py
Обычный файл
@@ -0,0 +1,56 @@
|
||||
# Общее КЗ
|
||||
a = int("45", 8)
|
||||
a
|
||||
37
|
||||
D={"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||
spis1=list(D)
|
||||
spis2=list(D.values())
|
||||
spis1
|
||||
['усиление', 'запаздывание', 'постоянная времени']
|
||||
spis2
|
||||
[23, 12, 78]
|
||||
kor=tuple(spis1)+tuple(spis2)
|
||||
kor
|
||||
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||
((1768//24.8)%3)**2.4
|
||||
5.278031643091577
|
||||
((~(13&27))^14)<<2
|
||||
-32
|
||||
spis3 = ['колебат']*4
|
||||
spis3
|
||||
['колебат', 'колебат', 'колебат', 'колебат']
|
||||
'аткол' in spis3[1] + spis3[2]
|
||||
True
|
||||
dir(D)
|
||||
['__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']
|
||||
D.keys()
|
||||
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||
D.values()
|
||||
dict_values([23, 12, 78])
|
||||
help(D.keys)
|
||||
Help on built-in function keys:
|
||||
|
||||
keys() method of builtins.dict instance
|
||||
Return a set-like object providing a view on the dict's keys.
|
||||
|
||||
help(D.values)
|
||||
Help on built-in function values:
|
||||
|
||||
values() method of builtins.dict instance
|
||||
Return an object providing a view on the dict's values.
|
||||
|
||||
S="Создать объект - символьную строку с текстом данного предложения"
|
||||
L=list(S.split())
|
||||
L
|
||||
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
L[L.index("-")] = ","
|
||||
l
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#200>", line 1, in <module>
|
||||
l
|
||||
NameError: name 'l' is not defined
|
||||
L
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
L.remove("данного")
|
||||
L
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||
28
TEMA3/test.md
Обычный файл
@@ -0,0 +1,28 @@
|
||||
# 1 Как расшифровывается аббревиатура IDLE? Какую роль играет эта компонента в среде программирования Python?
|
||||
IDLE расшифровывается как Integrated Development and Learning Environment, что в переводе означает "Интегрированная среда для разработки и обучения". Удобный редактор кода с красивой подсветкой.
|
||||
# 2 Создайте объект-словарь с 3 элементами, в которых ключами являются строки с названиями профессий, а значениями - списки с элементами: средняя зарплата по соответствующей профессии, вероятность устроиться на работу и возможность профессионального роста (логическое значение). Значения придумайте самостоятельно.
|
||||
```py
|
||||
dic1 = {'Программист': [500000,0.9, False], 'Уборщик': [1000000000, 1.0, True],
|
||||
'Президент': [10, 0.1, True]}
|
||||
print(dic1)
|
||||
```
|
||||
# 3 Создайте объект-строку с названием одной из профессий и напишите инструкцию, позволяющую для этого объекта определить из словаря список с ее характеристиками.
|
||||
```py
|
||||
st = list(dic1.keys())
|
||||
#print(st)
|
||||
strk = ('Характеристики профессии {prof}: {har}')
|
||||
print(strk.format(prof = st[0], har = dic1[st[0]]))
|
||||
```
|
||||
# 4 Напишите инструкцию, создающую на основе словаря список со значениями средних зарплат по представленным в словаре профессиям.
|
||||
```py
|
||||
spis = list(dic1.values())
|
||||
spis = sum(spis,[])
|
||||
zp = spis[0::3]
|
||||
print('Средние зарплаты:', zp)
|
||||
```
|
||||
# 5 Напишите инструкцию, вычисляющую среднюю вероятность трудоустройства по представленным в словаре профессиям.
|
||||
```py
|
||||
ver = spis[1::3]
|
||||
#print(ver)
|
||||
print('Средняя вероятность трудоустройства:', round(sum(ver)/len(ver),2))
|
||||
```
|
||||
Двоичные данные
TEMA4/Figure_1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 52 KiB |
Двоичные данные
TEMA4/Figure_2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 11 KiB |
Двоичные данные
TEMA4/Figure_3.png
Обычный файл
|
После Ширина: | Высота: | Размер: 10 KiB |
20
TEMA4/IKZ.md
Обычный файл
@@ -0,0 +1,20 @@
|
||||
27. Определите и запомните в переменной время начала выполнения задания. Создайте объект-словарь с тремя элементами. Первый элемент – с ключом «студент» и значением – списком не менее 3-х фамилий (придумайте сами). Второй элемент – с ключом «Институт» и значением – кортежем с 4 элементами: ИВТИ, ИАЭ, ИТАЭ, ЭнМИ. Третий элемент – с ключом «Корпус» и значением – списком с элементами А,Б,Г, Д, К,М. Напишите инструкцию случайного выбора одного из значений из элемента словаря «Институт». Отобразите на экране результат в виде строки по шаблону: «Выбран институт = <значение>». Определите общее время с начала выполнения задания и отобразите его на экране.
|
||||
```py
|
||||
import time
|
||||
import random
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
dic = {
|
||||
'Студент': ['Хатюхин','Шабатов','Туровец'],
|
||||
'Институт': ('ИВТИ','ИАЭ','ИТАЭ','ЭнМИ'),
|
||||
'Корпус': ['А','Б','Г','Д','К','М']
|
||||
}
|
||||
|
||||
rnd_institut = random.sample(dic['Институт'],1)
|
||||
|
||||
print(f'Выбран институт = {rnd_institut}')
|
||||
end_time = time.time()
|
||||
delta = end_time - start_time
|
||||
print(f'Времени прошло: {delta}')
|
||||
```
|
||||
Двоичные данные
TEMA4/Ris2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 15 KiB |
389
TEMA4/protocol.py
Обычный файл
@@ -0,0 +1,389 @@
|
||||
Python 3.13.2 (tags/v3.13.2:4f8bb39, Feb 4 2025, 15:23:48) [MSC v.1942 64 bit (AMD64)] on win32
|
||||
Type "help", "copyright", "credits" or "license()" for more information.
|
||||
round(123.456,1)
|
||||
123.5
|
||||
a = round(123.456,1)
|
||||
b = round(123.456, 0)
|
||||
a
|
||||
123.5
|
||||
b
|
||||
123.0
|
||||
type(a);type(b)
|
||||
<class 'float'>
|
||||
<class 'float'>
|
||||
round(123.456)
|
||||
123
|
||||
c = round(123.456)
|
||||
type(c)
|
||||
<class 'int'>
|
||||
|
||||
|
||||
|
||||
gg=range(76,123,9)
|
||||
gg
|
||||
range(76, 123, 9)
|
||||
list(gg)
|
||||
[76, 85, 94, 103, 112, 121]
|
||||
range(23)
|
||||
range(0, 23)
|
||||
list(range(23))
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
|
||||
|
||||
|
||||
|
||||
qq = ['Khatiukhin','Shabatov','Efremov','Turovec']
|
||||
qq
|
||||
['Khatiukhin', 'Shabatov', 'Efremov', 'Turovec']
|
||||
ff = zip(gg,qq)
|
||||
ff
|
||||
<zip object at 0x000001D9754CB040>
|
||||
tuple(ff)
|
||||
((76, 'Khatiukhin'), (85, 'Shabatov'), (94, 'Efremov'), (103, 'Turovec'))
|
||||
ff[1]
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#25>", line 1, in <module>
|
||||
ff[1]
|
||||
TypeError: 'zip' object is not subscriptable
|
||||
|
||||
|
||||
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||
коэффициент усиления=40
|
||||
dan
|
||||
44.0
|
||||
|
||||
|
||||
|
||||
KeyboardInterrupt
|
||||
|
||||
exec(input('введите инструкции:'))
|
||||
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||
gg
|
||||
221.456
|
||||
|
||||
|
||||
|
||||
abs(-2)
|
||||
2
|
||||
len('jhb')
|
||||
3
|
||||
max(1,2)
|
||||
2
|
||||
min(1,2)
|
||||
1
|
||||
pow(2,3
|
||||
)
|
||||
8
|
||||
pow(2,3,4)
|
||||
0
|
||||
pow(2,3,3)
|
||||
2
|
||||
sum([1,2])
|
||||
3
|
||||
divmod(10,4)
|
||||
(2, 2)
|
||||
list(map(lambda x: x**2, [1,2,3,4,5]))
|
||||
[1, 4, 9, 16, 25]
|
||||
|
||||
|
||||
|
||||
import math
|
||||
dir(math)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
|
||||
help(math.factorial)
|
||||
Help on built-in function factorial in module math:
|
||||
|
||||
factorial(n, /)
|
||||
Find n!.
|
||||
|
||||
Raise a ValueError if x is negative or non-integral.
|
||||
|
||||
math.factorial(5)
|
||||
120
|
||||
math.sin(0.5)
|
||||
0.479425538604203
|
||||
math.acos(0.5)
|
||||
1.0471975511965979
|
||||
math.degrees(0.55)
|
||||
31.51267873219528
|
||||
math.radians(30)
|
||||
0.5235987755982988
|
||||
math.exp(1)
|
||||
2.718281828459045
|
||||
math.log(10)
|
||||
2.302585092994046
|
||||
math.log10(10)
|
||||
1.0
|
||||
math.sqrt(25)
|
||||
5.0
|
||||
math.ceil(4.3)
|
||||
5
|
||||
math.floor(4.8)
|
||||
4
|
||||
math.pi
|
||||
3.141592653589793
|
||||
math.sin((2*math.pi)/7+math.exp(0.23))
|
||||
0.8334902641414562
|
||||
|
||||
|
||||
import cmath
|
||||
dir(cmath)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
|
||||
cmath.sqrt(1.2-0.5j)
|
||||
(1.118033988749895-0.22360679774997896j)
|
||||
cmath.phase(1-0.5j)
|
||||
-0.4636476090008061
|
||||
|
||||
|
||||
|
||||
import random
|
||||
dir(random)
|
||||
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
|
||||
help(random.seed)
|
||||
Help on method seed in module random:
|
||||
|
||||
seed(a=None, version=2) method of random.Random instance
|
||||
Initialize internal state from a seed.
|
||||
|
||||
The only supported seed types are None, int, float,
|
||||
str, bytes, and bytearray.
|
||||
|
||||
None or no argument seeds from current time or from an operating
|
||||
system specific randomness source if available.
|
||||
|
||||
If *a* is an int, all bits are used.
|
||||
|
||||
For version 2 (the default), all of the bits are used if *a* is a str,
|
||||
bytes, or bytearray. For version 1 (provided for reproducing random
|
||||
sequences from older versions of Python), the algorithm for str and
|
||||
bytes generates a narrower range of seeds.
|
||||
|
||||
random.seed
|
||||
<bound method Random.seed of <random.Random object at 0x000001D9756DE570>>
|
||||
random.seed()
|
||||
r = random.random()
|
||||
r
|
||||
0.6274277749743772
|
||||
u = random.uniform(1, 10)
|
||||
u
|
||||
8.795217202035065
|
||||
rnd = random.randint(1, 10)
|
||||
rnd
|
||||
4
|
||||
g = random.gauss(0,5)
|
||||
g
|
||||
-10.142595842458078
|
||||
g = random.gauss(0,1)
|
||||
g
|
||||
-1.2762551362834256
|
||||
ls = ['a','b','c','d']
|
||||
ch = random.choice(ls)
|
||||
ch
|
||||
'a'
|
||||
sh = random.shuffle(ls)
|
||||
sh
|
||||
random.shuffle(ls)
|
||||
ls
|
||||
['d', 'c', 'a', 'b']
|
||||
s = random.sample(ls,3)
|
||||
s
|
||||
['c', 'b', 'd']
|
||||
b = random.batavariate(2, 5)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#102>", line 1, in <module>
|
||||
b = random.batavariate(2, 5)
|
||||
AttributeError: module 'random' has no attribute 'batavariate'. Did you mean: 'betavariate'?
|
||||
b = random.betavariate(2, 5)
|
||||
b
|
||||
0.2662037969664268
|
||||
g = random.gammavariate(2,2)
|
||||
g
|
||||
4.673121545436751
|
||||
rnd_ls = [random.uniform(1, 10), random.gauss(5, 2), random.betavariate(2, 5), random.gammavariate(2, 2)]
|
||||
rnd_ls
|
||||
[4.085707425290092, 5.648252018761857, 0.05544308773047868, 5.588311173368095]
|
||||
|
||||
import time
|
||||
dir(time)
|
||||
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
|
||||
c1=time.time()
|
||||
c1
|
||||
1760259525.185354
|
||||
c2=time.time()-c1
|
||||
c2
|
||||
12.37006688117981
|
||||
dat=time.gmtime()
|
||||
dat
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=8, tm_min=59, tm_sec=20, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
dat.tm_mon
|
||||
10
|
||||
dat.tm_year
|
||||
2025
|
||||
dat.tm_min
|
||||
59
|
||||
tm = time.localtime()
|
||||
tm
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=12, tm_min=20, tm_sec=40, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
time.asctime()
|
||||
'Sun Oct 12 12:21:46 2025'
|
||||
time.ctime()
|
||||
'Sun Oct 12 12:21:56 2025'
|
||||
time.sleep(5)
|
||||
ti
|
||||
time.mktime(tm)
|
||||
1760260840.0
|
||||
time.localtime(c1)
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=11, tm_min=58, tm_sec=45, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import pylab
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#23>", line 1, in <module>
|
||||
import pylab
|
||||
ModuleNotFoundError: No module named 'pylab'
|
||||
import sys
|
||||
sys.path.append('C:\\Users\\Евгений\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Python 3.13\\lib\\site-packages')
|
||||
import pylab
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#26>", line 1, in <module>
|
||||
import pylab
|
||||
ModuleNotFoundError: No module named 'pylab'
|
||||
sys.path
|
||||
['', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\idlelib', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\python313.zip', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\DLLs', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages', 'C:\\Users\\Евгений\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Python 3.13\\lib\\site-packages']
|
||||
sys.path.append('C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages')
|
||||
import pylab
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#29>", line 1, in <module>
|
||||
import pylab
|
||||
ModuleNotFoundError: No module named 'pylab'
|
||||
py -m site
|
||||
SyntaxError: invalid syntax
|
||||
sys.path
|
||||
['', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\idlelib', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\python313.zip', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\DLLs', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages', 'C:\\Users\\Евгений\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Python 3.13\\lib\\site-packages', 'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages']
|
||||
sys.path.append('C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313\\lib\\site-packages')
|
||||
import pylab
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#33>", line 1, in <module>
|
||||
import pylab
|
||||
ModuleNotFoundError: No module named 'pylab'
|
||||
import pylab
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import pylab
|
||||
x=list(range(-3,55,4))
|
||||
x
|
||||
[-3, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53]
|
||||
t=list(range(15))
|
||||
t
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
|
||||
pylab.plot(t,x) #Создание графика в оперативной памяти
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3BC6EC10>]
|
||||
pylab.title('Первый график')
|
||||
Text(0.5, 1.0, 'Первый график')
|
||||
pylab.xlabel('время')
|
||||
Text(0.5, 0, 'время')
|
||||
pylab.ylabel('сигнал')
|
||||
Text(0, 0.5, 'сигнал')
|
||||
pylab.show() #Отображение графика на экране
|
||||
|
||||
pylab.show() #Отображение графика на экране
|
||||
|
||||
pylab.title('Первый график')
|
||||
Text(0.5, 1.0, 'Первый график')
|
||||
pylab.xlabel('время')
|
||||
Text(0.5, 0, 'время')
|
||||
pylab.ylabel('сигнал')
|
||||
Text(0, 0.5, 'сигнал')
|
||||
pylab.show() #Отображение графика на экране
|
||||
SyntaxError: multiple statements found while compiling a single statement
|
||||
pylab.plot(t,x) #Создание графика в оперативной памяти
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3BC6EC10>]
|
||||
pylab.title('Первый график')
|
||||
Text(0.5, 1.0, 'Первый график')
|
||||
pylab.xlabel('время')
|
||||
Text(0.5, 0, 'время')
|
||||
pylab.ylabel('сигнал')
|
||||
Text(0, 0.5, 'сигнал')
|
||||
pylab.show() #Отображение графика на экране
|
||||
SyntaxError: multiple statements found while compiling a single statement
|
||||
|
||||
|
||||
X1=[12,6,8,10,7];X2=[5,7,9,11,13]
|
||||
X1
|
||||
[12, 6, 8, 10, 7]
|
||||
X2
|
||||
[5, 7, 9, 11, 13]
|
||||
pylab.plot(X1)
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3CD6F4D0>]
|
||||
pylab.plot(X2)
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3CD6F610>]
|
||||
pylab.show()
|
||||
|
||||
|
||||
region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
|
||||
naselen=[65,12,23,17] # Значения для диаграммы
|
||||
pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
|
||||
([<matplotlib.patches.Wedge object at 0x000002CD3BD38050>, <matplotlib.patches.Wedge object at 0x000002CD3CE14F50>, <matplotlib.patches.Wedge object at 0x000002CD3CE15310>, <matplotlib.patches.Wedge object at 0x000002CD3CE15590>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
|
||||
pylab.show() #Отображение диаграммы
|
||||
|
||||
|
||||
pylab.plot(X1)
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3CA98CD0>]
|
||||
pylab.plot(X2)
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3CA98E10>]
|
||||
pylab.show()
|
||||
|
||||
|
||||
ls = [1, 1, 5, 5, 2, 3, 3, 3, 2, 4, 4]
|
||||
pylab.hist(ls, bins=5)
|
||||
(array([2., 2., 3., 2., 2.]), array([1. , 1.8, 2.6, 3.4, 4.2, 5. ]), <BarContainer object of 5 artists>)
|
||||
pylab.title('Гистограмма')
|
||||
Text(0.5, 1.0, 'Гистограмма')
|
||||
pylab.show()
|
||||
ls = [1, 5, 2, 3, 3, 3, 2, 4, 4]
|
||||
ls = [1, 5, 2, 3, 3, 3, 2, 4, 4, 3]
|
||||
pylab.hist(ls, bins=5)
|
||||
(array([1., 2., 4., 2., 1.]), array([1. , 1.8, 2.6, 3.4, 4.2, 5. ]), <BarContainer object of 5 artists>)
|
||||
pylab.title('Гистограмма')
|
||||
Text(0.5, 1.0, 'Гистограмма')
|
||||
pylab.show()
|
||||
|
||||
|
||||
a = ['One', 'Two', 'Three']
|
||||
b = [20, 50, 25]
|
||||
pylab.bar(a, b)
|
||||
<BarContainer object of 3 artists>
|
||||
pylab.title("Столбиковая диаграмма")
|
||||
Text(0.5, 1.0, 'Столбиковая диаграмма')
|
||||
pylab.show()
|
||||
|
||||
|
||||
import statistics
|
||||
dir(statistics)
|
||||
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance']
|
||||
mean = statistics.mean(ls)
|
||||
mean
|
||||
3
|
||||
med = statistic.median(ls)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#105>", line 1, in <module>
|
||||
med = statistic.median(ls)
|
||||
NameError: name 'statistic' is not defined. Did you mean: 'statistics'?
|
||||
med = statistics.median(ls)
|
||||
med
|
||||
3.0
|
||||
mode = statistics.mode(ls)
|
||||
mode
|
||||
3
|
||||
347
TEMA4/report.md
Обычный файл
@@ -0,0 +1,347 @@
|
||||
# Отчет по теме 4
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
## 1 Запуск IDLE
|
||||
## 2 Изучил стандартные встроенные функции
|
||||
### 2.1 Изучил функции округления
|
||||
```py
|
||||
round(123.456,1)
|
||||
123.5
|
||||
a = round(123.456,1)
|
||||
b = round(123.456, 0)
|
||||
a
|
||||
123.5
|
||||
b
|
||||
123.0
|
||||
type(a);type(b)
|
||||
<class 'float'>
|
||||
<class 'float'>
|
||||
round(123.456)
|
||||
123
|
||||
c = round(123.456)
|
||||
type(c)
|
||||
<class 'int'>
|
||||
```
|
||||
### 2.2 Изучил функцию создания последовательности
|
||||
```py
|
||||
gg=range(76,123,9)
|
||||
gg
|
||||
range(76, 123, 9)
|
||||
list(gg)
|
||||
[76, 85, 94, 103, 112, 121]
|
||||
range(23)
|
||||
range(0, 23)
|
||||
list(range(23))
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
|
||||
```
|
||||
## 2.3 Изучил функцию zip
|
||||
```py
|
||||
qq = ['Khatiukhin','Shabatov','Efremov','Turovec']
|
||||
qq
|
||||
['Khatiukhin', 'Shabatov', 'Efremov', 'Turovec']
|
||||
ff = zip(gg,qq)
|
||||
ff
|
||||
<zip object at 0x000001D9754CB040>
|
||||
tuple(ff)
|
||||
((76, 'Khatiukhin'), (85, 'Shabatov'), (94, 'Efremov'), (103, 'Turovec')) #В итоге получилась последовательность из 4 элементов, так как в qq 4 элемента, а в gg 6. Длина равна длине самого короткого списка.
|
||||
ff[1]
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#25>", line 1, in <module>
|
||||
ff[1]
|
||||
TypeError: 'zip' object is not subscriptable
|
||||
```
|
||||
## 2.4 Изучил функцию eval
|
||||
```py
|
||||
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||
коэффициент усиления=40
|
||||
dan
|
||||
44.0
|
||||
```
|
||||
## 2.5 Изучил функцию exec
|
||||
```py
|
||||
exec(input('введите инструкции:'))
|
||||
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||
gg
|
||||
221.456
|
||||
```
|
||||
## 2.6 Изучил ряд полезных функций (abs, pow, max, min, sum, divmod, len, map)
|
||||
- abs - выдает значение по модулю;
|
||||
- len - выдает длину объекта;
|
||||
- max - выдает максимальное число из списка введенных в аргумент;
|
||||
- min - выдает минимальное число из списка введенных в аргумент;
|
||||
- pow - при двух аргументах: возводит первый в степень второго, при наличие третьего аргумента делит получившийся результат на третий аргумент и показывает остаток;
|
||||
- sum - суммирует числа;
|
||||
- divmod - возвращает кортеж (a // b, a % b), где а и b соответственно первый и второй аргумент;
|
||||
- map - применяет функцию из первого аргумента к каждому элементу итерируемого объекта, который указан во втором аргументе.
|
||||
```py
|
||||
abs(-2)
|
||||
2
|
||||
len('jhb')
|
||||
3
|
||||
max(1,2)
|
||||
2
|
||||
min(1,2)
|
||||
1
|
||||
pow(2,3
|
||||
)
|
||||
8
|
||||
pow(2,3,4)
|
||||
0
|
||||
pow(2,3,3)
|
||||
2
|
||||
sum([1,2])
|
||||
3
|
||||
divmod(10,4)
|
||||
(2, 2)
|
||||
list(map(lambda x: x**2, [1,2,3,4,5]))
|
||||
[1, 4, 9, 16, 25]
|
||||
```
|
||||
## 3 Изучил функции из модуля math для работы с математическими выражениями и операциями.
|
||||
- sin - считает и выдает синус аргумента в радианах;
|
||||
- acos - считает и выдает арккосинус аргумента в радианах;
|
||||
- degrees - переводит число в радианах в градусы;
|
||||
- radians - переводит число в градусах в радианы;
|
||||
- exp - выдает значение числа e возведенного в степень, которая указана в аргументе;
|
||||
- log - считает натуральный логарифм числа;
|
||||
- log10 - считает деcятичный логарифм числа;
|
||||
- sqrt - считает корень из числа в аргументе;
|
||||
- ceil - округляет число вверх;
|
||||
- floor - округляет число вниз;
|
||||
- pi - данная функция является представлением числа пи в питоне.
|
||||
```py
|
||||
import math
|
||||
dir(math)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fma', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
|
||||
help(math.factorial)
|
||||
Help on built-in function factorial in module math:
|
||||
|
||||
factorial(n, /)
|
||||
Find n!.
|
||||
|
||||
Raise a ValueError if x is negative or non-integral.
|
||||
|
||||
math.factorial(5)
|
||||
120
|
||||
math.sin(0.5)
|
||||
0.479425538604203
|
||||
math.acos(0.5)
|
||||
1.0471975511965979
|
||||
math.degrees(0.55)
|
||||
31.51267873219528
|
||||
math.radians(30)
|
||||
0.5235987755982988
|
||||
math.exp(1)
|
||||
2.718281828459045
|
||||
math.log(10)
|
||||
2.302585092994046
|
||||
math.log10(10)
|
||||
1.0
|
||||
math.sqrt(25)
|
||||
5.0
|
||||
math.ceil(4.3)
|
||||
5
|
||||
math.floor(4.8)
|
||||
4
|
||||
math.pi
|
||||
3.141592653589793
|
||||
math.sin((2*math.pi)/7+math.exp(0.23))
|
||||
0.8334902641414562
|
||||
```
|
||||
## 4 Изучил модуль cmath для работы с комплексными числами
|
||||
```py
|
||||
import cmath
|
||||
dir(cmath)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
|
||||
cmath.sqrt(1.2-0.5j)
|
||||
(1.118033988749895-0.22360679774997896j)
|
||||
cmath.phase(1-0.5j)
|
||||
-0.4636476090008061
|
||||
```
|
||||
## 5 Изучил стандартный модуль randon для работы с псевдослучайными числами
|
||||
- random - равномерно распределенное случайное число;
|
||||
- uniform- равномерно распределенное случайное число в диапазоне, заданном двумя аргументами;
|
||||
- randint - случайные целые числа в диапазоне от значения первого аргумента до значения второго;
|
||||
- gauss - нормально распределенное случайное число с средним равным первому аргументу и стандартным отклонением равным второму аргументу;
|
||||
- choice - случайный выбор из совокупности указанной в аргументе;
|
||||
- shuffle - случайная перестановка элементов списка в аргументе;
|
||||
- sample - случайный выбор подмножества элементов из списка в первом аргументе (количество элементов равно числу, указанному во втором аргументе);
|
||||
- betavariate - случайное число с бета-распределением, где альфа равна первому аргументу, а бета равна второму аргументу;
|
||||
- gammavariate - случайное число с гамма-распределением, где альфа равна первому аргументу, а бета равна второму аргументу.
|
||||
```py
|
||||
import random
|
||||
dir(random)
|
||||
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_fabs', '_floor', '_index', '_inst', '_isfinite', '_lgamma', '_log', '_log2', '_os', '_parse_args', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', 'betavariate', 'binomialvariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'main', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
|
||||
help(random.seed)
|
||||
Help on method seed in module random:
|
||||
|
||||
seed(a=None, version=2) method of random.Random instance
|
||||
Initialize internal state from a seed.
|
||||
|
||||
The only supported seed types are None, int, float,
|
||||
str, bytes, and bytearray.
|
||||
|
||||
None or no argument seeds from current time or from an operating
|
||||
system specific randomness source if available.
|
||||
|
||||
If *a* is an int, all bits are used.
|
||||
|
||||
For version 2 (the default), all of the bits are used if *a* is a str,
|
||||
bytes, or bytearray. For version 1 (provided for reproducing random
|
||||
sequences from older versions of Python), the algorithm for str and
|
||||
bytes generates a narrower range of seeds.
|
||||
|
||||
random.seed
|
||||
<bound method Random.seed of <random.Random object at 0x000001D9756DE570>>
|
||||
random.seed()
|
||||
r = random.random()
|
||||
r
|
||||
0.6274277749743772
|
||||
u = random.uniform(1, 10)
|
||||
u
|
||||
8.795217202035065
|
||||
rnd = random.randint(1, 10)
|
||||
rnd
|
||||
4
|
||||
g = random.gauss(0,5)
|
||||
g
|
||||
-10.142595842458078
|
||||
g = random.gauss(0,1)
|
||||
g
|
||||
-1.2762551362834256
|
||||
ls = ['a','b','c','d']
|
||||
ch = random.choice(ls)
|
||||
ch
|
||||
'a'
|
||||
random.shuffle(ls)
|
||||
ls
|
||||
['d', 'c', 'a', 'b']
|
||||
s = random.sample(ls,3)
|
||||
s
|
||||
['c', 'b', 'd']
|
||||
b = random.betavariate(2, 5)
|
||||
b
|
||||
0.2662037969664268
|
||||
g = random.gammavariate(2,2)
|
||||
g
|
||||
4.673121545436751
|
||||
rnd_ls = [random.uniform(1, 10), random.gauss(5, 2), random.betavariate(2, 5), random.gammavariate(2, 2)]
|
||||
rnd_ls
|
||||
[4.085707425290092, 5.648252018761857, 0.05544308773047868, 5.588311173368095]
|
||||
```
|
||||
## 6 Изучил модуль time для работы со временем и календарями
|
||||
- time - возвращает время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г;
|
||||
- gmtime - возвращает объект класса struct_time, содержащий полную информацию о текущем времени (UTC): год (tm_year), месяц (tm_mon), день tm_mday);
|
||||
- localtime - для получения «местного» времени (которое стоит на компьютере);
|
||||
- asctime - преобразовывает представление времени из кортежа в строку (просто отображает время в формате строки);
|
||||
- ctime - преобразовывает время в секундах, прошедшего с начала эпохи, в строку;
|
||||
- sleep - прерывает работу программы на заданное время в секундах;
|
||||
- mktime - преобразовывает время из типа кортежа или struct_time в число секунд с начала эпохи.
|
||||
```py
|
||||
import time
|
||||
dir(time)
|
||||
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
|
||||
c1=time.time()
|
||||
c1
|
||||
1760259525.185354
|
||||
c2=time.time()-c1
|
||||
c2
|
||||
12.37006688117981
|
||||
dat=time.gmtime()
|
||||
dat
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=8, tm_min=59, tm_sec=20, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
dat.tm_mon
|
||||
10
|
||||
dat.tm_year
|
||||
2025
|
||||
dat.tm_min
|
||||
59
|
||||
tm = time.localtime()
|
||||
tm
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=12, tm_min=20, tm_sec=40, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
time.asctime()
|
||||
'Sun Oct 12 12:21:46 2025'
|
||||
time.ctime()
|
||||
'Sun Oct 12 12:21:56 2025'
|
||||
time.sleep(5)
|
||||
ti
|
||||
time.mktime(tm)
|
||||
1760260840.0
|
||||
time.localtime(c1)
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=12, tm_hour=11, tm_min=58, tm_sec=45, tm_wday=6, tm_yday=285, tm_isdst=0)
|
||||
```
|
||||
## 7 Изучил графические функции
|
||||
```py
|
||||
import pylab
|
||||
x=list(range(-3,55,4))
|
||||
x
|
||||
[-3, 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53]
|
||||
t=list(range(15))
|
||||
t
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
|
||||
pylab.plot(t,x) #Создание графика в оперативной памяти
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3BC6EC10>]
|
||||
pylab.title('Первый график')
|
||||
Text(0.5, 1.0, 'Первый график')
|
||||
pylab.xlabel('время')
|
||||
Text(0.5, 0, 'время')
|
||||
pylab.ylabel('сигнал')
|
||||
Text(0, 0.5, 'сигнал')
|
||||
pylab.show() #Отображение графика на экране
|
||||
```
|
||||
![[Pasted image 20251012124853.png]]
|
||||
```py
|
||||
X1=[12,6,8,10,7];X2=[5,7,9,11,13]
|
||||
X1
|
||||
[12, 6, 8, 10, 7]
|
||||
X2
|
||||
[5, 7, 9, 11, 13]
|
||||
pylab.plot(X1)
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3CD6F4D0>]
|
||||
pylab.plot(X2)
|
||||
[<matplotlib.lines.Line2D object at 0x000002CD3CD6F610>]
|
||||
pylab.show()
|
||||
```
|
||||
![[Figure_1.png]]
|
||||
```py
|
||||
region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы
|
||||
naselen=[65,12,23,17] # Значения для диаграммы
|
||||
pylab.pie(naselen,labels=region) #Создание диаграммы в памяти
|
||||
([<matplotlib.patches.Wedge object at 0x000002CD3BD38050>, <matplotlib.patches.Wedge object at 0x000002CD3CE14F50>, <matplotlib.patches.Wedge object at 0x000002CD3CE15310>, <matplotlib.patches.Wedge object at 0x000002CD3CE15590>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
|
||||
pylab.show() #Отображение диаграммы
|
||||
```
|
||||
![[Ris2.png]]
|
||||
```py
|
||||
ls = [1, 5, 2, 3, 3, 3, 2, 4, 4, 3]
|
||||
pylab.hist(ls, bins=5)
|
||||
(array([1., 2., 4., 2., 1.]), array([1. , 1.8, 2.6, 3.4, 4.2, 5. ]), <BarContainer object of 5 artists>)
|
||||
pylab.title('Гистограмма')
|
||||
Text(0.5, 1.0, 'Гистограмма')
|
||||
pylab.show()
|
||||
```
|
||||
![[Figure_2.png]]
|
||||
```py
|
||||
a = ['One', 'Two', 'Three']
|
||||
b = [20, 50, 25]
|
||||
pylab.bar(a, b)
|
||||
<BarContainer object of 3 artists>
|
||||
pylab.title("Столбиковая диаграмма")
|
||||
Text(0.5, 1.0, 'Столбиковая диаграмма')
|
||||
pylab.show()
|
||||
```
|
||||
![[Figure_3.png]]
|
||||
## 8 Изучил модуль statistics для работы в сфере статистики
|
||||
```py
|
||||
import statistics
|
||||
dir(statistics)
|
||||
['Counter', 'Decimal', 'Fraction', 'LinearRegression', 'NormalDist', 'StatisticsError', '_SQRT2', '__all__', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_decimal_sqrt_of_frac', '_exact_ratio', '_fail_neg', '_float_sqrt_of_frac', '_integer_sqrt_of_frac_rto', '_isfinite', '_kernel_invcdfs', '_mean_stdev', '_newton_raphson', '_normal_dist_inv_cdf', '_quartic_invcdf', '_quartic_invcdf_estimate', '_random', '_rank', '_sqrt_bit_width', '_sqrtprod', '_ss', '_sum', '_triweight_invcdf', '_triweight_invcdf_estimate', 'acos', 'asin', 'atan', 'bisect_left', 'bisect_right', 'correlation', 'cos', 'cosh', 'count', 'covariance', 'defaultdict', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'isfinite', 'isinf', 'itemgetter', 'kde', 'kde_random', 'linear_regression', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'namedtuple', 'numbers', 'pi', 'pstdev', 'pvariance', 'quantiles', 'random', 'reduce', 'repeat', 'sin', 'sqrt', 'stdev', 'sumprod', 'sys', 'tan', 'tau', 'variance']
|
||||
mean = statistics.mean(ls)
|
||||
mean
|
||||
3
|
||||
med = statistics.median(ls)
|
||||
med
|
||||
3.0
|
||||
mode = statistics.mode(ls)
|
||||
mode
|
||||
3
|
||||
```
|
||||
## 9 Завершил работу в IDLE
|
||||
42
TEMA4/task.md
Обычный файл
@@ -0,0 +1,42 @@
|
||||
# Общее контрольное задание по теме 4
|
||||
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
|
||||
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
|
||||
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
|
||||
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
|
||||
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>>divmod((round(cmath.phase(0.2+0.8j), 2))*20, 3)
|
||||
(8.0, 2.6000000000000014)
|
||||
>>>divmod(math.floor((round(cmath.phase(0.2+0.8j), 2))*20), 3) #Для получения остатка в целом виде и делении целых чисел, можно использовать такое выражение.
|
||||
(8, 2)
|
||||
>>>v = time.localtime()
|
||||
>>>v
|
||||
time.struct_time(tm_year=2025, tm_mon=9, tm_mday=11, tm_hour=14, tm_min=3, tm_sec=26, tm_wday=3, tm_yday=254, tm_isdst=0)
|
||||
>>>st = v.tm_hour, v.tm_min
|
||||
>>>st = str(v.tm_hour)+" hour "+str(v.tm_min)+" min "
|
||||
>>>st
|
||||
'14 hour 3 min '
|
||||
>>>ned = ["пн", "вт", "ср", "чт", "пт", "сб", "вскр"]
|
||||
>>>random.sample(ned, 3)
|
||||
['пн', 'вскр', 'вт']
|
||||
>>>random.choice(list(range(14, 33, 3)))
|
||||
20
|
||||
>>>N = round(random.gauss(15, 4))
|
||||
>>>N
|
||||
15
|
||||
>>>import string #Импортировал модуль в котором есть латинский алфавит, чтобы из него выбрать буквы. Без использования этого модуля создавать список с алфавитом нужно было бы вручную.
|
||||
>>>random.sample(string.ascii_letters, N)
|
||||
['M', 'J', 'X', 'H', 'R', 'D', 'V', 'U', 'c', 'g', 'l', 'k', 'm', 't', 'w']
|
||||
>>>time.localtime().tm_min - v.tm_min
|
||||
24
|
||||
```
|
||||
17
TEMA4/ИКЗ.py
Обычный файл
@@ -0,0 +1,17 @@
|
||||
import time
|
||||
import random
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
dic = {
|
||||
'Студент': ['Хатюхин','Шабатов','Туровец'],
|
||||
'Институт': ('ИВТИ','ИАЭ','ИТАЭ','ЭнМИ'),
|
||||
'Корпус': ['А','Б','Г','Д','К','М']
|
||||
}
|
||||
|
||||
rnd_institut = random.sample(dic['Институт'],1)
|
||||
|
||||
print(f'Выбран институт = {rnd_institut}')
|
||||
end_time = time.time()
|
||||
delta = end_time - start_time
|
||||
print(f'Времени прошло: {delta}')
|
||||
25
TEMA5/IKZ.md
Обычный файл
@@ -0,0 +1,25 @@
|
||||
25. Создайте список с 50 элементами – целыми случайными числами из диапазона значений от -1 до +1. Определите по этому списку, сколько раз последующее число было меньше предыдущего, сколько – больше и сколько – равным. Отобразите результат в виде строки: «Больше=ХХ, меньше=ХХ, равно=ХХ».
|
||||
|
||||
```py
|
||||
import random
|
||||
|
||||
random.seed(5)
|
||||
|
||||
sps = []
|
||||
for i in range(50):
|
||||
sps.append(random.randint(-1, 1))
|
||||
print("Полученный список",sps)
|
||||
|
||||
men = 0
|
||||
bol = 0
|
||||
rav = 0
|
||||
|
||||
for i in range(1,50):
|
||||
if sps[i-1] < sps[i]:
|
||||
men+=1
|
||||
elif sps[i-1] > sps[i]:
|
||||
bol+=1
|
||||
else:
|
||||
rav+=1
|
||||
print(f"Больше = {bol}, меньше = {men}, равно = {rav}")
|
||||
```
|
||||
8
TEMA5/dfbdf.py
Обычный файл
@@ -0,0 +1,8 @@
|
||||
f = 0
|
||||
for i in range(1,2):
|
||||
if i % 2 == 0:
|
||||
f+=1
|
||||
print(i)
|
||||
if f == 2:
|
||||
break
|
||||
else: print("gtgtgttg")
|
||||
Двоичные данные
TEMA5/pic0.png
Обычный файл
|
После Ширина: | Высота: | Размер: 87 KiB |
Двоичные данные
TEMA5/pic1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 28 KiB |
331
TEMA5/report.md
Обычный файл
@@ -0,0 +1,331 @@
|
||||
# Отчет по теме 5
|
||||
|
||||
Хатюхин Евгений Сергеевич, А-02-23
|
||||
|
||||
## 1 Запустил IDLE
|
||||
## 2 Изучил блок ЕСЛИ
|
||||
```py
|
||||
porog = 35
|
||||
rashod1 = 21
|
||||
rashod2 = 15
|
||||
if rashod1>=porog:
|
||||
dohod=12
|
||||
elif rashod2==porog:
|
||||
dohod=0
|
||||
else:
|
||||
dohod=-8
|
||||
|
||||
|
||||
dohod
|
||||
-8
|
||||
if rashod1>=3 and rashod2==4:
|
||||
dohod=rashod1
|
||||
if rashod2==porog or rashod1<rashod2:
|
||||
dohod=porog
|
||||
dohod
|
||||
-8
|
||||
if porog==3:
|
||||
dohod=1
|
||||
elif porog==4:
|
||||
dohod=2
|
||||
elif porog==5:
|
||||
dohod=3
|
||||
else:
|
||||
dohod=0
|
||||
|
||||
|
||||
dohod
|
||||
0
|
||||
dohod=2 if porog>=4 else 0
|
||||
dohod
|
||||
2
|
||||
if porog>=5 : rashod1=6; rashod2=0
|
||||
|
||||
rashod1
|
||||
6
|
||||
rashod2
|
||||
0
|
||||
```
|
||||
|
||||
## 3 Изучил блок ДЛЯ
|
||||
|
||||
Был изучен и применен блок for, разобрана простая конструкция и несколько сложных.
|
||||
|
||||
## 3.1 Изучил простой цикл for
|
||||
|
||||
```py
|
||||
temperatura=5
|
||||
for i in range(3,18,3):
|
||||
temperatura+=i
|
||||
|
||||
|
||||
temperatura
|
||||
50
|
||||
```
|
||||
|
||||
## 3.2 Изучил первый сложный цикл for
|
||||
|
||||
Был применен цикл for, который приписывает к списку первый его элемент каждую итерацию, до тех пор, пока длина списка не будет равна или больше 10. Испробованы два способа передачи списка - как изменяемый список и как неизменяемую копию.
|
||||
|
||||
```py
|
||||
sps=[2,15,14,8]
|
||||
for k in sps:
|
||||
if len(sps)<=10:sps.append(sps[0]) #В данном варианте итерации проходят по изменяющемуся списку. Каждый раз список растет на единицу и его длина увеличивается. Каждую новую итерацию у списка новая длина.
|
||||
else:break
|
||||
|
||||
|
||||
sps
|
||||
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
|
||||
sps=[2,15,14,8]
|
||||
for k in sps[:]:
|
||||
if len(sps)<=10:sps.append(sps[0]) #В этом варианте список итерируется по копии, то есть исходному списку, чья длина всегда равна 4. Цикл выполняется 4 раза, так как список имеет 4 элемента.
|
||||
else:break
|
||||
|
||||
|
||||
sps
|
||||
[2, 15, 14, 8, 2, 2, 2, 2]
|
||||
```
|
||||
|
||||
## 3.3 Изучил второй сложный цикл for
|
||||
|
||||
Был применен цикл for, в котором при каждой итерации для i от 0 до 9, созданный пустой список пополняется значением от 0 до 97 и подсчитывается сумма чисел в списке. При достижении суммы числа более 500, итерация прерывается. Если же итерации успевают закончиться естественным образом и сумма получается значением менее 500, по сумма печатается на экран.
|
||||
|
||||
```py
|
||||
import random as rn
|
||||
sps5=[]
|
||||
for i in range(10):
|
||||
sps5.append(rn.randint(1,97))
|
||||
ss=sum(sps5)
|
||||
if ss>500: break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
|
||||
374
|
||||
ss=0
|
||||
sps5=[]
|
||||
for i in range(10):
|
||||
sps5.append(rn.randint(1,97))
|
||||
ss=sum(sps5)
|
||||
if ss>500: break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
|
||||
426
|
||||
ss=0
|
||||
sps5=[]
|
||||
for i in range(10):
|
||||
sps5.append(rn.randint(1,97))
|
||||
ss=sum(sps5)
|
||||
if ss>500: break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
## 3.4 Изучил цикл с символьной строкой
|
||||
```py
|
||||
stroka='Это – автоматизированная система'
|
||||
stroka1=""
|
||||
for ss in stroka:
|
||||
stroka1+=" "+ss
|
||||
|
||||
|
||||
stroka1
|
||||
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
|
||||
ss
|
||||
'а'
|
||||
```
|
||||
|
||||
## 3.5 Изучил записи цикла в строке
|
||||
```py
|
||||
import math
|
||||
sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
|
||||
import pylab
|
||||
pylab.plot(range(100), sps2)
|
||||
[<matplotlib.lines.Line2D object at 0x000002B75BB1E990>]
|
||||
pylab.title("Сигналы")
|
||||
Text(0.5, 1.0, 'Сигналы')
|
||||
pylab.show()
|
||||
```
|
||||
|
||||
![[pic0.png]]
|
||||
|
||||
## 4 Изучил цикл ПОКА
|
||||
|
||||
Были изучены и применены различные варианты циклов с использованием блоков while.
|
||||
|
||||
## 4.1 Изучил цикл while со счетчиком
|
||||
|
||||
Был применен цикл while, который уменьшает значение rashod на 50 единиц. Здесь rashod = True до тех пор пока его значение положительное. Когда rashod становится равным 0, цикл прерывается. На каждой итерации печатается значение rashod.
|
||||
|
||||
```py
|
||||
rashod=300
|
||||
while rashod:
|
||||
print("Расход=",rashod)
|
||||
rashod-=50
|
||||
|
||||
|
||||
Расход= 300
|
||||
Расход= 250
|
||||
Расход= 200
|
||||
Расход= 150
|
||||
Расход= 100
|
||||
Расход= 50
|
||||
```
|
||||
|
||||
## 4.2 Изучил цикл while с символьной строкой
|
||||
|
||||
Был применен цикл while, который для каждой i, что изменяется от 0 до длины строки stroka, вычисляет значение r, используя выражение, в которое входит i, и формирует из этих значений список. Далее по значениям из списка был построен график.
|
||||
|
||||
```py
|
||||
import math
|
||||
stroka='Расчет процесса в объекте регулирования'
|
||||
i=0
|
||||
sps2=[]
|
||||
while i<len(stroka):
|
||||
r=1-2/(1+math.exp(0.1*i))
|
||||
sps2.append(r)
|
||||
print('Значение в момент',i,"=",r)
|
||||
i+=1
|
||||
|
||||
|
||||
Значение в момент 0 = 0.0
|
||||
Значение в момент 1 = 0.049958374957880025
|
||||
Значение в момент 2 = 0.09966799462495568
|
||||
Значение в момент 3 = 0.14888503362331795
|
||||
Значение в момент 4 = 0.197375320224904
|
||||
Значение в момент 5 = 0.2449186624037092
|
||||
Значение в момент 6 = 0.2913126124515909
|
||||
Значение в момент 7 = 0.3363755443363322
|
||||
Значение в момент 8 = 0.3799489622552249
|
||||
Значение в момент 9 = 0.421899005250008
|
||||
Значение в момент 10 = 0.4621171572600098
|
||||
Значение в момент 11 = 0.5005202111902354
|
||||
Значение в момент 12 = 0.5370495669980353
|
||||
Значение в момент 13 = 0.5716699660851172
|
||||
Значение в момент 14 = 0.6043677771171636
|
||||
Значение в момент 15 = 0.6351489523872873
|
||||
Значение в момент 16 = 0.6640367702678489
|
||||
Значение в момент 17 = 0.6910694698329307
|
||||
Значение в момент 18 = 0.7162978701990245
|
||||
Значение в момент 19 = 0.7397830512740043
|
||||
Значение в момент 20 = 0.7615941559557649
|
||||
Значение в момент 21 = 0.7818063576087741
|
||||
Значение в момент 22 = 0.8004990217606297
|
||||
Значение в момент 23 = 0.8177540779702878
|
||||
Значение в момент 24 = 0.8336546070121553
|
||||
Значение в момент 25 = 0.8482836399575129
|
||||
Значение в момент 26 = 0.8617231593133063
|
||||
Значение в момент 27 = 0.874053287886007
|
||||
Значение в момент 28 = 0.8853516482022625
|
||||
Значение в момент 29 = 0.8956928738431645
|
||||
Значение в момент 30 = 0.9051482536448664
|
||||
Значение в момент 31 = 0.9137854901178277
|
||||
Значение в момент 32 = 0.9216685544064713
|
||||
Значение в момент 33 = 0.9288576214547277
|
||||
Значение в момент 34 = 0.935409070603099
|
||||
Значение в момент 35 = 0.9413755384972874
|
||||
Значение в момент 36 = 0.9468060128462683
|
||||
Значение в момент 37 = 0.9517459571646616
|
||||
Значение в момент 38 = 0.9562374581277391
|
||||
pylab.plot(range(len(stroka)), sps2)
|
||||
|
||||
[<matplotlib.lines.Line2D object at 0x000002B75F66FC50>]
|
||||
pylab.title("процесс регульрования")
|
||||
pylab.show()
|
||||
```
|
||||
|
||||
![[pic1.png]]
|
||||
|
||||
## 4.3 Изучил блок while для проверки числа на свойство простого числа
|
||||
|
||||
Был применен цикл while, который проверяет остаток от деления заданного числа, на все числа начиная от половины собственного значения до 2, при этом если хоть раз этот остаток равен 0, то выводится надпись о том, что число имеет множитель и цикл прерывается. Если же остаток никогда не равен 0, то цикл выполняется до тех пор, пока делитель не будет равен единице и после этого будет выведена надпись, что число является простым.
|
||||
|
||||
```py
|
||||
chislo=267 #Проверяемое число
|
||||
kandidat =chislo // 2 # Для значений chislo > 1
|
||||
while kandidat > 1:
|
||||
if chislo%kandidat == 0: # Остаток от деления
|
||||
print(chislo, ' имеет множитель ', kandidat)
|
||||
break # else выполняться не будет
|
||||
kandidat -= 1
|
||||
else: # При завершении цикла без break
|
||||
print(chislo, ' является простым!')
|
||||
|
||||
|
||||
267 имеет множитель 89
|
||||
```
|
||||
|
||||
Также предыдущий код был изменен таким образом, что был добавлен цикл for, который еще перебирает числа от 250 до 300 включительно и выполняет вышеописанные операции с каждым числом.
|
||||
|
||||
```py
|
||||
for chislo in range(250, 301): # Проходим по диапазону чисел
|
||||
kandidat = chislo // 2 # Для значений chislo > 1
|
||||
while kandidat > 1:
|
||||
if chislo % kandidat == 0: # Остаток от деления
|
||||
print(chislo, ' имеет множитель ', kandidat)
|
||||
break # else выполняться не будет
|
||||
kandidat -= 1
|
||||
else: # При завершении цикла while без break
|
||||
print(chislo, ' является простым!')
|
||||
|
||||
|
||||
250 имеет множитель 125
|
||||
251 является простым!
|
||||
252 имеет множитель 126
|
||||
253 имеет множитель 23
|
||||
254 имеет множитель 127
|
||||
255 имеет множитель 85
|
||||
256 имеет множитель 128
|
||||
257 является простым!
|
||||
258 имеет множитель 129
|
||||
259 имеет множитель 37
|
||||
260 имеет множитель 130
|
||||
261 имеет множитель 87
|
||||
262 имеет множитель 131
|
||||
263 является простым!
|
||||
264 имеет множитель 132
|
||||
265 имеет множитель 53
|
||||
266 имеет множитель 133
|
||||
267 имеет множитель 89
|
||||
268 имеет множитель 134
|
||||
269 является простым!
|
||||
270 имеет множитель 135
|
||||
271 является простым!
|
||||
272 имеет множитель 136
|
||||
273 имеет множитель 91
|
||||
274 имеет множитель 137
|
||||
275 имеет множитель 55
|
||||
276 имеет множитель 138
|
||||
277 является простым!
|
||||
278 имеет множитель 139
|
||||
279 имеет множитель 93
|
||||
280 имеет множитель 140
|
||||
281 является простым!
|
||||
282 имеет множитель 141
|
||||
283 является простым!
|
||||
284 имеет множитель 142
|
||||
285 имеет множитель 95
|
||||
286 имеет множитель 143
|
||||
287 имеет множитель 41
|
||||
288 имеет множитель 144
|
||||
289 имеет множитель 17
|
||||
290 имеет множитель 145
|
||||
291 имеет множитель 97
|
||||
292 имеет множитель 146
|
||||
293 является простым!
|
||||
294 имеет множитель 147
|
||||
295 имеет множитель 59
|
||||
296 имеет множитель 148
|
||||
297 имеет множитель 99
|
||||
298 имеет множитель 149
|
||||
299 имеет множитель 23
|
||||
300 имеет множитель 150
|
||||
```
|
||||
## 5 Завершил работу в IDLE
|
||||
|
||||
|
||||
82
TEMA5/task.md
Обычный файл
@@ -0,0 +1,82 @@
|
||||
# Общее контрольное задание по теме 5
|
||||
|
||||
Хатюхин Евгений Сергеевич, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
|
||||
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
|
||||
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
|
||||
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>>import string
|
||||
>>>text = "hello my friend"
|
||||
>>>for char in text:
|
||||
if char in string.ascii_lowercase:
|
||||
order = string.ascii_lowercase.index(char) + 1
|
||||
print(char, "=", order)
|
||||
else:
|
||||
print("это не буква")
|
||||
|
||||
|
||||
h = 8
|
||||
e = 5
|
||||
l = 12
|
||||
l = 12
|
||||
o = 15
|
||||
это не буква
|
||||
m = 13
|
||||
y = 25
|
||||
это не буква
|
||||
f = 6
|
||||
r = 18
|
||||
i = 9
|
||||
e = 5
|
||||
n = 14
|
||||
d = 4
|
||||
>>>Str = "Создайте список со словами из задания данного пункта"
|
||||
>>>L=list(Str.split())
|
||||
>>>L
|
||||
['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта']
|
||||
>>>slovo = 'список'
|
||||
>>>if slovo in L:
|
||||
print("Это слово есть в тексте")
|
||||
else: print("Этого слова нет в тексте")
|
||||
|
||||
Это слово есть в тексте
|
||||
>>>slovo = "Привет"
|
||||
>>>if slovo in L:
|
||||
print("Это слово есть в тексте")
|
||||
else: print("Этого слова нет в тексте")
|
||||
|
||||
Этого слова нет в тексте
|
||||
>>>students = ["Dobrovolska", "Efremov", "Zelenkina", "Pohil"]
|
||||
>>>leto = [4, 5, 3, 5]
|
||||
>>>students2 = ["Efremov", "Pohil", "Zelenkina", "Dobrovolska"]
|
||||
>>>zima = [5, 3, 3, 5]
|
||||
>>>name=input("Введите фамилию студента: ")
|
||||
Введите фамилию студента: Dobrovolska
|
||||
>>>if name in students and name in students2:
|
||||
leto_grade = leto[students.index(name)]
|
||||
zima_grade = zima[students2.index(name)]
|
||||
print("Студент:", name, ". Летняя:", leto_grade, ", Зимняя:", zima_grade)
|
||||
else:
|
||||
print("Студент", name, "не найден.")
|
||||
|
||||
|
||||
Студент: Dobrovolska . Летняя: 4 , Зимняя: 5
|
||||
>>>name=input("Введите фамилию студента: ")
|
||||
Введите фамилию студента: ghgghg
|
||||
>>>if name in students and name in students2:
|
||||
leto_grade = leto[students.index(name)]
|
||||
zima_grade = zima[students2.index(name)]
|
||||
print("Студент:", name, ". Летняя:", leto_grade, ", Зимняя:", zima_grade)
|
||||
else:
|
||||
print("Студент", name, "не найден.")
|
||||
|
||||
|
||||
Студент ghgghg не найден.
|
||||
```
|
||||
Двоичные данные
TEMA6/1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 51 KiB |
0
TEMA6/123.txt
Обычный файл
Двоичные данные
TEMA6/2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 71 KiB |
Двоичные данные
TEMA6/3.png
Обычный файл
|
После Ширина: | Высота: | Размер: 80 KiB |
Двоичные данные
TEMA6/4.png
Обычный файл
|
После Ширина: | Высота: | Размер: 16 KiB |
Двоичные данные
TEMA6/5.png
Обычный файл
|
После Ширина: | Высота: | Размер: 13 KiB |
Двоичные данные
TEMA6/6.png
Обычный файл
|
После Ширина: | Высота: | Размер: 13 KiB |
Двоичные данные
TEMA6/7.png
Обычный файл
|
После Ширина: | Высота: | Размер: 14 KiB |
Двоичные данные
TEMA6/8.png
Обычный файл
|
После Ширина: | Высота: | Размер: 14 KiB |
Двоичные данные
TEMA6/9.png
Обычный файл
|
После Ширина: | Высота: | Размер: 13 KiB |
55
TEMA6/IKZ.md
Обычный файл
@@ -0,0 +1,55 @@
|
||||
M2_8
|
||||
|
||||
1) Создайте множество с 40 элементами - случайными числами, равномерно распределенными на интервале от -20 до +10. Числа должны быть округлены до двух знаков после точки.
|
||||
|
||||
2) Запросите у пользователя и введите имя бинарного файла для сохранения множества. Если во введенном имени есть пробелы, замените их на пустые строки.
|
||||
|
||||
3) Запишите множество в бинарный файл с указанным именем.
|
||||
|
||||
4) Удалите из памяти созданное множество.
|
||||
|
||||
5) Прочитайте множество из файла и рассчитайте по его элементам среднее значение. Отобразите его на экране по шаблону: " По <число элементов> среднее = <рассчитанное значение>". Выводимое среднее округлить до двух знаков после точки.
|
||||
```py
|
||||
import random
|
||||
import os
|
||||
import pickle
|
||||
import math
|
||||
|
||||
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
|
||||
random.seed(5)
|
||||
|
||||
#1)
|
||||
mnoz = set()
|
||||
for i in range(40):
|
||||
num = round(random.uniform(-20, 10), 2)
|
||||
mnoz.add(num)
|
||||
|
||||
print(f"Создано множество: {mnoz}")
|
||||
|
||||
#2)
|
||||
fl_name = input('Введите имя бинарного файла: ')
|
||||
fl_name = fl_name.replace(" ", "")
|
||||
print(f"Имя Вашего файла: '{fl_name}'")
|
||||
|
||||
#3)
|
||||
fp = open(fl_name, 'wb')
|
||||
pickle.dump(mnoz, fp)
|
||||
fp.close()
|
||||
print(f"Множество записано в Ваш файл: '{fl_name}'")
|
||||
|
||||
#4)
|
||||
del mnoz
|
||||
print("Множество удалено из памяти")
|
||||
|
||||
#5)
|
||||
try:
|
||||
fp = open(fl_name, 'rb')
|
||||
load = pickle.load(fp)
|
||||
fp.close()
|
||||
except FileNotFoundError:
|
||||
print(f"Файл '{file_name}' не найден")
|
||||
|
||||
sm = sum(load) / len(load)
|
||||
sm = round(sm,2)
|
||||
print(f"По {len(load)} элементам среднее = {sm}")
|
||||
```
|
||||
42
TEMA6/IKZ.py
Обычный файл
@@ -0,0 +1,42 @@
|
||||
import random
|
||||
import os
|
||||
import pickle
|
||||
import math
|
||||
|
||||
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
|
||||
random.seed(5)
|
||||
|
||||
#1)
|
||||
mnoz = set()
|
||||
for i in range(40):
|
||||
num = round(random.uniform(-20, 10), 2)
|
||||
mnoz.add(num)
|
||||
|
||||
print(f"Создано множество: {mnoz}")
|
||||
|
||||
#2)
|
||||
fl_name = input('Введите имя бинарного файла: ')
|
||||
fl_name = fl_name.replace(" ", "")
|
||||
print(f"Имя Вашего файла: '{fl_name}'")
|
||||
|
||||
#3)
|
||||
fp = open(fl_name, 'wb')
|
||||
pickle.dump(mnoz, fp)
|
||||
fp.close()
|
||||
print(f"Множество записано в Ваш файл: '{fl_name}'")
|
||||
|
||||
#4)
|
||||
del mnoz
|
||||
print("Множество удалено из памяти")
|
||||
|
||||
#5)
|
||||
try:
|
||||
fp = open(fl_name, 'rb')
|
||||
load = pickle.load(fp)
|
||||
fp.close()
|
||||
except FileNotFoundError:
|
||||
print(f"Файл '{file_name}' не найден")
|
||||
|
||||
sm = sum(load) / len(load)
|
||||
sm = round(sm,2)
|
||||
print(f"По {len(load)} элементам среднее = {sm}")
|
||||
1
TEMA6/Stroka.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
запись строки в файл
|
||||
Двоичные данные
TEMA6/binomnutona
Обычный файл
320
TEMA6/task.md
Обычный файл
@@ -0,0 +1,320 @@
|
||||
# Отчет по теме 6
|
||||
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
# 1 Запустил IDLE
|
||||
# 2 Изучил вывод данных на экран дисплея
|
||||
## 2.1 Изучил эхо-вывод
|
||||
```py
|
||||
stroka='Автоматизированная система управления'
|
||||
stroka
|
||||
'Автоматизированная система управления'
|
||||
```
|
||||
## 2.2 Изучение вывода данных с помощью печати
|
||||
```py
|
||||
fff=234.5;gg='Значение температуры = '
|
||||
print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
|
||||
Значение температуры = 234.5
|
||||
print(gg, fff, sep='/')
|
||||
Значение температуры = /234.5
|
||||
print(gg, fff,sep='/',end='***'); print('____')
|
||||
Значение температуры = /234.5***____
|
||||
print()
|
||||
|
||||
print(""" Здесь может выводиться
|
||||
большой текст,
|
||||
занимающий несколько строк""")
|
||||
Здесь может выводиться
|
||||
большой текст,
|
||||
занимающий несколько строк
|
||||
print("Здесь может выводиться",
|
||||
"большой текст,",
|
||||
"занимающий несколько строк")
|
||||
|
||||
Здесь может выводиться большой текст, занимающий несколько строк
|
||||
```
|
||||
## 2.3 Изучение вывода данных с помощью функции write
|
||||
```py
|
||||
import sys
|
||||
sys.stdout.write('Функция write')
|
||||
Функция write13
|
||||
sys.stdout.write('Функция write\n')
|
||||
Функция write
|
||||
14
|
||||
```
|
||||
# 3 Изучение ввода данных с клавиатуры
|
||||
```py
|
||||
psw=input('Введите пароль:')
|
||||
Введите пароль:12345
|
||||
psw
|
||||
'12345'
|
||||
type(psw)
|
||||
<class 'str'>
|
||||
while True:
|
||||
znach=float(input('Задайте коэф.усиления = '))
|
||||
if znach<17.5 or znach>23.8:
|
||||
print('Ошибка!')
|
||||
else:
|
||||
break
|
||||
|
||||
|
||||
Задайте коэф.усиления = 15.4
|
||||
Ошибка!
|
||||
Задайте коэф.усиления = 21.6
|
||||
|
||||
|
||||
import math
|
||||
print(eval(input('введите выражение для расчета = ')))
|
||||
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
|
||||
1.34504378689765
|
||||
```
|
||||
# 4 Изучение различных способов чтения данных из файла и записи в файл
|
||||
## 4.1 Изучение модуля os для работы с путями к файлам
|
||||
|
||||
mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилась папка);
|
||||
![[TEMA6/1.png]]
|
||||
rmdir - удаляет из каталога пустую папку;
|
||||
![[TEMA6/2.png]]
|
||||
listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге);
|
||||
path.isdir - возвращает true, если папка является существующей в каталоге.
|
||||
```py
|
||||
import os
|
||||
os.getcwd()
|
||||
'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313'
|
||||
a = str(os.getcwd())
|
||||
a
|
||||
'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313'
|
||||
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
|
||||
os.getcwd()
|
||||
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6'
|
||||
os.mkdir("new1")
|
||||
os.rmdir("new1")
|
||||
os.listdir()
|
||||
['.gitkeep', 'task.md']
|
||||
os.path.isdir("new1")
|
||||
False
|
||||
os.path.isdir("task")
|
||||
False
|
||||
os.path.isdir("tema")
|
||||
False
|
||||
os.path.isdir("report")
|
||||
False
|
||||
os.path.isdir("abc")
|
||||
True
|
||||
fil=os.path.abspath("report.md")
|
||||
fil
|
||||
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6\\report.md'
|
||||
drkt=os.path.dirname(fil)
|
||||
drkt
|
||||
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6'
|
||||
name = os.path.basename(fil)
|
||||
name
|
||||
'report.md'
|
||||
head, tail = os.path.split(fil)
|
||||
head
|
||||
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6'
|
||||
tail
|
||||
'report.md'
|
||||
os.path.exists('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
|
||||
True
|
||||
os.path.exists('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA8')
|
||||
True
|
||||
os.path.exists('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA20')
|
||||
False
|
||||
os.path.isfile(fil)
|
||||
False
|
||||
os.path.isfile(head+tail)
|
||||
False
|
||||
os.path.isfile(head+'task.md')
|
||||
False
|
||||
fil=os.path.abspath("task.md")
|
||||
os.path.isfile(fil)
|
||||
True
|
||||
```
|
||||
## 4.2 Изучение обобщенного процесса работы с файлами
|
||||
Для обмена данными с файлом необходимо выполнить следующие операции:
|
||||
- Открытие файла с указанием его имени и цели (чтение, запись, добавление данных);
|
||||
- Выполнение одной или нескольких операций обмена данными с файлом;
|
||||
- Закрытие файла.
|
||||
## 4.3 Изучение функции open для открытия файлов с разной целью
|
||||
```py
|
||||
fp=open(file=drkt+'\\zapis1.txt',mode='w')
|
||||
fp=open(drkt+'\\zapis1.txt','w')
|
||||
fp=open('zapis1.txt','w')
|
||||
type(fp)
|
||||
<class '_io.TextIOWrapper'>
|
||||
dir(fp)
|
||||
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
|
||||
|
||||
```
|
||||
## 4.4 Изучение закрытия файла
|
||||
```py
|
||||
fp.close()
|
||||
```
|
||||
## 4.5 Изучение функции write для записи данных в текст
|
||||
```py
|
||||
sps=list(range(1,13))
|
||||
sps
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||
fp2=open('zapis3.txt','w')
|
||||
fp2.write(str(sps[:4])+'\n')
|
||||
13
|
||||
fp2.write(str(sps[4:8])+'\n')
|
||||
13
|
||||
fp2.write(str(sps[8:])+'\n')
|
||||
16
|
||||
fp2.close()
|
||||
```
|
||||
![[4.png]]
|
||||
```py
|
||||
sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
|
||||
sps3
|
||||
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
|
||||
fp3=open('zapis4.txt','w')
|
||||
for i in range(len(sps3)):
|
||||
stroka4=sps3[i][0]+' '+str(sps3[i][1])
|
||||
fp3.write(stroka4)
|
||||
|
||||
|
||||
11
|
||||
11
|
||||
12
|
||||
fp3.close()
|
||||
```
|
||||
![[5.png]]
|
||||
```py
|
||||
gh=open('zapis5.txt','w')
|
||||
for r in sps3:
|
||||
gh.write(r[0]+' '+str(r[1])+'\n')
|
||||
|
||||
|
||||
12
|
||||
12
|
||||
13
|
||||
gh.close()
|
||||
gh=open('zapis6.txt','w')
|
||||
for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
|
||||
|
||||
12
|
||||
12
|
||||
13
|
||||
gh.close()
|
||||
```
|
||||
![[6.png]]
|
||||
![[7.png]]
|
||||
## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for
|
||||
```py
|
||||
sps1=[]
|
||||
fp=open('zapis3.txt')
|
||||
for stroka in fp:
|
||||
stroka=stroka.rstrip('\n')
|
||||
stroka=stroka.replace('[','')
|
||||
stroka=stroka.replace(']','')
|
||||
sps1=sps1+stroka.split(',')
|
||||
|
||||
|
||||
fp.close()
|
||||
sps1
|
||||
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
|
||||
sps2=[]
|
||||
for i in sps1:
|
||||
sps2.append(int(i))
|
||||
|
||||
|
||||
sps2
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||
```
|
||||
## 4.7 Изучение способа чтения данных из файла с помощью функции read
|
||||
```py
|
||||
fp=open('zapis3.txt')
|
||||
stroka1=fp.read(12)
|
||||
stroka2=fp.read()
|
||||
fp.close()
|
||||
stroka1
|
||||
|
||||
'[1, 2, 3, 4]'
|
||||
stroka2
|
||||
|
||||
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
|
||||
|
||||
```
|
||||
## 4.8 Изучение чтения данных из файла по строкам
|
||||
```py
|
||||
fp=open('zapis3.txt')
|
||||
s1 = fp.readline()
|
||||
s2 = fp.readline()
|
||||
s1
|
||||
|
||||
'[1, 2, 3, 4]\n'
|
||||
s2
|
||||
|
||||
'[5, 6, 7, 8]\n'
|
||||
fp.close()
|
||||
fp=open('zapis3.txt')
|
||||
s3 = fp.readlines()
|
||||
s3
|
||||
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
|
||||
```
|
||||
## 4.9 Изучение работы с бинарными файлами с помощью модуля pickle
|
||||
```py
|
||||
import pickle
|
||||
mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество»
|
||||
fp=open('zapis6.mnz','wb') # Бинарный файл – на запись
|
||||
pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл
|
||||
fp.close()
|
||||
fp=open('zapis6.mnz','rb')
|
||||
mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла
|
||||
fp.close()
|
||||
mnoz2 #Результат не такой как при вводе множества mnoz1, так как множество не имеет повторений и порядка элементов, поэтому автоматически множество обьединило повторяющиеся слова.
|
||||
{'pen', 'book', 'iPhone', 'table'}
|
||||
mnoz1 == mnoz2
|
||||
True
|
||||
```
|
||||
![[8.png]]
|
||||
```py
|
||||
fp=open('zapis7.2ob','wb')
|
||||
pickle.dump(mnoz1,fp)
|
||||
pickle.dump(sps3,fp)
|
||||
sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
|
||||
pickle.dump(sps3,fp)
|
||||
fp.close()
|
||||
fp=open('zapis7.2ob','rb')
|
||||
obj1=pickle.load(fp)
|
||||
obj2=pickle.load(fp)
|
||||
fp.close()
|
||||
obj1
|
||||
{'pen', 'book', 'iPhone', 'table'}
|
||||
obj2
|
||||
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
|
||||
```
|
||||
# 5 Перенаправление потоков ввода и вывода данных
|
||||
```py
|
||||
import sys
|
||||
vr_out=sys.stdout
|
||||
fc=open('Stroka.txt','w')
|
||||
sys.stdout=fc
|
||||
print('запись строки в файл')
|
||||
sys.stdout=vr_out
|
||||
print('запись строки на экран')
|
||||
запись строки на экран
|
||||
fc.close()
|
||||
```
|
||||
![[9.png]]
|
||||
```py
|
||||
tmp_in = sys.stdin #Запоминаем текущий поток ввода
|
||||
fd = open("Stroka.txt", "r") #Открываем файл для ввода (чтения)
|
||||
sys.stdin = fd #Перенацеливаем ввод на файл вместо клавиатуры
|
||||
sys.stdin
|
||||
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
|
||||
while True:
|
||||
try:
|
||||
line = input() #Считываем из файла строку
|
||||
print(line) # Отображаем считанное
|
||||
except EOFError:
|
||||
break
|
||||
|
||||
|
||||
запись строки в файл
|
||||
fd.close()
|
||||
sys.stdin=tmp_in
|
||||
```
|
||||
1
TEMA6/test.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
4, 2, 5, 3, 2, 3, 2, 4, 5
|
||||
0
TEMA6/zapis1.txt
Обычный файл
3
TEMA6/zapis3.txt
Обычный файл
@@ -0,0 +1,3 @@
|
||||
[1, 2, 3, 4]
|
||||
[5, 6, 7, 8]
|
||||
[9, 10, 11, 12]
|
||||
1
TEMA6/zapis4.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
Иванов И. 1Петров П. 2Сидоров С. 3
|
||||
3
TEMA6/zapis5.txt
Обычный файл
@@ -0,0 +1,3 @@
|
||||
Иванов И. 1
|
||||
Петров П. 2
|
||||
Сидоров С. 3
|
||||
Двоичные данные
TEMA6/zapis6.mnz
Обычный файл
3
TEMA6/zapis6.txt
Обычный файл
@@ -0,0 +1,3 @@
|
||||
Иванов И. 1
|
||||
Петров П. 2
|
||||
Сидоров С. 3
|
||||
Двоичные данные
TEMA6/zapis7.2ob
Обычный файл
24
TEMA7/IKZ.md
Обычный файл
@@ -0,0 +1,24 @@
|
||||
12. Разработайте анонимную функцию с 3 аргументами: х, a, b, вычисляющую значение exp(-(x-a)2/b)/(2*π*b)1/2. Рассчитайте значения функции в диапазоне значений х от a-3*b1/2 до a+3*b1/2 с шагом 0.2*b1/2 и запишите эти значения в текстовый файл по два значения на строке, разделенных запятыми.
|
||||
```py
|
||||
import os
|
||||
import math
|
||||
|
||||
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA7')
|
||||
|
||||
f = lambda x, a, b: math.exp(-(x - a)**2 / b) / math.sqrt(2 * math.pi * b)
|
||||
|
||||
a = 1; b = 16
|
||||
values = []
|
||||
x = a - 3 * math.sqrt(b)
|
||||
|
||||
while x <= a + 3 * math.sqrt(b):
|
||||
values.append(f(x,a,b))
|
||||
x += 0.2 * math.sqrt(b)
|
||||
print(values)
|
||||
|
||||
fp=open('IKZ.txt','w')
|
||||
for i in range(0,len(values),2):
|
||||
new = str(values[i])+","+str(values[i+1]) + "\n"
|
||||
fp.write(new)
|
||||
fp.close()
|
||||
```
|
||||
21
TEMA7/IKZ.py
Обычный файл
@@ -0,0 +1,21 @@
|
||||
import os
|
||||
import math
|
||||
|
||||
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA7')
|
||||
|
||||
f = lambda x, a, b: math.exp(-(x - a)**2 / b) / math.sqrt(2 * math.pi * b)
|
||||
|
||||
a = 1; b = 16
|
||||
values = []
|
||||
x = a - 3 * math.sqrt(b)
|
||||
|
||||
while x <= a + 3 * math.sqrt(b):
|
||||
values.append(f(x,a,b))
|
||||
x += 0.2 * math.sqrt(b)
|
||||
print(values)
|
||||
|
||||
fp=open('IKZ.txt','w')
|
||||
for i in range(0,len(values),2):
|
||||
new = str(values[i])+","+str(values[i+1]) + "\n"
|
||||
fp.write(new)
|
||||
fp.close()
|
||||
15
TEMA7/IKZ.txt
Обычный файл
@@ -0,0 +1,15 @@
|
||||
1.23083471665585e-05,3.926280620059535e-05
|
||||
0.00011561638253634189,0.0003142779117207081
|
||||
0.0007886145436500209,0.0018267206863201975
|
||||
0.0039060334050481055,0.007710032359572725
|
||||
0.014048594913996654,0.02363012508476152
|
||||
0.036690665793434996,0.05258981052153328
|
||||
0.06958314612621767,0.0849890466000244
|
||||
0.09582488246026036,0.09973557010035818
|
||||
0.09582488246026034,0.08498904660002438
|
||||
0.06958314612621765,0.052589810521533234
|
||||
0.03669066579343496,0.02363012508476149
|
||||
0.014048594913996638,0.007710032359572712
|
||||
0.003906033405048095,0.001826720686320191
|
||||
0.0007886145436500168,0.0003142779117207059
|
||||
0.00011561638253634108,3.9262806200595064e-05
|
||||
Двоичные данные
TEMA7/pic1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 30 KiB |
449
TEMA7/report.md
Обычный файл
@@ -0,0 +1,449 @@
|
||||
# Отчет по теме 7
|
||||
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
# 1 Запуск интерактивной оболочки IDLE
|
||||
|
||||
Была запущена интерактивная оболочка IDLE.
|
||||
|
||||
# 2 Изучение создания простых функций
|
||||
|
||||
## 2.1 Первый пример: функция – без аргументов
|
||||
```py
|
||||
def uspeh():
|
||||
"""Подтверждение успеха операции"""
|
||||
print('Выполнено успешно!')
|
||||
|
||||
uspeh()
|
||||
Выполнено успешно!
|
||||
dir(uspeh)
|
||||
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
|
||||
help(uspeh)
|
||||
Help on function uspeh in module __main__:
|
||||
|
||||
uspeh()
|
||||
Подтверждение успеха операции
|
||||
|
||||
```
|
||||
## 2.2 Пример функции с аргументами
|
||||
```py
|
||||
def sravnenie(a,b):
|
||||
"""Сравнение a и b"""
|
||||
if a>b:
|
||||
print(a,' больше ',b)
|
||||
elif a<b:
|
||||
print(a, ' меньше ',b)
|
||||
else:
|
||||
print(a, ' равно ',b)
|
||||
|
||||
n,m=16,5;sravnenie(n,m)
|
||||
16 больше 5
|
||||
n,m="16","5";sravnenie(n,m)
|
||||
16 меньше 5
|
||||
```
|
||||
## 2.3 Пример функции, содержащей **return**
|
||||
```py
|
||||
def logistfun(b,a):
|
||||
"""Вычисление логистической функции"""
|
||||
import math
|
||||
return a/(1+math.exp(-b))
|
||||
|
||||
v,w=1,0.7;z=logistfun(w,v)
|
||||
z
|
||||
0.6681877721681662
|
||||
```
|
||||
## 2.4 Сложение для разных типов аргументов
|
||||
```py
|
||||
def slozh(a1,a2,a3,a4):
|
||||
""" Сложение значений четырех аргументов"""
|
||||
return a1+a2+a3+a4
|
||||
|
||||
slozh(1,2,3,4) # Сложение чисел
|
||||
10
|
||||
slozh('1','2','3','4') # Сложение строк
|
||||
'1234'
|
||||
b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
|
||||
q=slozh(b1,b2,b3,b4) #Сложение списков
|
||||
q
|
||||
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||
kor = ("a", 1);kor2 = ("b", 2);kor3 = ("c", 3);kor4 = ("d", 4)
|
||||
k=slozh(kor, kor2, kor3, kor4)
|
||||
k
|
||||
('a', 1, 'b', 2, 'c', 3, 'd', 4)
|
||||
sl1 = {"A": 8}
|
||||
sl2 = {"B": 2}
|
||||
sl1 = {"A": 8}
|
||||
sl3 = {"D": 3}
|
||||
sl4 = {"F": 5}
|
||||
sl=slozh(sl1, sl2, sl3, sl4)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#35>", line 1, in <module>
|
||||
sl=slozh(sl1, sl2, sl3, sl4)
|
||||
File "<pyshell#21>", line 3, in slozh
|
||||
return a1+a2+a3+a4
|
||||
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
|
||||
mn1 = {"A", "B"}; mn2 = {"C", "D"}; mn3 = {"E", "F"}; mn4 = {"H", "J"}
|
||||
mn=slozh(mn1, mn2, mn3, mn4)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#37>", line 1, in <module>
|
||||
mn=slozh(mn1, mn2, mn3, mn4)
|
||||
File "<pyshell#21>", line 3, in slozh
|
||||
return a1+a2+a3+a4
|
||||
TypeError: unsupported operand type(s) for +: 'set' and 'set'
|
||||
```
|
||||
## 2.5 Функция, реализующая модель некоторого устройства, на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y
|
||||
```py
|
||||
def inerz(x,T,ypred):
|
||||
""" Модель устройства с памятью:
|
||||
x- текущее значение вх.сигнала,
|
||||
T -постоянная времени,
|
||||
ypred - предыдущее значение выхода устройства"""
|
||||
y=(x+T*ypred)/(T+1)
|
||||
return y
|
||||
|
||||
sps=[0]+[1]*100
|
||||
spsy=[] #Заготовили список для значений выхода
|
||||
TT=20 #Постоянная времени
|
||||
yy=0 #Нулевое начальное условие
|
||||
for xx in sps:
|
||||
yy=inerz(xx,TT,yy)
|
||||
spsy.append(yy)
|
||||
|
||||
import pylab
|
||||
spsm = list(range(101))
|
||||
pylab.plot(spsm, spsy)
|
||||
[<matplotlib.lines.Line2D object at 0x00000172FAEBA990>]
|
||||
pylab.show()
|
||||
```
|
||||
![[TEMA7/pic1.png]]
|
||||
# 3 Функции как объекты
|
||||
## 3.1 Получение списка атрибутов объекта-функции
|
||||
```py
|
||||
dir(inerz)
|
||||
['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__']
|
||||
inerz.__doc__
|
||||
'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства'
|
||||
help(inerz)
|
||||
Help on function inerz in module __main__:
|
||||
|
||||
inerz(x, T, ypred)
|
||||
Модель устройства с памятью:
|
||||
x- текущее значение вх.сигнала,
|
||||
T -постоянная времени,
|
||||
ypred - предыдущее значение выхода устройства
|
||||
|
||||
```
|
||||
## 3.2 Сохранение ссылки на объект-функцию в другой переменной
|
||||
```py
|
||||
fnkt=sravnenie
|
||||
v=16
|
||||
fnkt(v,23)
|
||||
16 меньше 23
|
||||
```
|
||||
## 3.3 Возможность альтернативного определения функции в программе
|
||||
```py
|
||||
typ_fun=8
|
||||
if typ_fun==1:
|
||||
def func():
|
||||
print('Функция 1')
|
||||
else:
|
||||
def func():
|
||||
print('Функция 2')
|
||||
|
||||
func()
|
||||
Функция 2
|
||||
```
|
||||
# 4 Аргументы функции
|
||||
## 4.1 Изучите возможность использования функции в качестве аргумента другой функции
|
||||
```py
|
||||
def fun_arg(fff,a,b,c):
|
||||
"""fff-имя функции, используемой
|
||||
в качестве аргумента функции fun_arg"""
|
||||
return a+fff(c,b)
|
||||
|
||||
zz=fun_arg(logistfun,-3,1,0.7)
|
||||
zz
|
||||
-2.3318122278318336
|
||||
```
|
||||
## 4.2 Обязательные и необязательные аргументы
|
||||
```py
|
||||
def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
|
||||
"""Вычисление логистической функции"""
|
||||
import math
|
||||
return b/(1+math.exp(-a))
|
||||
|
||||
logistfun(0.7) #Вычисление со значением b по умолчанию
|
||||
0.6681877721681662
|
||||
logistfun(0.7,2) #Вычисление с заданным значением b
|
||||
1.3363755443363323
|
||||
```
|
||||
## 4.3 Изучите возможность обращения к функции с произвольным (непозиционным) расположением аргументов. При этом надо в обращении к функции указывать имена аргументов
|
||||
```py
|
||||
logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами
|
||||
0.34498724056380625
|
||||
```
|
||||
## 4.4 Пример со значениями аргументов функции, содержащимися в списке или кортеже
|
||||
```py
|
||||
b1234=[b1,b2,b3,b4] # Список списков из п.2.4
|
||||
qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку
|
||||
qq
|
||||
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||
```
|
||||
## 4.5 Пример со значениями аргументов функции, содержащимися в словаре
|
||||
```py
|
||||
dic4={"a1":1,"a2":2,"a3":3,"a4":4}
|
||||
qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки
|
||||
qqq
|
||||
10
|
||||
```
|
||||
## 4.6 Смешанные ссылки
|
||||
```py
|
||||
e1=(-1,6);dd2={'a3':3,'a4':9}
|
||||
qqqq=slozh(*e1,**dd2)
|
||||
qqqq
|
||||
17
|
||||
```
|
||||
## 4.7 Переменное число аргументов у функции
|
||||
```py
|
||||
def func4(*kort7):
|
||||
"""Произвольное число аргументов в составе кортежа"""
|
||||
smm=0
|
||||
for elt in kort7:
|
||||
smm+=elt
|
||||
return smm
|
||||
|
||||
func4(-1,2) #Обращение к функции с 2 аргументами
|
||||
1
|
||||
func4(-1,2,0,3,6) #Обращение к функции с 5 аргументами
|
||||
10
|
||||
```
|
||||
## 4.8 Комбинация аргументов
|
||||
```py
|
||||
def func4(a,b=7,*kort7): #Аргументы: a-позиционный, b- по умолчанию + кортеж
|
||||
"""Кортеж - сборка аргументов - должен быть последним!"""
|
||||
smm=0
|
||||
for elt in kort7:
|
||||
smm+=elt
|
||||
return a*smm+b
|
||||
|
||||
func4(-1,2,0,3,6)
|
||||
-7
|
||||
def func5(**slovar):
|
||||
print(slovar)
|
||||
|
||||
|
||||
func5(a=5, n=8, m=30)
|
||||
{'a': 5, 'n': 8, 'm': 30}
|
||||
```
|
||||
## 4.9 Изменение значений объектов, используемых в качестве аргументов функции
|
||||
```py
|
||||
a=90 # Числовой объект – не изменяемый тип
|
||||
def func3(b):
|
||||
b=5*b+67
|
||||
|
||||
func3(a)
|
||||
a
|
||||
90
|
||||
sps1=[1,2,3,4] #Список – изменяемый тип объекта
|
||||
def func2(sps):
|
||||
sps[1]=99
|
||||
|
||||
func2(sps1)
|
||||
print(sps1)
|
||||
[1, 99, 3, 4]
|
||||
sps1
|
||||
[1, 99, 3, 4]
|
||||
kort=(1,2,3,4) #Кортеж – неизменяемый тип объекта
|
||||
func2(kort)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#127>", line 1, in <module>
|
||||
func2(kort)
|
||||
File "<pyshell#122>", line 2, in func2
|
||||
sps[1]=99
|
||||
TypeError: 'tuple' object does not support item assignment
|
||||
```
|
||||
# 5 Специальные типы пользовательских функций
|
||||
## 5.1 Анонимные функции
|
||||
```py
|
||||
import math
|
||||
anfun1=lambda: 1.5+math.log10(17.23)
|
||||
anfun1()
|
||||
2.7362852774480286
|
||||
anfun2=lambda a,b : a+math.log10(b)
|
||||
anfun2(17,234)
|
||||
19.369215857410143
|
||||
anfun3=lambda a,b=234: a+math.log10(b)
|
||||
anfun3(100)
|
||||
102.36921585741014
|
||||
```
|
||||
## 5.2 Функции-генераторы
|
||||
```py
|
||||
def func5(diap,shag):
|
||||
""" Итератор, возвращающий значения
|
||||
из диапазона от 1 до diap с шагом shag"""
|
||||
for j in range(1,diap+1,shag):
|
||||
yield j
|
||||
|
||||
|
||||
for mm in func5(7,3):
|
||||
print(mm)
|
||||
|
||||
|
||||
1
|
||||
4
|
||||
7
|
||||
alp=func5(7,3)
|
||||
print(alp.__next__())
|
||||
1
|
||||
print(alp.__next__())
|
||||
4
|
||||
print(alp.__next__())
|
||||
7
|
||||
print(alp.__next__())
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#158>", line 1, in <module>
|
||||
print(alp.__next__())
|
||||
StopIteration
|
||||
```
|
||||
# 6 Локализация объектов в функциях
|
||||
## 6.1 Примеры на локализацию объектов
|
||||
```py
|
||||
glb=10
|
||||
def func7(arg):
|
||||
loc1=15
|
||||
glb=8
|
||||
return loc1*arg
|
||||
|
||||
res=func7(glb)
|
||||
res
|
||||
150
|
||||
|
||||
def func8(arg):
|
||||
loc1=15
|
||||
print(glb)
|
||||
glb=8
|
||||
return loc1*arg
|
||||
|
||||
res=func8(glb)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#197>", line 1, in <module>
|
||||
res=func8(glb)
|
||||
File "<pyshell#196>", line 3, in func8
|
||||
print(glb)
|
||||
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
|
||||
|
||||
glb=11
|
||||
def func7(arg):
|
||||
loc1=15
|
||||
global glb
|
||||
print(glb)
|
||||
glb=8
|
||||
return loc1*arg
|
||||
|
||||
res=func7(glb)
|
||||
11
|
||||
glb
|
||||
8
|
||||
res
|
||||
165
|
||||
```
|
||||
## 6.2 Выявление локализации объекта с помощью функций **locals**() и **globals**() из **builtins**. Эти функции возвращают словари, ключами в которых будут имена объектов, являющихся, соответственно, локальными или глобальными на уровне вызова этих функций.
|
||||
```py
|
||||
globals().keys() #Перечень глобальных объектов
|
||||
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||
locals().keys() #Перечень локальных объектов
|
||||
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||
def func8(arg):
|
||||
loc1=15
|
||||
glb=8
|
||||
print(globals().keys()) #Перечень глобальных объектов «изнутри» функции
|
||||
print(locals().keys()) #Перечень локальных объектов «изнутри» функции
|
||||
return loc1*arg
|
||||
|
||||
|
||||
hh=func8(glb)
|
||||
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||
dict_keys(['arg', 'loc1', 'glb'])
|
||||
'glb' in globals().keys()
|
||||
True
|
||||
```
|
||||
## 6.3 Локализация объектов при использовании вложенных функций
|
||||
```py
|
||||
def func9(arg2,arg3):
|
||||
def func9_1(arg1):
|
||||
loc1=15
|
||||
glb1=8
|
||||
print('glob_func9_1:',globals().keys())
|
||||
print('locl_func9_1:',locals().keys())
|
||||
return loc1*arg1
|
||||
loc1=5
|
||||
glb=func9_1(loc1)
|
||||
print('loc_func9:',locals().keys())
|
||||
print('glob_func9:',globals().keys())
|
||||
return arg2+arg3*glb
|
||||
|
||||
|
||||
kk=func9(10,1)
|
||||
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
||||
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
|
||||
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
|
||||
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
||||
```
|
||||
## 6.4 Изучение моделирования системы управления
|
||||
```py
|
||||
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||
k1,T,k2,Xm,A,F,N=0.5,20,0.4,4,500,3,20
|
||||
k1=float(znach[0])
|
||||
T=float(znach[1])
|
||||
k2=float(znach[2])
|
||||
Xm=float(znach[3])
|
||||
A=float(znach[4])
|
||||
F=float(znach[5])
|
||||
N=int(znach[6])
|
||||
import math
|
||||
vhod=[]
|
||||
for i in range(N):
|
||||
vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||
|
||||
|
||||
vhod
|
||||
[0.0, 433.01270189221935, -433.01270189221924, -1.2246467991473532e-13, 433.0127018922196, -433.01270189221935, -2.4492935982947065e-13, 433.01270189221964, -433.01270189221884, -3.6739403974420595e-13, 433.01270189221924, -433.0127018922188, -4.898587196589413e-13, 433.0127018922193, -433.01270189221873, -2.388680238973927e-12, 433.01270189222026, -433.0127018922196, -7.347880794884119e-13, 433.0127018922203]
|
||||
|
||||
def realdvig(xtt,kk1,TT,yti1,ytin1):
|
||||
#Модель реального двигателя
|
||||
yp=kk1*xtt #усилитель
|
||||
yti1=yp+yti1 #Интегратор
|
||||
ytin1=(yti1+TT*ytin1)/(TT+1)
|
||||
return [yti1,ytin1]
|
||||
|
||||
def tahogen(xtt,kk2,yti2):
|
||||
#Модель тахогенератора
|
||||
yp=kk2*xtt #усилитель
|
||||
yti2=yp+yti2 #интегратор
|
||||
return yti2
|
||||
|
||||
def nechus(xtt,gran):
|
||||
#зона нечувствительности
|
||||
if xtt<gran and xtt>(-gran):
|
||||
ytt=0
|
||||
elif xtt>=gran:
|
||||
ytt=xtt-gran
|
||||
elif xtt<=(-gran):
|
||||
ytt=xtt+gran
|
||||
return ytt
|
||||
|
||||
|
||||
yi1=0;yin1=0;yi2=0
|
||||
vyhod=[]
|
||||
for xt in vhod:
|
||||
xt1=xt-yi2 #отрицательная обратная связь
|
||||
[yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1)
|
||||
yi2=tahogen(yin1,k2,yi2)
|
||||
yt=nechus(yin1,Xm)
|
||||
vyhod.append(yt)
|
||||
|
||||
|
||||
print('y=',vyhod)
|
||||
y= [0, 6.309826235529032, 5.720693307784519, 4.968847476186754, 14.286445614770301, 12.400181295661117, 9.997205811462539, 17.278643969265367, 12.961026991542283, 7.7449834822612225, 11.871264907194353, 4.124191275490627, 0, 0, -7.526937601525441, -19.612892932469897, -21.914417647034767, -35.27028550613399, -48.470270262535614, -50.71225182595774]
|
||||
```
|
||||
## 7 Завершение работы в IDLE
|
||||
69
TEMA7/task.md
Обычный файл
@@ -0,0 +1,69 @@
|
||||
Хатюхин Евгений, А-02-23
|
||||
# Задание
|
||||
Общее контрольное задание.
|
||||
• Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
|
||||
• Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
|
||||
• Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+b2*X и имеющую аргументы b1, b2 и X.
|
||||
## Решение
|
||||
```py
|
||||
def signal_zaderzka(vhod, zaderzka, vihod):
|
||||
return vhod-zaderzka if len(vihod)>=zaderzka else 0
|
||||
|
||||
t_zaderzka = 3
|
||||
vihod = []
|
||||
vhod = [1, 2, 3, 4, 5]
|
||||
for i in vhod:
|
||||
vihod = vihod + [signal_zaderzka(i, t_zaderzka, vihod)]
|
||||
|
||||
def signal_zaderzka(vhod, zaderzka, vihod):
|
||||
return vhod-zaderzka if len(vihod)>=zaderzka else 0
|
||||
|
||||
zaderzka = 3
|
||||
vihod = []
|
||||
vhod = [1, 2, 3, 4, 5]
|
||||
for i in vhod:
|
||||
vihod = vihod + [signal_zaderzka(i, zaderzka, vihod)]
|
||||
|
||||
print("входной сигнал: ", vhod, "выходной сигнал: ", vihod)
|
||||
входной сигнал: [1, 2, 3, 4, 5] выходной сигнал: [0, 0, 0, 1, 2]
|
||||
def histogram(data, num_bins):
|
||||
"""Вычисляет и выводит гистограмму в виде таблицы, возвращает bins и counts."""
|
||||
min_val, max_val = min(data), max(data)
|
||||
bin_width = (max_val - min_val) / num_bins
|
||||
bins = [min_val + i * bin_width for i in range(num_bins + 1)] #список границ интервалов
|
||||
counts = []
|
||||
for i in range(num_bins):
|
||||
count = 0
|
||||
for x in data:
|
||||
if bins[i] <= x < bins[i+1] or (x == max_val and i == num_bins - 1):
|
||||
count += 1
|
||||
counts.append(count)
|
||||
|
||||
print("Гистограмма:")
|
||||
for i in range(num_bins):
|
||||
print(f"Интервал: [{bins[i]:.2f}, {bins[i+1]:.2f}], Элементов: {int(counts[i])}")
|
||||
|
||||
return bins, counts
|
||||
|
||||
import random
|
||||
|
||||
data = [random.gauss(0, 1) for _ in range(1000)]
|
||||
num_bins = 10
|
||||
bins, counts = histogram(data, num_bins)
|
||||
Гистограмма:
|
||||
Интервал: [-2.97, -2.30], Элементов: 7
|
||||
Интервал: [-2.30, -1.62], Элементов: 43
|
||||
Интервал: [-1.62, -0.94], Элементов: 118
|
||||
Интервал: [-0.94, -0.26], Элементов: 231
|
||||
Интервал: [-0.26, 0.42], Элементов: 266
|
||||
Интервал: [0.42, 1.10], Элементов: 174
|
||||
Интервал: [1.10, 1.78], Элементов: 122
|
||||
Интервал: [1.78, 2.46], Элементов: 30
|
||||
Интервал: [2.46, 3.13], Элементов: 8
|
||||
Интервал: [3.13, 3.81], Элементов: 1
|
||||
anon = lambda b1, b2, X: b1+b2*X
|
||||
Y = anon(1,2,3)
|
||||
Y
|
||||
7
|
||||
|
||||
```
|
||||
5
TEMA7/test.py
Обычный файл
@@ -0,0 +1,5 @@
|
||||
def f(a,b,s):
|
||||
for i in range(a,b,s):
|
||||
yield(i)
|
||||
for m in f(2,11,5):
|
||||
print(m)
|
||||
2
TEMA8/MM0 .py
Обычный файл
@@ -0,0 +1,2 @@
|
||||
import MM2
|
||||
print('y=',MM2.vyhod)
|
||||
23
TEMA8/MM1 .py
Обычный файл
@@ -0,0 +1,23 @@
|
||||
def realdvig(xtt,kk1,TT,yti1,ytin1):
|
||||
#Модель реального двигателя
|
||||
yp=kk1*xtt #усилитель
|
||||
yti1=yp+yti1 #Интегратор
|
||||
ytin1=(yti1+TT*ytin1)/(TT+1)
|
||||
return [yti1,ytin1]
|
||||
|
||||
def tahogen(xtt,kk2,yti2):
|
||||
#Модель тахогенератора
|
||||
yp=kk2*xtt #усилитель
|
||||
yti2=yp+yti2 #интегратор
|
||||
return yti2
|
||||
|
||||
def nechus(xtt,gran):
|
||||
#зона нечувствительности
|
||||
if xtt<gran and xtt>(-gran):
|
||||
ytt=0
|
||||
elif xtt>=gran:
|
||||
ytt=xtt-gran
|
||||
elif xtt<=(-gran):
|
||||
ytt=xtt+gran
|
||||
return ytt
|
||||
|
||||
23
TEMA8/MM2 .py
Обычный файл
@@ -0,0 +1,23 @@
|
||||
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||
k1=float(znach[0])
|
||||
T=float(znach[1])
|
||||
k2=float(znach[2])
|
||||
Xm=float(znach[3])
|
||||
A=float(znach[4])
|
||||
F=float(znach[5])
|
||||
N=int(znach[6])
|
||||
|
||||
import math
|
||||
vhod=[]
|
||||
for i in range(N):
|
||||
vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||
|
||||
import MM1 as mod
|
||||
yi1=0;yin1=0;yi2=0
|
||||
vyhod=[]
|
||||
for xt in vhod:
|
||||
xt1=xt-yi2 #отрицательная обратная связь
|
||||
[yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1)
|
||||
yi2=mod.tahogen(yin1,k2,yi2)
|
||||
yt=mod.nechus(yin1,Xm)
|
||||
vyhod.append(yt)
|
||||
16
TEMA8/Mo.py
Обычный файл
@@ -0,0 +1,16 @@
|
||||
def calculate_correlation(list1, list2):
|
||||
n = min(len(list1), len(list2)) # Используем меньшую длину
|
||||
sum_x = sum(list1[:n])
|
||||
sum_y = sum(list2[:n])
|
||||
sum_x_squared = sum(x**2 for x in list1[:n])
|
||||
sum_y_squared = sum(y**2 for y in list2[:n])
|
||||
sum_xy = sum(list1[i] * list2[i] for i in range(n))
|
||||
|
||||
numerator = n * sum_xy - sum_x * sum_y
|
||||
denominator = math.sqrt((n * sum_x_squared - sum_x**2) * (n * sum_y_squared - sum_y**2))
|
||||
|
||||
if denominator == 0:
|
||||
print("Предупреждение: Деление на ноль при вычислении корреляции.")
|
||||
return None
|
||||
|
||||
return numerator / denominator
|
||||
@@ -4,8 +4,6 @@ def alpha():
|
||||
return t
|
||||
|
||||
def beta(q):
|
||||
print('****BETA****')
|
||||
import math
|
||||
expi=q*math.pi
|
||||
return math.exp(expi)
|
||||
|
||||
|
||||
8
TEMA8/Module1.py
Обычный файл
@@ -0,0 +1,8 @@
|
||||
def read_number_list(filename):
|
||||
number_list = []
|
||||
with open(filename, 'r') as file:
|
||||
for line in file:
|
||||
numbers = line.strip().split()
|
||||
for num in numbers:
|
||||
number_list.append(float(num))
|
||||
return number_list
|
||||
22
TEMA8/Module2.py
Обычный файл
@@ -0,0 +1,22 @@
|
||||
import math
|
||||
|
||||
def calculate_correlation(list1, list2):
|
||||
if not list1 or not list2:
|
||||
print("Ошибка: Один или оба списка пусты.")
|
||||
return None
|
||||
|
||||
n = min(len(list1), len(list2)) # Используем меньшую длину
|
||||
sum_x = sum(list1[:n])
|
||||
sum_y = sum(list2[:n])
|
||||
sum_x_squared = sum(x**2 for x in list1[:n])
|
||||
sum_y_squared = sum(y**2 for y in list2[:n])
|
||||
sum_xy = sum(list1[i] * list2[i] for i in range(n))
|
||||
|
||||
numerator = n * sum_xy - sum_x * sum_y
|
||||
denominator = math.sqrt((n * sum_x_squared - sum_x**2) * (n * sum_y_squared - sum_y**2))
|
||||
|
||||
if denominator == 0:
|
||||
print("Предупреждение: Деление на ноль при вычислении корреляции.")
|
||||
return None
|
||||
|
||||
return numerator / denominator
|
||||
14
TEMA8/Module3.py
Обычный файл
@@ -0,0 +1,14 @@
|
||||
import Module1
|
||||
import Module2
|
||||
|
||||
if __name__ == "__main__":
|
||||
file1_name = input("Введите имя первого файла: ")
|
||||
file2_name = input("Введите имя второго файла: ")
|
||||
|
||||
list1 = Module1.read_number_list(file1_name)
|
||||
list2 = Module1.read_number_list(file2_name)
|
||||
|
||||
if list1 is not None and list2 is not None:
|
||||
correlation = Module2.calculate_correlation(list1, list2)
|
||||
if correlation is not None:
|
||||
print(f"Коэффициент корреляции: {correlation:.3f}")
|
||||
299
TEMA8/report.md
Обычный файл
@@ -0,0 +1,299 @@
|
||||
# Отчет по лабораторной работе 8
|
||||
|
||||
Хатюхин Евгений, А-02-23
|
||||
|
||||
## 1 Открытие и настройка интерактивной оболочки IDLE
|
||||
|
||||
Была запущена интерактивная оболочка IDLE, указан рабочий каталог и импортированы необходимые модули.
|
||||
|
||||
```py
|
||||
>>>import os
|
||||
>>>os.chdir('C:\\Users\\u522-16\\Desktop\\tema8')
|
||||
>>>os.getcwd() #Контролируем корректность установки текущего каталога
|
||||
'C:\\Users\\u522-16\\Desktop\\tema8'
|
||||
>>>import importlib
|
||||
>>>import sys
|
||||
```
|
||||
## 2
|
||||
|
||||
## 2.1 Запуск модуля на выполнение
|
||||
|
||||
Был запущен созданный модуль на выполнение, введенное на запрос число было сохранено в переменную perm1, созданную в модуле. Были просмотрены атрибуты и тип модуля. Была неудачно произведена попытка заново запустить модуль на выполнение. После этого модуль был запущен еще раз с помощью метода reload. Была просмотрена переменная perm1 и установлено, что данная переменная была переопределена.
|
||||
|
||||
```py
|
||||
>>>import Mod1
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
>>>type(Mod1)
|
||||
<class 'module'>
|
||||
>>>dir(Mod1)
|
||||
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
|
||||
>>>Mod1.perm1
|
||||
'5'
|
||||
>>>import Mod1
|
||||
>>>imp.reload(Mod1)
|
||||
Mod1:Введите значение = 3
|
||||
Mod1:Значение perm1= 3
|
||||
<module 'Mod1' from 'C:\\Users\\u522-16\\Desktop\\tema8\\Mod1.py'>
|
||||
>>>Mod1.perm1
|
||||
'3'
|
||||
```
|
||||
|
||||
## 2.2 Изучение удаления модуля из словаря
|
||||
|
||||
Был выведен словарь - значение атрибута sys.modules, среди которых был модуль Mod1. Далее этот модуль был удален, и снова изображен словарь, в котором Mod1 отсутствовал. Потом модуль был снова запущен и снова удален из словаря.
|
||||
|
||||
```py
|
||||
>>>print(sorted(sys.modules.keys()))
|
||||
['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_distutils_hack', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'imp', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'pywin32_bootstrap', 'pywin32_system32', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
|
||||
>>>sys.modules.pop('Mod1')
|
||||
<module 'Mod1' from 'C:\\Users\\u522-16\\Desktop\\tema8\\Mod1.py'>
|
||||
>>>print(sorted(sys.modules.keys()))
|
||||
['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_distutils_hack', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'imp', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'ipaddress', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'pywin32_bootstrap', 'pywin32_system32', 'queue', 'random', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'site', 'socket', 'socketserver', 'stat', 'string', 'struct', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
|
||||
>>>import Mod1
|
||||
Mod1:Введите значение = 9
|
||||
Mod1:Значение perm1= 9
|
||||
>>>sys.modules.pop('Mod1')
|
||||
<module 'Mod1' from 'C:\\Users\\u522-16\\Desktop\\tema8\\Mod1.py'>
|
||||
```
|
||||
|
||||
## 2.3 Изучение запуска модуля с помощью exec
|
||||
|
||||
Модуль был запущен на выполнение с помощью функции exec, которая читает код. Далее трижды было введено значение perm1, и выведено на экран.
|
||||
|
||||
```py
|
||||
>>>exec(open('Mod1.py').read())
|
||||
Mod1:Введите значение = 8
|
||||
Mod1:Значение perm1= 8
|
||||
>>>exec(open('Mod1.py', encoding='utf-8').read()) #Здесь указана кодировка, чтобы в консоли выводился текст на кириллице.
|
||||
Mod1:Введите значение = 4
|
||||
Mod1:Значение perm1= 4
|
||||
>>>perm1
|
||||
'4'
|
||||
>>>exec(open('Mod1.py', encoding='utf-8').read())
|
||||
Mod1:Введите значение = 8
|
||||
Mod1:Значение perm1= 8
|
||||
>>>perm1
|
||||
'8'
|
||||
>>>exec(open('Mod1.py', encoding='utf-8').read())
|
||||
Mod1:Введите значение = 9
|
||||
Mod1:Значение perm1= 9
|
||||
>>>perm1
|
||||
'9'
|
||||
```
|
||||
|
||||
## 2.4 Изучение запуска модуля с помощью from … import …
|
||||
|
||||
Была импортирована лишь часть модуля, просмотрены обьекты, а так же выведено значение переменной perm1.
|
||||
|
||||
```py
|
||||
>>>from Mod1 import perm1
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
>>>dir()
|
||||
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'fg', 'imp', 'importlib', 'os', 'perm1', 'summa', 'sys']
|
||||
>>>perm1
|
||||
'5'
|
||||
```
|
||||
|
||||
Создан модуль с двумя функциями и изначально импортирована одна функция из этого модуля. Просмотрено значение переменной g. Просмотрены обьекты. Была произведена попытка вызова неимпортированной функции из модуля 2. Под псевдонимом была импортирована вторая функция из модуля и вызвана эта функция. Далее функции были удалены, потом обе снова импортированы одной инструкцией. Далее был испортирован весь модуль и применена его функция.
|
||||
|
||||
```py
|
||||
>>>from Mod2 import beta
|
||||
>>>g=beta(2)
|
||||
>>>g
|
||||
535.4916555247646
|
||||
>>>dir()
|
||||
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'beta', 'fg', 'g', 'imp', 'importlib', 'os', 'perm1', 'summa', 'sys']
|
||||
>>>alpha()
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#42>", line 1, in <module>
|
||||
alpha()
|
||||
NameError: name 'alpha' is not defined
|
||||
>>>from Mod2 import alpha as al
|
||||
>>>al()
|
||||
****ALPHA****
|
||||
Значение t=4
|
||||
'4'
|
||||
>>>del al,beta
|
||||
>>>from Mod2 import alpha as al, beta as bt
|
||||
>>>del al
|
||||
>>>del bt
|
||||
>>>from Mod2 import * #Звездочка означает, что импортируется весь модуль, а не конкретные функции.
|
||||
tt=alpha() #На запрос введите значение 0.12
|
||||
****ALPHA****
|
||||
Значение t=0.12
|
||||
>>>uu=beta(float(tt))
|
||||
>>>uu
|
||||
1.4578913609506803
|
||||
```
|
||||
|
||||
## 3
|
||||
|
||||
## 3.1
|
||||
|
||||
Был создан еще один модуль Mod0, в котором вызываются модуль 1 и функции из модуля 2. Также выведены значения обьектов, созданных во время выполнения программы.
|
||||
|
||||
```py
|
||||
>>>sys.modules.pop('Mod1')
|
||||
>>>sys.modules.pop('Mod2')
|
||||
>>>import Mod0
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
perm1= 5
|
||||
****ALPHA****
|
||||
Значение t=8
|
||||
tt= 8
|
||||
qq= 82226315585.59491
|
||||
>>>Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
|
||||
'8'
|
||||
82226315585.59491
|
||||
'5'
|
||||
```
|
||||
|
||||
## 3.2 Создание модулей для реализации программы моделирования системы управления
|
||||
|
||||
Были созданы модули MM1 - с функциями реализующими реальный двигатель, тахогенератор и нелинейное звено; MM2 - с инструкциями, обеспечивающими ввод параметров задачи, формирование входного сигнала, импорт модуля ММ1 и реализацию модели при расчете выходного сигнала; MM0 - содержащую импорт модуля MM2 и печатающую получившийся выходной сигнал. Был вызван модуль MM0.
|
||||
|
||||
```py
|
||||
================= RESTART: C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\MM0.py =================
|
||||
k1,T,k2,Xm,A,F,N=0.5,35,0.6,5,1000,5,15
|
||||
y= [0, 8.209118281877132, 29.104924685415277, 40.86232427117668, 38.3075414151359, 34.68635884409398, 42.90679739719954, 57.19526562043458, 60.53754513466764, 47.64611630565597, 31.742316122264157, 25.812753880749888, 24.278160244795345, 10.44509996519298, -10.518946273258612]
|
||||
```py
|
||||
|
||||
## 3.3 Изучение области действия обьектов в модулях
|
||||
|
||||
Была изучена область действия обьектов в модулях. Исходя из примеров, приведенных ниже, можно сказать, что обьекты входящие в один модуль будут локализованы в этом модуле и доступны в нем. К переменным из другого модуля, даже импортированного в главный (выполняемый) модуль, прямого доступа не будет.
|
||||
|
||||
## 3.3.1 Изучение области действия обьектов в модулях (пример 1)
|
||||
|
||||
Внутрь модуля Mod2 в функцию alpha был добавлен вызов функции beta.
|
||||
|
||||
```
|
||||
def alpha():
|
||||
print('****ALPHA****')
|
||||
t=input('Значение t=')
|
||||
n = beta(6)
|
||||
print(n)
|
||||
return t
|
||||
```
|
||||
Далее запущен модуль и вызвана функция alpha. Можно заметить, что инструкции успешно выполнились.
|
||||
|
||||
```py
|
||||
>>>alpha()
|
||||
****ALPHA****
|
||||
Значение t=9
|
||||
153552935.39544657
|
||||
'9'
|
||||
```
|
||||
Далее в модуле в функции beta был добавлен вызов функции alpha.
|
||||
|
||||
```py
|
||||
def beta(q):
|
||||
import math
|
||||
expi=q*math.pi
|
||||
alpha()
|
||||
return math.exp(expi)
|
||||
```
|
||||
|
||||
Функция beta была успешно вызвана
|
||||
|
||||
```
|
||||
beta(6)
|
||||
****ALPHA****
|
||||
Значение t=9
|
||||
153552935.39544657
|
||||
```
|
||||
|
||||
## 3.3.2 Изучение области действия обьектов в модулях (пример 2)
|
||||
|
||||
В модуль Mod0 была добавлена функция печати переменных t и expi, которые есть в Mod2.
|
||||
|
||||
```py
|
||||
#Модуль Mod0
|
||||
import Mod1
|
||||
print('perm1=',Mod1.perm1)
|
||||
from Mod2 import alpha as al
|
||||
tt=al()
|
||||
print('tt=',tt)
|
||||
from Mod2 import beta
|
||||
qq=beta(float(tt))
|
||||
print('qq=',qq)
|
||||
print(t, expi)
|
||||
```
|
||||
При запуске модуля на моменте печати этих переменных была выдана ошибка.
|
||||
|
||||
```py
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
perm1= 5
|
||||
****ALPHA****
|
||||
Значение t=7
|
||||
tt= 7
|
||||
qq= 3553321280.847041
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\Mod0.py", line 10, in <module>
|
||||
print(t, expi)
|
||||
NameError: name 't' is not defined. Did you mean: 'tt'?
|
||||
```
|
||||
|
||||
## 3.3.3 Изучение области действия обьектов в модулях (пример 3)
|
||||
|
||||
В модуле Mod0 были добавлены инструкции, где переменная perm1 была увеличена в 3 раза и напечатана
|
||||
|
||||
```py
|
||||
#Модуль Mod0
|
||||
import Mod1
|
||||
print('perm1=',Mod1.perm1)
|
||||
from Mod2 import alpha as al
|
||||
tt=al()
|
||||
print('tt=',tt)
|
||||
from Mod2 import beta
|
||||
qq=beta(float(tt))
|
||||
print('qq=',qq)
|
||||
perm1 = Mod1.perm1*3
|
||||
print("perm1*3= ", perm1)
|
||||
```
|
||||
|
||||
При запуске модуля напечаталась переменная perm1 умноженная на 3. Так как эта переменная класса строка, то строка была повторена трижды и сформирована новая строка.
|
||||
|
||||
```py
|
||||
Mod1:Введите значение = 4
|
||||
Mod1:Значение perm1= 4
|
||||
perm1= 4
|
||||
****ALPHA****
|
||||
Значение t=3
|
||||
tt= 3
|
||||
qq= 12391.647807916694
|
||||
perm1*3= 444
|
||||
```
|
||||
|
||||
## 3.3.4 Изучение области действия обьектов в модулях (пример 4)
|
||||
|
||||
В командной строке после выполнения главного модуля была произведена попытка изменить переменные perm1, tt, qq. В итоге tt и qq изменились, а при обращении к perm1 была выведена ошибка.
|
||||
|
||||
```py
|
||||
================= RESTART: C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\Mod0.py ================
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
perm1= 5
|
||||
****ALPHA****
|
||||
Значение t=7
|
||||
tt= 7
|
||||
qq= 3553321280.847041
|
||||
>>>perm1 = perm1*2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#5>", line 1, in <module>
|
||||
perm1 = perm1*2
|
||||
NameError: name 'perm1' is not defined
|
||||
>>>tt = tt*2
|
||||
>>>tt
|
||||
'77'
|
||||
>>>qq = qq*2
|
||||
>>>qq
|
||||
7106642561.694082
|
||||
```
|
||||
|
||||
## 4 Завершение работы в IDLE
|
||||
|
||||
Был завершен сеанс в среде IDLE.
|
||||
22
TEMA8/task.md
Обычный файл
@@ -0,0 +1,22 @@
|
||||
# Общее контрольное задание по теме 8
|
||||
|
||||
Добровольска Елизавета, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Разработайте программу, состоящую из трех модулей:
|
||||
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу.
|
||||
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
|
||||
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
|
||||
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
|
||||
|
||||
## Решение
|
||||
|
||||
Были созданы три модуля, реализующие инструкции задания. Запущен модуль 3 на выполнение.
|
||||
|
||||
```py
|
||||
=============== RESTART: C:\Users\Лиза\OneDrive\Desktop\python-labs\TEMA8\Module3.py ===============
|
||||
Введите имя первого файла: text1.txt
|
||||
Введите имя второго файла: text2.txt
|
||||
Коэффициент корреляции: 0.962
|
||||
```
|
||||
1
TEMA8/text1.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
1 2 3 4 7
|
||||
1
TEMA8/text2.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
6 7 8 9 10
|
||||
123
TEMA9/IKZ.md
Обычный файл
@@ -0,0 +1,123 @@
|
||||
M3_9
|
||||
|
||||
1) Создайте модуль М1, содержащий две функции:
|
||||
|
||||
- функция 1: аргументы - список Х с последовательностью отсчетов некоторого сигнала и два числовых параметра:М1 и М2; в функции должен создаваться кортеж К с индексами "аномальных" отсчетов сигнала, для которых выполняются неравенства: X[i]-X[i-1]<M1 или X[i]-X[i-1]>M2.
|
||||
|
||||
- функция 2: аргументы - список Х с отсчетами сигнала и кортеж К с индексами "аномальных" отсчетов; в функции должен создаваться новый список Х1, в котором элементы совпадают с элементами из Х, если те не являются "аномальными", а элементы из списка К заменяются на X[i]=0.5*(X[i-1]+X[i+1]), а если "аномальным" окажется последний элемент, то его значение заменяется на значение предпоследнего элемента.
|
||||
|
||||
2) Создайте еще один модуль М2, в котором должны выполняться операции:
|
||||
|
||||
- запрашивается и вводится имя текстового файла со значениями сигнала; проверяется наличие файла и при отсутствии - повторение запроса;
|
||||
|
||||
- из указанного файла считывается список Х с сигналом, причем в строках файла может быть разное число отсчетов сигнала;
|
||||
|
||||
- запрашиваются и вводятся граничные значения М1 и М2 (с проверкой: М1<M2);
|
||||
|
||||
- с применением функции 1 создается кортеж с индексами "аномальных" отсчетов; результат отображается на экране;
|
||||
|
||||
- если кортеж "аномальных" отсчетов не пустой, то с применением функции 2 создается список Х1 с "исправленным" сигналом, отображается на экране и записывается в бинарный файл Res44.bin; в ином случае выдается сообщение об отсутствии "аномальных" отсчетов.
|
||||
|
||||
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика сигналы Х и Х1.
|
||||
|
||||
4) Подготовьте текстовый файл, в который запишите 50 случайных, нормально распределенных чисел с математическим ожиданием 10 и стандартным отклонением 5. Проведите 2 расчета по программе с использованием этого файла.
|
||||
```py
|
||||
import matplotlib.pyplot as plt
|
||||
from MMM2 import main_pr
|
||||
|
||||
def plot_signals(X, X1):
|
||||
plt.figure()
|
||||
plt.plot(X, label='X',marker='o', linestyle='-')
|
||||
plt.plot(X1, label='X1',marker='s', linestyle='--')
|
||||
plt.title('Сравнение исходного и исправленного сигналов')
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = main_pr()
|
||||
if result:
|
||||
X, X1 = result if result[1] is not None else (result[0], None)
|
||||
plot_signals(X, X1)
|
||||
```
|
||||
```py
|
||||
import os
|
||||
import pickle
|
||||
from MMM1 import find_anomal, cor_anom
|
||||
|
||||
def read_sig(filename):
|
||||
numbers = []
|
||||
try:
|
||||
with open(filename, 'r', encoding='utf-8') as f:
|
||||
for line in f:
|
||||
parts = line.strip().split()
|
||||
for part in parts:
|
||||
try:
|
||||
numbers.append(float(part))
|
||||
except ValueError:
|
||||
continue
|
||||
except Exception as e:
|
||||
print(f"Ошибка чтения файла: {e}")
|
||||
return None
|
||||
return numbers
|
||||
|
||||
def main_pr():
|
||||
while True:
|
||||
filename = input("Введите имя текстового файла с сигналом: ")
|
||||
if os.path.isfile(filename):
|
||||
break
|
||||
print("Файл не найден. Попробуйте снова.")
|
||||
|
||||
X = read_sig(filename)
|
||||
if X is None:
|
||||
print("Не удалось прочитать сигнал.")
|
||||
return
|
||||
|
||||
M1 = float(input("Введите M1 (нижняя граница): "))
|
||||
M2 = float(input("Введите M2 (верхняя граница): "))
|
||||
|
||||
anomalies = find_anomal(X, M1, M2)
|
||||
if anomalies:
|
||||
print(f"Индексы аномальных отсчетов: {anomalies}")
|
||||
else:
|
||||
print("Индексов аномальных отcчетов нет")
|
||||
|
||||
if anomalies:
|
||||
X1 = cor_anom(X, anomalies)
|
||||
|
||||
with open('Res44.bin', 'wb') as f:
|
||||
pickle.dump(X1, f)
|
||||
print("Результат сохранён в файл Res44.bin")
|
||||
else:
|
||||
print("Аномальных отсчетов не обнаружено.")
|
||||
|
||||
return X, X1 if anomalies else None
|
||||
|
||||
```
|
||||
```py
|
||||
def find_anomal(X, M1, M2):
|
||||
|
||||
K = []
|
||||
for i in range(1, len(X)):
|
||||
diff = X[i] - X[i - 1]
|
||||
if diff < M1 or diff > M2:
|
||||
K.append(i)
|
||||
return tuple(K)
|
||||
|
||||
def cor_anom(X, K):
|
||||
|
||||
X1 = X.copy()
|
||||
n = len(X)
|
||||
|
||||
for idx in K:
|
||||
if idx == n - 1:
|
||||
X1[idx] = X[idx - 1]
|
||||
elif idx == 0:
|
||||
X1[idx] = X[idx + 1]
|
||||
else:
|
||||
X1[idx] = 0.5 * (X[idx - 1] + X[idx + 1])
|
||||
|
||||
return X1
|
||||
|
||||
```
|
||||
19
TEMA9/M0.py
Обычный файл
@@ -0,0 +1,19 @@
|
||||
import M2
|
||||
|
||||
def main():
|
||||
print("ГЛАВНАЯ ПРОГРАММА M3_27")
|
||||
print("Проведем расчеты для 2-х разных исходных файлов")
|
||||
|
||||
print("\n")
|
||||
print("РАСЧЕТ 1:")
|
||||
M2.main()
|
||||
|
||||
print("\n")
|
||||
print("РАСЧЕТ 2:")
|
||||
M2.main()
|
||||
|
||||
print("\n")
|
||||
print("Все расчеты завершены!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
31
TEMA9/M1.py
Обычный файл
@@ -0,0 +1,31 @@
|
||||
def find_min_max_indices(data):
|
||||
"""
|
||||
Функция 1: Нахождение номеров элементов с наименьшим и наибольшим значениями
|
||||
Аргумент: список или кортеж с выборкой
|
||||
Возвращает: кортеж (индекс_мин, индекс_макс)
|
||||
"""
|
||||
if not data:
|
||||
return -1, -1
|
||||
|
||||
min_index = data.index(min(data))
|
||||
max_index = data.index(max(data))
|
||||
return min_index, max_index
|
||||
|
||||
def calculate_group_averages(data, N):
|
||||
"""
|
||||
Функция 2: Разделение выборки на группы и расчет средних значений
|
||||
Аргументы:
|
||||
- data: список или кортеж с выборкой
|
||||
- N: целочисленный параметр - размер группы
|
||||
Возвращает: список средних значений по группам
|
||||
"""
|
||||
if not data or N <= 0:
|
||||
return []
|
||||
|
||||
group_averages = []
|
||||
for i in range(0, len(data), N):
|
||||
group = data[i:i + N]
|
||||
group_avg = sum(group) / len(group)
|
||||
group_averages.append(group_avg)
|
||||
|
||||
return group_averages
|
||||
86
TEMA9/M2.py
Обычный файл
@@ -0,0 +1,86 @@
|
||||
import os
|
||||
import struct
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def read_binary_file(filename):
|
||||
"""Чтение данных из бинарного файла"""
|
||||
data = []
|
||||
try:
|
||||
with open(filename, 'rb') as f:
|
||||
while True:
|
||||
bytes_data = f.read(4)
|
||||
if not bytes_data:
|
||||
break
|
||||
value = struct.unpack('f', bytes_data)[0]
|
||||
data.append(value)
|
||||
return data
|
||||
except FileNotFoundError:
|
||||
return None
|
||||
|
||||
def main():
|
||||
# Запрос имени файла с проверкой наличия
|
||||
while True:
|
||||
filename = input("Введите имя бинарного файла с выборкой: ")
|
||||
if os.path.exists(filename):
|
||||
break
|
||||
print(f"Файл '{filename}' не найден. Попробуйте еще раз.")
|
||||
|
||||
# Чтение выборки из файла
|
||||
data = read_binary_file(filename)
|
||||
if data is None:
|
||||
print("Ошибка чтения файла")
|
||||
return
|
||||
|
||||
print(f"Выборка считана из файла '{filename}'")
|
||||
print(f"Число элементов: {len(data)}")
|
||||
|
||||
# Импорт функций из M1
|
||||
from M1 import find_min_max_indices, calculate_group_averages
|
||||
|
||||
# Использование функции 1: нахождение номеров min и max
|
||||
min_index, max_index = find_min_max_indices(data)
|
||||
print(f"Номер элемента с наименьшим значением: {min_index}")
|
||||
print(f"Номер элемента с наибольшим значением: {max_index}")
|
||||
print(f"Наименьшее значение: {data[min_index]:.3f}")
|
||||
print(f"Наибольшее значение: {data[max_index]:.3f}")
|
||||
|
||||
# Запрос числа N для формирования групп
|
||||
while True:
|
||||
try:
|
||||
N = int(input(f"Введите число элементов N для формирования групп (1-{len(data)}): "))
|
||||
if 1 <= N <= len(data):
|
||||
break
|
||||
else:
|
||||
print(f"Введите число от 1 до {len(data)}")
|
||||
except ValueError:
|
||||
print("Введите целое число")
|
||||
|
||||
# Использование функции 2: расчет средних по группам
|
||||
group_averages = calculate_group_averages(data, N)
|
||||
|
||||
print(f"\nРазделение на {len(group_averages)} групп:")
|
||||
for i, avg in enumerate(group_averages):
|
||||
start_idx = i * N
|
||||
end_idx = min((i + 1) * N - 1, len(data) - 1)
|
||||
print(f"Группа {i+1} (элементы {start_idx}-{end_idx}): среднее = {avg:.3f}")
|
||||
|
||||
# ПОСТРОЕНИЕ ГРАФИКА СОГЛАСНО ЗАДАНИЮ
|
||||
plt.figure(figsize=(12, 6))
|
||||
|
||||
# Отображение исходной выборки (основное требование задания)
|
||||
plt.plot(range(len(data)), data, 'bo-', linewidth=2, markersize=6, label='Исходная выборка')
|
||||
|
||||
# Дополнительно выделяем min и max (не требуется заданием, но полезно)
|
||||
plt.plot(min_index, data[min_index], 'ro', markersize=10, label=f'Минимум (индекс {min_index})')
|
||||
plt.plot(max_index, data[max_index], 'go', markersize=10, label=f'Максимум (индекс {max_index})')
|
||||
|
||||
plt.title(f'Исходная выборка из файла: {filename}')
|
||||
plt.xlabel('Индекс элемента')
|
||||
plt.ylabel('Значение')
|
||||
plt.legend()
|
||||
plt.grid(True, alpha=0.3)
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
18
TEMA9/MMM0.py
Обычный файл
@@ -0,0 +1,18 @@
|
||||
import matplotlib.pyplot as plt
|
||||
from MMM2 import main_pr
|
||||
|
||||
def plot_signals(X, X1):
|
||||
plt.figure()
|
||||
plt.plot(X, label='X',marker='o', linestyle='-')
|
||||
plt.plot(X1, label='X1',marker='s', linestyle='--')
|
||||
plt.title('Сравнение исходного и исправленного сигналов')
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = main_pr()
|
||||
if result:
|
||||
X, X1 = result if result[1] is not None else (result[0], None)
|
||||
plot_signals(X, X1)
|
||||
23
TEMA9/MMM1.py
Обычный файл
@@ -0,0 +1,23 @@
|
||||
def find_anomal(X, M1, M2):
|
||||
|
||||
K = []
|
||||
for i in range(1, len(X)):
|
||||
diff = X[i] - X[i - 1]
|
||||
if diff < M1 or diff > M2:
|
||||
K.append(i)
|
||||
return tuple(K)
|
||||
|
||||
def cor_anom(X, K):
|
||||
|
||||
X1 = X.copy()
|
||||
n = len(X)
|
||||
|
||||
for idx in K:
|
||||
if idx == n - 1:
|
||||
X1[idx] = X[idx - 1]
|
||||
elif idx == 0:
|
||||
X1[idx] = X[idx + 1]
|
||||
else:
|
||||
X1[idx] = 0.5 * (X[idx - 1] + X[idx + 1])
|
||||
|
||||
return X1
|
||||
51
TEMA9/MMM2.py
Обычный файл
@@ -0,0 +1,51 @@
|
||||
import os
|
||||
import pickle
|
||||
from MMM1 import find_anomal, cor_anom
|
||||
|
||||
def read_sig(filename):
|
||||
numbers = []
|
||||
try:
|
||||
with open(filename, 'r', encoding='utf-8') as f:
|
||||
for line in f:
|
||||
parts = line.strip().split()
|
||||
for part in parts:
|
||||
try:
|
||||
numbers.append(float(part))
|
||||
except ValueError:
|
||||
continue
|
||||
except Exception as e:
|
||||
print(f"Ошибка чтения файла: {e}")
|
||||
return None
|
||||
return numbers
|
||||
|
||||
def main_pr():
|
||||
while True:
|
||||
filename = input("Введите имя текстового файла с сигналом: ")
|
||||
if os.path.isfile(filename):
|
||||
break
|
||||
print("Файл не найден. Попробуйте снова.")
|
||||
|
||||
X = read_sig(filename)
|
||||
if X is None:
|
||||
print("Не удалось прочитать сигнал.")
|
||||
return
|
||||
|
||||
M1 = float(input("Введите M1 (нижняя граница): "))
|
||||
M2 = float(input("Введите M2 (верхняя граница): "))
|
||||
|
||||
anomalies = find_anomal(X, M1, M2)
|
||||
if anomalies:
|
||||
print(f"Индексы аномальных отсчетов: {anomalies}")
|
||||
else:
|
||||
print("Индексов аномальных отcчетов нет")
|
||||
|
||||
if anomalies:
|
||||
X1 = cor_anom(X, anomalies)
|
||||
|
||||
with open('Res44.bin', 'wb') as f:
|
||||
pickle.dump(X1, f)
|
||||
print("Результат сохранён в файл Res44.bin")
|
||||
else:
|
||||
print("Аномальных отсчетов не обнаружено.")
|
||||
|
||||
return X, X1 if anomalies else None
|
||||
10
TEMA9/Mod3.py
Обычный файл
@@ -0,0 +1,10 @@
|
||||
class Class1: #Объявление класса Class1 в модуле
|
||||
def zad_zn(self,znach): # 1 Метод класса
|
||||
self.data=znach # self - ссылка на экземпляр класса Class1
|
||||
def otobrazh(self): # 2 Метод класса
|
||||
print(self.data) #Отображение данных экземпляра
|
||||
class Class2(Class1): #Class2 - наследник класса Class1
|
||||
def otobrazh(self): # Метод класса Class2
|
||||
print('значение=',self.data)#Отображение данных экземпляра
|
||||
def otobrazh(objekt): #Объявление самостоятельной функции
|
||||
print('значение объекта=',objekt)
|
||||
21
TEMA9/SAU.py
Обычный файл
@@ -0,0 +1,21 @@
|
||||
class SAU:
|
||||
def __init__(self,zn_param):
|
||||
self.param=zn_param
|
||||
self.ypr=[0,0]
|
||||
|
||||
def zdn_zn(self,upr):
|
||||
self.x=upr
|
||||
|
||||
def model(self):
|
||||
def inerz(x,T,yy):
|
||||
return (x+T*yy)/(T+1)
|
||||
|
||||
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
|
||||
y1=self.param[0]*y0 #Усилитель1
|
||||
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
|
||||
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
|
||||
self.ypr[0]=y2
|
||||
self.ypr[1]=y3
|
||||
|
||||
def otobraz(self):
|
||||
print('y=',self.ypr[1])
|
||||
24
TEMA9/create_test_files.py
Обычный файл
@@ -0,0 +1,24 @@
|
||||
import struct
|
||||
import random
|
||||
|
||||
def create_test_files():
|
||||
"""Создание тестовых бинарных файлов для задания M3_27"""
|
||||
|
||||
# Файл 1: 15 элементов
|
||||
data1 = [random.uniform(10, 50) for _ in range(15)]
|
||||
with open('data1.bin', 'wb') as f:
|
||||
for value in data1:
|
||||
f.write(struct.pack('f', value))
|
||||
print("Создан файл 'data1.bin' (15 элементов)")
|
||||
|
||||
# Файл 2: 20 элементов
|
||||
data2 = [random.uniform(-5, 5) for _ in range(20)]
|
||||
with open('data2.bin', 'wb') as f:
|
||||
for value in data2:
|
||||
f.write(struct.pack('f', value))
|
||||
print("Создан файл 'data2.bin' (20 элементов)")
|
||||
|
||||
print("\nТестовые файлы готовы!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
create_test_files()
|
||||
Двоичные данные
TEMA9/data1.bin
Обычный файл
2
TEMA9/data2.bin
Обычный файл
@@ -0,0 +1,2 @@
|
||||
´«÷?m
|
||||
L¿öÄ?ÀSw_@@]Æ?hc`@~Š¿³Ê?ŠêZ¿¸ÀFõ.?ÜÊ¿“‹y?zÝSÀgæ±½˜(Ÿ>µ¥<C2B5>@f=,À¾>ku²¿
|
||||
133
TEMA9/employee_module.py
Обычный файл
@@ -0,0 +1,133 @@
|
||||
class Employee:
|
||||
"""
|
||||
Класс для представления сотрудника организации
|
||||
"""
|
||||
|
||||
def __init__(self, fio="Неизвестно", otdel="Не назначен",
|
||||
dolzhnost="Не определена", oklad=0):
|
||||
"""
|
||||
Конструктор класса Employee
|
||||
"""
|
||||
self.fio = fio
|
||||
self.otdel = otdel
|
||||
self.dolzhnost = dolzhnost
|
||||
self.oklad = oklad
|
||||
self.__pooshreniya = [] # приватный атрибут для хранения поощрений
|
||||
|
||||
# Создаем свойство без декораторов
|
||||
self.pooshreniya = property(self._get_pooshreniya,
|
||||
self._set_pooshreniya,
|
||||
self._del_pooshreniya)
|
||||
|
||||
def povysit_oklad(self, summa):
|
||||
"""
|
||||
Метод для повышения оклада сотрудника на заданную сумму
|
||||
"""
|
||||
if summa > 0:
|
||||
self.oklad += summa
|
||||
print(f"Оклад сотрудника {self.fio} повышен на {summa}. Новый оклад: {self.oklad}")
|
||||
else:
|
||||
print("Сумма повышения должна быть положительной")
|
||||
|
||||
def perevesti_otdel(self, noviy_otdel):
|
||||
"""
|
||||
Метод для перевода сотрудника в другой отдел
|
||||
"""
|
||||
stariy_otdel = self.otdel
|
||||
self.otdel = noviy_otdel
|
||||
print(f"Сотрудник {self.fio} переведен из отдела '{stariy_otdel}' в отдел '{noviy_otdel}'")
|
||||
|
||||
def izmenit_dolzhnost(self, novaya_dolzhnost):
|
||||
"""
|
||||
Метод для изменения должности сотрудника
|
||||
"""
|
||||
staraya_dolzhnost = self.dolzhnost
|
||||
self.dolzhnost = novaya_dolzhnost
|
||||
print(f"Сотрудник {self.fio} переведен с должности '{staraya_dolzhnost}' на должность '{novaya_dolzhnost}'")
|
||||
|
||||
# Методы для свойства pooshreniya (вместо декораторов)
|
||||
def _get_pooshreniya(self):
|
||||
"""Геттер для получения списка поощрений"""
|
||||
return self.__pooshreniya
|
||||
|
||||
def _set_pooshreniya(self, value):
|
||||
"""Сеттер для добавления нового поощрения"""
|
||||
if isinstance(value, str):
|
||||
self.__pooshreniya.append(value)
|
||||
print(f"Добавлено поощрение для {self.fio}: '{value}'")
|
||||
elif isinstance(value, list):
|
||||
self.__pooshreniya.extend(value)
|
||||
print(f"Добавлены поощрения для {self.fio}: {value}")
|
||||
else:
|
||||
print("Поощрение должно быть строкой или списком строк")
|
||||
|
||||
def _del_pooshreniya(self):
|
||||
"""Делитер для очистки списка поощрений"""
|
||||
self.__pooshreniya.clear()
|
||||
print(f"Список поощрений сотрудника {self.fio} очищен")
|
||||
|
||||
def dobavit_pooshrenie(self, pooshrenie):
|
||||
"""
|
||||
Альтернативный метод для добавления поощрения
|
||||
"""
|
||||
self.__pooshreniya.append(pooshrenie)
|
||||
print(f"Добавлено поощрение для {self.fio}: '{pooshrenie}'")
|
||||
|
||||
def otobrazit_informaciyu(self):
|
||||
"""
|
||||
Метод для отображения полной информации о сотруднике
|
||||
"""
|
||||
print("\n")
|
||||
print(f"ФИО: {self.fio}")
|
||||
print(f"Отдел: {self.otdel}")
|
||||
print(f"Должность: {self.dolzhnost}")
|
||||
print(f"Оклад: {self.oklad} руб.")
|
||||
print(f"Поощрения: {self.__pooshreniya if self.__pooshreniya else 'нет'}")
|
||||
|
||||
|
||||
# Демонстрационная программа
|
||||
if __name__ == "__main__":
|
||||
print("Демонстрация работы класса EMPLOYEE\n")
|
||||
|
||||
# Создание первого экземпляра класса
|
||||
print("1. Создание первого сотрудника:")
|
||||
sotrudnik1 = Employee("Петров Алексей Сергеевич", "IT-отдел", "Программист", 50000)
|
||||
sotrudnik1.otobrazit_informaciyu()
|
||||
|
||||
# Создание второго экземпляра класса
|
||||
print("\n2. Создание второго сотрудника:")
|
||||
sotrudnik2 = Employee("Сидорова Мария Петровна", "Бухгалтерия", "Главный бухгалтер", 75000)
|
||||
sotrudnik2.otobrazit_informaciyu()
|
||||
|
||||
# Операции с первым сотрудником
|
||||
print("\n3. Операции с первым сотрудником:")
|
||||
sotrudnik1.povysit_oklad(10000)
|
||||
sotrudnik1.perevesti_otdel("Отдел разработки")
|
||||
sotrudnik1.izmenit_dolzhnost("Старший программист")
|
||||
sotrudnik1.pooshreniya = "Благодарность за успешный проект"
|
||||
sotrudnik1.pooshreniya = "Премия за квартал"
|
||||
sotrudnik1.otobrazit_informaciyu()
|
||||
|
||||
# Операции со вторым сотрудником
|
||||
print("\n4. Операции со вторым сотрудником:")
|
||||
sotrudnik2.povysit_oklad(5000)
|
||||
sotrudnik2.perevesti_otdel("Финансовый отдел")
|
||||
sotrudnik2.dobavit_pooshrenie("Благодарность за годовой отчет")
|
||||
sotrudnik2.otobrazit_informaciyu()
|
||||
|
||||
# Работа со свойствами
|
||||
print("\n5. Работа со свойствами:")
|
||||
print(f"Поощрения {sotrudnik1.fio}: {sotrudnik1.pooshreniya}")
|
||||
print(f"Поощрения {sotrudnik2.fio}: {sotrudnik2.pooshreniya}")
|
||||
|
||||
# Добавление нескольких поощрений сразу
|
||||
print("\n6. Добавление нескольких поощрений:")
|
||||
sotrudnik1.pooshreniya = ["Почетная грамота", "Ценный подарок"]
|
||||
sotrudnik1.otobrazit_informaciyu()
|
||||
|
||||
# Очистка поощрений (демонстрация делитера)
|
||||
print("\n7. Очистка поощрений:")
|
||||
del sotrudnik2.pooshreniya
|
||||
sotrudnik2.otobrazit_informaciyu()
|
||||
|
||||
print("\nДемонстрация завершена")
|
||||
14
TEMA9/main_SAU.py
Обычный файл
@@ -0,0 +1,14 @@
|
||||
###main_SAU
|
||||
prm=[2.5,4,1.3,0.8] #Параметры модели: коэф.усиления, 2 пост.времени, обратная связь
|
||||
from SAU import *
|
||||
xx=[0]+[1]*20 #Входной сигнал – «ступенька»
|
||||
SAUe=SAU(prm) # Создаём экземпляр класса
|
||||
yt=[]
|
||||
for xt in xx: # Прохождение входного сигнала
|
||||
SAUe.zdn_zn(xt)
|
||||
SAUe.model()
|
||||
SAUe.otobraz()
|
||||
yt.append(SAUe.ypr[1])
|
||||
import pylab
|
||||
pylab.plot(yt)
|
||||
pylab.show()
|
||||
209
TEMA9/obshee.md
Обычный файл
@@ -0,0 +1,209 @@
|
||||
# Общее контрольное задание
|
||||
|
||||
## Создайте и запишите в модуль класс, содержащий следующие компоненты: конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения; метод для обеспечения операции повышения оклада сотрудника на заданное значение; метод для обеспечения перевода сотрудника из одного отдела в другой; метод для изменения должности сотрудника; свойство, содержащее перечень (список) поощрений сотрудника. Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
|
||||
|
||||
```py
|
||||
class Employee:
|
||||
"""
|
||||
Класс для представления сотрудника организации
|
||||
"""
|
||||
|
||||
def __init__(self, fio="Неизвестно", otdel="Не назначен",
|
||||
dolzhnost="Не определена", oklad=0):
|
||||
"""
|
||||
Конструктор класса Employee
|
||||
"""
|
||||
self.fio = fio
|
||||
self.otdel = otdel
|
||||
self.dolzhnost = dolzhnost
|
||||
self.oklad = oklad
|
||||
self.__pooshreniya = [] # приватный атрибут для хранения поощрений
|
||||
|
||||
# Создаем свойство без декораторов
|
||||
self.pooshreniya = property(self._get_pooshreniya,
|
||||
self._set_pooshreniya,
|
||||
self._del_pooshreniya)
|
||||
|
||||
def povysit_oklad(self, summa):
|
||||
"""
|
||||
Метод для повышения оклада сотрудника на заданную сумму
|
||||
"""
|
||||
if summa > 0:
|
||||
self.oklad += summa
|
||||
print(f"Оклад сотрудника {self.fio} повышен на {summa}. Новый оклад: {self.oklad}")
|
||||
else:
|
||||
print("Сумма повышения должна быть положительной")
|
||||
|
||||
def perevesti_otdel(self, noviy_otdel):
|
||||
"""
|
||||
Метод для перевода сотрудника в другой отдел
|
||||
"""
|
||||
stariy_otdel = self.otdel
|
||||
self.otdel = noviy_otdel
|
||||
print(f"Сотрудник {self.fio} переведен из отдела '{stariy_otdel}' в отдел '{noviy_otdel}'")
|
||||
|
||||
def izmenit_dolzhnost(self, novaya_dolzhnost):
|
||||
"""
|
||||
Метод для изменения должности сотрудника
|
||||
"""
|
||||
staraya_dolzhnost = self.dolzhnost
|
||||
self.dolzhnost = novaya_dolzhnost
|
||||
print(f"Сотрудник {self.fio} переведен с должности '{staraya_dolzhnost}' на должность '{novaya_dolzhnost}'")
|
||||
|
||||
# Методы для свойства pooshreniya (вместо декораторов)
|
||||
def _get_pooshreniya(self):
|
||||
"""Геттер для получения списка поощрений"""
|
||||
return self.__pooshreniya
|
||||
|
||||
def _set_pooshreniya(self, value):
|
||||
"""Сеттер для добавления нового поощрения"""
|
||||
if isinstance(value, str):
|
||||
self.__pooshreniya.append(value)
|
||||
print(f"Добавлено поощрение для {self.fio}: '{value}'")
|
||||
elif isinstance(value, list):
|
||||
self.__pooshreniya.extend(value)
|
||||
print(f"Добавлены поощрения для {self.fio}: {value}")
|
||||
else:
|
||||
print("Поощрение должно быть строкой или списком строк")
|
||||
|
||||
def _del_pooshreniya(self):
|
||||
"""Делитер для очистки списка поощрений"""
|
||||
self.__pooshreniya.clear()
|
||||
print(f"Список поощрений сотрудника {self.fio} очищен")
|
||||
|
||||
def dobavit_pooshrenie(self, pooshrenie):
|
||||
"""
|
||||
Альтернативный метод для добавления поощрения
|
||||
"""
|
||||
self.__pooshreniya.append(pooshrenie)
|
||||
print(f"Добавлено поощрение для {self.fio}: '{pooshrenie}'")
|
||||
|
||||
def otobrazit_informaciyu(self):
|
||||
"""
|
||||
Метод для отображения полной информации о сотруднике
|
||||
"""
|
||||
print("\n")
|
||||
print(f"ФИО: {self.fio}")
|
||||
print(f"Отдел: {self.otdel}")
|
||||
print(f"Должность: {self.dolzhnost}")
|
||||
print(f"Оклад: {self.oklad} руб.")
|
||||
print(f"Поощрения: {self.__pooshreniya if self.__pooshreniya else 'нет'}")
|
||||
|
||||
|
||||
# Демонстрационная программа
|
||||
if __name__ == "__main__":
|
||||
print("Демонстрация работы класса EMPLOYEE\n")
|
||||
|
||||
# Создание первого экземпляра класса
|
||||
print("1. Создание первого сотрудника:")
|
||||
sotrudnik1 = Employee("Петров Алексей Сергеевич", "IT-отдел", "Программист", 50000)
|
||||
sotrudnik1.otobrazit_informaciyu()
|
||||
|
||||
# Создание второго экземпляра класса
|
||||
print("\n2. Создание второго сотрудника:")
|
||||
sotrudnik2 = Employee("Сидорова Мария Петровна", "Бухгалтерия", "Главный бухгалтер", 75000)
|
||||
sotrudnik2.otobrazit_informaciyu()
|
||||
|
||||
# Операции с первым сотрудником
|
||||
print("\n3. Операции с первым сотрудником:")
|
||||
sotrudnik1.povysit_oklad(10000)
|
||||
sotrudnik1.perevesti_otdel("Отдел разработки")
|
||||
sotrudnik1.izmenit_dolzhnost("Старший программист")
|
||||
sotrudnik1.pooshreniya = "Благодарность за успешный проект"
|
||||
sotrudnik1.pooshreniya = "Премия за квартал"
|
||||
sotrudnik1.otobrazit_informaciyu()
|
||||
|
||||
# Операции со вторым сотрудником
|
||||
print("\n4. Операции со вторым сотрудником:")
|
||||
sotrudnik2.povysit_oklad(5000)
|
||||
sotrudnik2.perevesti_otdel("Финансовый отдел")
|
||||
sotrudnik2.dobavit_pooshrenie("Благодарность за годовой отчет")
|
||||
sotrudnik2.otobrazit_informaciyu()
|
||||
|
||||
# Работа со свойствами
|
||||
print("\n5. Работа со свойствами:")
|
||||
print(f"Поощрения {sotrudnik1.fio}: {sotrudnik1.pooshreniya}")
|
||||
print(f"Поощрения {sotrudnik2.fio}: {sotrudnik2.pooshreniya}")
|
||||
|
||||
# Добавление нескольких поощрений сразу
|
||||
print("\n6. Добавление нескольких поощрений:")
|
||||
sotrudnik1.pooshreniya = ["Почетная грамота", "Ценный подарок"]
|
||||
sotrudnik1.otobrazit_informaciyu()
|
||||
|
||||
# Очистка поощрений (демонстрация делитера)
|
||||
print("\n7. Очистка поощрений:")
|
||||
del sotrudnik2.pooshreniya
|
||||
sotrudnik2.otobrazit_informaciyu()
|
||||
|
||||
print("\nДемонстрация завершена")
|
||||
```
|
||||
## Получу следующее:
|
||||
```py
|
||||
Демонстрация работы класса EMPLOYEE
|
||||
|
||||
1. Создание первого сотрудника:
|
||||
|
||||
|
||||
ФИО: Петров Алексей Сергеевич
|
||||
Отдел: IT-отдел
|
||||
Должность: Программист
|
||||
Оклад: 50000 руб.
|
||||
Поощрения: нет
|
||||
|
||||
2. Создание второго сотрудника:
|
||||
|
||||
|
||||
ФИО: Сидорова Мария Петровна
|
||||
Отдел: Бухгалтерия
|
||||
Должность: Главный бухгалтер
|
||||
Оклад: 75000 руб.
|
||||
Поощрения: нет
|
||||
|
||||
3. Операции с первым сотрудником:
|
||||
Оклад сотрудника Петров Алексей Сергеевич повышен на 10000. Новый оклад: 60000
|
||||
Сотрудник Петров Алексей Сергеевич переведен из отдела 'IT-отдел' в отдел 'Отдел разработки'
|
||||
Сотрудник Петров Алексей Сергеевич переведен с должности 'Программист' на должность 'Старший программист'
|
||||
|
||||
|
||||
ФИО: Петров Алексей Сергеевич
|
||||
Отдел: Отдел разработки
|
||||
Должность: Старший программист
|
||||
Оклад: 60000 руб.
|
||||
Поощрения: нет
|
||||
|
||||
4. Операции со вторым сотрудником:
|
||||
Оклад сотрудника Сидорова Мария Петровна повышен на 5000. Новый оклад: 80000
|
||||
Сотрудник Сидорова Мария Петровна переведен из отдела 'Бухгалтерия' в отдел 'Финансовый отдел'
|
||||
Добавлено поощрение для Сидорова Мария Петровна: 'Благодарность за годовой отчет'
|
||||
|
||||
|
||||
ФИО: Сидорова Мария Петровна
|
||||
Отдел: Финансовый отдел
|
||||
Должность: Главный бухгалтер
|
||||
Оклад: 80000 руб.
|
||||
Поощрения: ['Благодарность за годовой отчет']
|
||||
|
||||
5. Работа со свойствами:
|
||||
Поощрения Петров Алексей Сергеевич: Премия за квартал
|
||||
Поощрения Сидорова Мария Петровна: <property object at 0x0000026057B9E5C0>
|
||||
|
||||
6. Добавление нескольких поощрений:
|
||||
|
||||
|
||||
ФИО: Петров Алексей Сергеевич
|
||||
Отдел: Отдел разработки
|
||||
Должность: Старший программист
|
||||
Оклад: 60000 руб.
|
||||
Поощрения: нет
|
||||
|
||||
7. Очистка поощрений:
|
||||
|
||||
|
||||
ФИО: Сидорова Мария Петровна
|
||||
Отдел: Финансовый отдел
|
||||
Должность: Главный бухгалтер
|
||||
Оклад: 80000 руб.
|
||||
Поощрения: ['Благодарность за годовой отчет']
|
||||
|
||||
Демонстрация завершена
|
||||
```
|
||||
0
TEMA9/obshee.py
Обычный файл
3
TEMA9/repor.py
Обычный файл
@@ -0,0 +1,3 @@
|
||||
from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||
z4=Class1()
|
||||
z4.otobrazh()
|
||||
293
TEMA9/report.md
Обычный файл
@@ -0,0 +1,293 @@
|
||||
# 1. Запустили интерактивную оболочку IDLE, открыли окно текстового редактора
|
||||
# 2. Создание классов и их наследников
|
||||
## 2.1. Создание автономного класса
|
||||
### Создам класс с именем Class1, содержащий 2 функции, реализующие его методы
|
||||
```py
|
||||
class Class1: #Объявление класса
|
||||
def zad_zn(self,znach): #Метод 1 класса1 – задание значения data
|
||||
self.data=znach # self - ссылка на экземпляр класса
|
||||
def otobrazh(self): # Метод 2 класса1
|
||||
print(self.data)#Отображение данных экземпляра класса
|
||||
```
|
||||
### Создам 2 экземпляра этого класса
|
||||
```py
|
||||
z1=Class1() #Создаём 1-й экземпляр класса
|
||||
z2=Class1() #Создаём 2-й экземпляр класса
|
||||
```
|
||||
### С помощью первого метода задам разные значения атрибута у двух экземпляров
|
||||
```py
|
||||
z1.zad_zn('экз.класса 1') #Обращение к методу класса у 1-го экз.
|
||||
z2.zad_zn(-632.453) #Обращение к методу класса у 2-го экз.
|
||||
```
|
||||
### Для контроля отображу его значения с помощью второго метода
|
||||
```py
|
||||
z1.otobrazh() # Обращение ко второму методу класса
|
||||
экз.класса 1
|
||||
z2.otobrazh()
|
||||
-632.453
|
||||
```
|
||||
### Изменю значение атрибута у первого экземпляра и отображу его
|
||||
```py
|
||||
z1.data='Новое значение атрибута у экз.1'
|
||||
z1.otobrazh()
|
||||
Новое значение атрибута у экз.1
|
||||
```
|
||||
## 2.2. Создание класса-наследника
|
||||
### В объявлении класса после его имени в скобках перечисляются его «родительские классы»
|
||||
```py
|
||||
class Class2(Class1): #Class2 - наследник класса Class1
|
||||
def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя
|
||||
print('значение=',self.data)#Отображение данных экземпляра
|
||||
```
|
||||
### Метод класса имеет то же имя, что и второй метод у родительского класса
|
||||
|
||||
### Создам экземпляр второго класса
|
||||
```py
|
||||
z3=Class2()
|
||||
```
|
||||
### Посмотрю список его атрибутов
|
||||
```py
|
||||
dir(z3)
|
||||
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
|
||||
```
|
||||
### Задам у него значение данного data (унаследовано от Class1)
|
||||
```py
|
||||
z3.zad_zn('Совсем новое')
|
||||
```
|
||||
### Отображу его для контроля
|
||||
```py
|
||||
z3.otobrazh()
|
||||
значение= Совсем новое
|
||||
```
|
||||
#### Поскольку метод otobrazh есть и у класса Class2, и у его родительского класса Class1, проанализирую, метод какого класса сработал при выводе этого значения.
|
||||
#### Сработал метод класса Class2. Это демонстрация переопределения методов в наследовании. Когда дочерний класс определяет метод с тем же именем, что и родительский класс, метод дочернего класса "перекрывает" родительский метод
|
||||
|
||||
### Для проверки отображу значение данного data у первого экземпляра первого класса
|
||||
```py
|
||||
z1.otobrazh()
|
||||
Новое значение атрибута у экз.1
|
||||
```
|
||||
#### Значение не изменилось. Это подтвержает, что каждый экземпляр класса имеет свои собственные атрибуты, изменение атрибута data у экземпляра z3 (класса Class2) никак не влияет на атрибут data у экземпляра z1 (класса Class1), экземпляры классов являются независимыми объектами в памяти
|
||||
|
||||
### Удалю экземпляры классов инструкцией
|
||||
```py
|
||||
del z1,z2,z3
|
||||
```
|
||||
# 3. Использование классов, содержащихся в модулях
|
||||
### Создам модуль с именем Mod3
|
||||

|
||||
### Импортирую первый класс из модуля
|
||||
```py
|
||||
from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||
```
|
||||
```py
|
||||
z4=Class1()
|
||||
z4.otobrazh()
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#31>", line 1, in <module>
|
||||
z4.otobrazh()
|
||||
File "C:\Users\User-PC\python-labs\TEMA9\Mod3.py", line 5, in otobrazh
|
||||
print(self.data)#Отображение данных экземпляра
|
||||
AttributeError: 'Class1' object has no attribute 'data'
|
||||
```
|
||||
#### Ошибка возникла потому, что у экземпляра z4 не был определен атрибут data. При запуске происходит следующее: создается экземпляр z4 класса Class1; вызывается метод otobrazh(), который пытается выполнить print(self.data); но атрибут data еще не был создан, так как метод zad_zn() никогда не вызывался
|
||||
#### Решение: нужно сначала установить значение через метод zad_zn() или напрямую присвоить атрибут data
|
||||
|
||||
### Попробую иначе
|
||||
```py
|
||||
from Mod3 import Class1
|
||||
z4=Class1()
|
||||
z4.data='значение данного data у экз.4'
|
||||
z4.otobrazh()
|
||||
значение данного data у экз.4
|
||||
```
|
||||
### Удалю экземпляр z4 и после этого импортирую модуль целиком
|
||||
```py
|
||||
del z4
|
||||
import Mod3 #Полный импорт содержимого модуля
|
||||
```
|
||||
### Создам экземпляр класса теперь инструкцией
|
||||
```py
|
||||
import Mod3 #Полный импорт содержимого модуля
|
||||
z4=Mod3.Class2()
|
||||
z4.zad_zn('Класс из модуля')
|
||||
z4.otobrazh()
|
||||
значение= Класс из модуля
|
||||
Mod3.otobrazh('Объект')
|
||||
значение объекта= Объект
|
||||
```
|
||||
#### Ключевые различия: метод класса работает с атрибутами экземпляра (self.data), самостоятельная функция работает с переданным ей аргументом (objekt), класс Class2 переопределил метод otobrazh, добавив префикс "значение=", разные способы импорта (from Mod3 import Class1 vs import Mod3) влияют на пространство имен
|
||||
|
||||
# 4. Использование специальных методов
|
||||
#### Имена специальных методов предваряются одним или двумя подчерками и имеют вид: __<имя специального метода>__
|
||||
#### Специальные методы (dunder methods - double underscore) нужны для реализации определенного поведения объектов в Python. Их особенности: автоматический вызов - вызываются интерпретатором в определенных ситуациях; перегрузка операторов - позволяют определить поведение объектов при использовании операторов (+, -, *, / и т.д.); эмуляция встроенных типов - позволяют создаваемым классам вести себя как встроенные типы Python; контроль жизненного цикла - управление созданием, инициализацией и удалением объектов; синтаксический сахар - делают код более читаемым и интуитивно понятным
|
||||
|
||||
### Cоздам класс, содержащий два специальных метода
|
||||
```py
|
||||
class Class3(Class2): #Наследник класса Class2, а через него – и класса Class1
|
||||
def __init__(self,znach): #Конструктор-вызывается при создании нового экземпляра класса
|
||||
self.data=znach
|
||||
def __add__(self,drug_zn): #Вызывается, когда экземпляр участвует в операции «+»
|
||||
return Class3(self.data+drug_zn)
|
||||
def zad_dr_zn(self,povtor): #А это - обычный метод
|
||||
self.data*=povtor
|
||||
```
|
||||
### Для иллюстрации работы этих методов создам экземпляр класса Class3 и отображу его
|
||||
```py
|
||||
z5=Class3('abc') #При создании экземпляра срабатывает конструктор
|
||||
z5.otobrazh()
|
||||
значение= abc
|
||||
```
|
||||
### Теперь выполню операцию «+» (должен сработать специальный метод __add__)
|
||||
```py
|
||||
z6=z5+'def'
|
||||
z6.otobrazh()
|
||||
значение= abcdef
|
||||
```
|
||||
### Обращусь к обычному методу класса
|
||||
```py
|
||||
z6.zad_dr_zn(3)
|
||||
z6.otobrazh()
|
||||
значение= abcdefabcdefabcdef
|
||||
```
|
||||
# 5. Присоединение атрибутов к классу
|
||||
### Выведу список атрибутов класса Class3
|
||||
```py
|
||||
dir(Class3)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||
```
|
||||
### Создам новый атрибут класса простым присваиванием
|
||||
```py
|
||||
Class3.fio='Иванов И.И.'
|
||||
```
|
||||
### Вновь выведу список атрибутов и увижу, что у класса появился новый атрибут fio
|
||||
```py
|
||||
dir(Class3)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||
```
|
||||
### Создам экземпляр
|
||||
```py
|
||||
z7=Class3(123)
|
||||
```
|
||||
### Выведу список атрибутов экземпляра. Сделаю формальную проверку, чтобы понять совпадает ли он с атрибутами класса
|
||||
```py
|
||||
dir(z7)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||
dir(z7)==dir(Class3)
|
||||
False
|
||||
```
|
||||
#### Различия: dir(Class3) показывает атрибуты класса (методы, классовые атрибуты); dir(z7) показывает атрибуты экземпляра (данные экземпляра + атрибуты класса); у экземпляра появляются атрибуты data, rozden, которых нет в списке атрибутов класса
|
||||
|
||||
### Отображу значение атрибута fio у экземпляра z7
|
||||
```py
|
||||
print(z7.fio)
|
||||
Иванов И.И.
|
||||
```
|
||||
#### Полученное значение совпадает со значением атрибута класса. Поскольку fio был добавлен к классу Class3, а у экземпляра z7 такого атрибута нет, Python находит его на уровне класса
|
||||
|
||||
### Объявлю новый атрибут у созданного экземпляра. После выведу список атрибутов экземпляра z7 и увижу, что в нем появился атрибут rozden
|
||||
```py
|
||||
z7.rozden='1987'
|
||||
dir(z7)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
|
||||
```
|
||||
### Вновь выведу список атрибутов класса Class3. Увижу появился ли атрибут rozden у класса
|
||||
```py
|
||||
dir(Class3)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||
```
|
||||
#### Этот атрибут не появился. Атрибут rozden был добавлен только к экземпляру z7, но не к классу Class3. Изменения на уровне экземпляра не влияют на класс
|
||||
|
||||
# 6. Выявление родительских классов
|
||||
### Такое выявление делается с помощью специального атрибута __bases__
|
||||
### Выведу родительский класс для созданного класса Class3
|
||||
```py
|
||||
Class3.__bases__
|
||||
(<class '__main__.Class2'>,)
|
||||
```
|
||||
### Выведу родительский класс для созданного класса Class2
|
||||
```py
|
||||
Class2.__bases__
|
||||
(<class '__main__.Class1'>,)
|
||||
```
|
||||
### Выведу родительский класс для созданного класса Class1
|
||||
```py
|
||||
Class1.__bases__
|
||||
(<class 'object'>,)
|
||||
```
|
||||
### Для получения всей цепочки наследования использую атрибут __mro__
|
||||
```py
|
||||
Class3.__mro__
|
||||
(<class '__main__.Class3'>, <class '__main__.Class2'>, <class '__main__.Class1'>, <class 'object'>)
|
||||
```
|
||||
### Получу всю цепочку наследования для встроенного класса ошибок «деление на ноль»
|
||||
```py
|
||||
ZeroDivisionError.__mro__
|
||||
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
|
||||
```
|
||||
|
||||
# 7. Создание свойства класса.
|
||||
#### Свойство (property) класса – это особый атрибут класса, с которым можно производить операции чтения или задания его значения, а также удаление значения этого атрибута
|
||||
### Создам новый класс с определенным в нем свойством. Здесь имеется 3 метода: chten, zapis, stiran, которые обслуживают созданное свойство, реализуя операции, соответственно, чтения, записи или удаления значений свойства
|
||||
```py
|
||||
class Class4:
|
||||
def __init__(sam,znach):
|
||||
sam.__prm=znach
|
||||
def chten(sam):
|
||||
return sam.__prm
|
||||
def zapis(sam,znch):
|
||||
sam.__prm=znch
|
||||
def stiran(sam):
|
||||
del sam.__prm
|
||||
svojstvo=property(chten,zapis,stiran)
|
||||
```
|
||||
### Попробуем некоторые операции с этим свойством
|
||||
```py
|
||||
exempl=Class4(12)
|
||||
exempl.svojstvo # Чтение
|
||||
12
|
||||
exempl.svojstvo=45 # Запись нового значения
|
||||
print(exempl.svojstvo)
|
||||
45
|
||||
del exempl.svojstvo # Удаление атрибута
|
||||
exempl.svojstvo # Попытка чтения после удаления
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#75>", line 1, in <module>
|
||||
exempl.svojstvo
|
||||
File "<pyshell#69>", line 5, in chten
|
||||
return sam.__prm
|
||||
AttributeError: 'Class4' object has no attribute '_Class4__prm'
|
||||
```
|
||||
#### Полученный результат и объяснение: после выполнения del exempl.svojstvo происходит следующее: вызывается метод stiran, который выполняет del sam.__prm; удаляется приватный атрибут __prm у экземпляра; при последующей попытке чтения exempl.svojstvo: вызывается метод chten; метод пытается вернуть sam.__prm; но атрибут __prm уже удален; возникает ошибка AttributeError
|
||||
|
||||
# 8. Рассмотрите пример представления в виде класса модели системы автоматического регулирования (САР), состоящей из последовательного соединения усилителя и двух инерционных звеньев, охваченных отрицательной обратной связью с усилителем.
|
||||
### Создам модуль SAU.py с классом
|
||||

|
||||
### Тестирование класса произведу с помощью следующей программы:
|
||||

|
||||
### Запущу программу на выполнение и изучу вид выходного сигнала при разных значениях параметров САР
|
||||
```py
|
||||
y= 0.0
|
||||
y= 0.2173913043478261
|
||||
y= 0.4763705103969754
|
||||
y= 0.686594887811293
|
||||
y= 0.8199324616478645
|
||||
y= 0.8837201137353929
|
||||
y= 0.8994188484874774
|
||||
y= 0.8892777072047301
|
||||
y= 0.870097963179993
|
||||
y= 0.8518346102696789
|
||||
y= 0.8387499784485772
|
||||
y= 0.8314204114211459
|
||||
y= 0.8286051955249649
|
||||
y= 0.8285656555914835
|
||||
y= 0.8297915186846528
|
||||
y= 0.8312697736438287
|
||||
y= 0.8324765218921963
|
||||
y= 0.8332456979978418
|
||||
y= 0.8336163607592184
|
||||
y= 0.8337101315489143
|
||||
y= 0.833654237067147
|
||||
```
|
||||
### Построился график переходного процесса системы
|
||||

|
||||
43
TEMA9/report.py
Обычный файл
@@ -0,0 +1,43 @@
|
||||
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
|
||||
Enter "help" below or click "Help" above for more information.
|
||||
class Class1: #Объявление класса
|
||||
def zad_zn(self,znach): #Метод 1 класса1 – задание значения data
|
||||
self.data=znach # self - ссылка на экземпляр класса
|
||||
def otobrazh(self): # Метод 2 класса1
|
||||
print(self.data)#Отображение данных экземпляра класса
|
||||
|
||||
z1=Class1() #Создаём 1-й экземпляр класса
|
||||
z2=Class1() #Создаём 2-й экземпляр класса
|
||||
z1.zad_zn('экз.класса 1') #Обращение к методу класса у 1-го экз.
|
||||
z2.zad_zn(-632.453) #Обращение к методу класса у 2-го экз.
|
||||
z1.otobrazh() # Обращение ко второму методу класса
|
||||
экз.класса 1
|
||||
z2.otobrazh()
|
||||
-632.453
|
||||
z1.data='Новое значение атрибута у экз.1'
|
||||
z1.otobrazh()
|
||||
Новое значение атрибута у экз.1
|
||||
class Class2(Class1): #Class2 - наследник класса Class1
|
||||
def otobrazh(self): # Метод класса Class2 – переопределяет метод родителя
|
||||
... print('значение=',self.data)#Отображение данных экземпляра
|
||||
...
|
||||
...
|
||||
>>> z3=Class2()
|
||||
>>> dir(z3)
|
||||
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__firstlineno__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__static_attributes__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
|
||||
>>> z3.zad_zn('Совсем новое')
|
||||
>>> z3.otobrazh()
|
||||
значение= Совсем новое
|
||||
>>> z1.otobrazh()
|
||||
Новое значение атрибута у экз.1
|
||||
>>> del z1,z2,z3
|
||||
>>> from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#17>", line 1, in <module>
|
||||
from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||
ModuleNotFoundError: No module named 'Mod3'
|
||||
>>> from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#18>", line 1, in <module>
|
||||
from Mod3 import Class1 #Частичный импорт содержимого модуля
|
||||
ModuleNotFoundError: No module named 'Mod3'
|
||||
69
TEMA9/test_data.py
Обычный файл
@@ -0,0 +1,69 @@
|
||||
# Модуль для создания тестовых данных
|
||||
import pickle
|
||||
import random
|
||||
import numpy as np
|
||||
|
||||
|
||||
def создать_тестовые_файлы():
|
||||
"""
|
||||
Создает два бинарных файла с тестовыми выборками для проверки программы
|
||||
"""
|
||||
|
||||
# Первый файл - нормальное распределение
|
||||
print("Создание первого тестового файла...")
|
||||
данные1 = [random.gauss(50, 15) for _ in range(30)] # 30 элементов, μ=50, σ=15
|
||||
with open('выборка1_M3_27.bin', 'wb') as f:
|
||||
pickle.dump(данные1, f)
|
||||
print(f"Файл 'выборка1_M3_27.bin' создан. Элементов: {len(данные1)}")
|
||||
print(f"Диапазон значений: {min(данные1):.2f} - {max(данные1):.2f}")
|
||||
|
||||
# Второй файл - равномерное распределение
|
||||
print("\nСоздание второго тестового файла...")
|
||||
данные2 = [random.uniform(-10, 10) for _ in range(25)] # 25 элементов, от -10 до 10
|
||||
with open('выборка2_M3_27.bin', 'wb') as f:
|
||||
pickle.dump(данные2, f)
|
||||
print(f"Файл 'выборка2_M3_27.bin' создан. Элементов: {len(данные2)}")
|
||||
print(f"Диапазон значений: {min(данные2):.2f} - {max(данные2):.2f}")
|
||||
|
||||
# Третий файл - с явными min/max для демонстрации
|
||||
print("\nСоздание демонстрационного файла...")
|
||||
данные3 = [2, 8, 3, 1, 9, 4, 7, 5, 6] # Явные min=1, max=9
|
||||
with open('демо_выборка_M3_27.bin', 'wb') as f:
|
||||
pickle.dump(данные3, f)
|
||||
print(f"Файл 'демо_выборка_M3_27.bin' создан. Элементов: {len(данные3)}")
|
||||
print(f"Значения: {данные3}")
|
||||
print(f"Min: {min(данные3)} (индекс {данные3.index(min(данные3))})")
|
||||
print(f"Max: {max(данные3)} (индекс {данные3.index(max(данные3))})")
|
||||
|
||||
print("\n")
|
||||
print("Тестовые данные созданы:")
|
||||
print("1. выборка1_M3_27.bin - 30 элементов (нормальное распределение)")
|
||||
print("2. выборка2_M3_27.bin - 25 элементов (равномерное распределение)")
|
||||
print("3. демо_выборка_M3_27.bin - 9 элементов (демонстрационный)")
|
||||
|
||||
|
||||
def показать_содержимое_файлов():
|
||||
"""
|
||||
Показывает содержимое созданных тестовых файлов
|
||||
"""
|
||||
файлы = ['выборка1_M3_27.bin', 'выборка2_M3_27.bin', 'демо_выборка_M3_27.bin']
|
||||
|
||||
for имя_файла in файлы:
|
||||
try:
|
||||
with open(имя_файла, 'rb') as f:
|
||||
данные = pickle.load(f)
|
||||
print(f"\n{имя_файла}:")
|
||||
print(f" Элементов: {len(данные)}")
|
||||
print(f" Min: {min(данные):.3f}, Max: {max(данные):.3f}")
|
||||
print(f" Первые 5 элементов: {[f'{x:.3f}' for x in данные[:5]]}")
|
||||
except FileNotFoundError:
|
||||
print(f"\nФайл {имя_файла} не найден. Сначала создайте тестовые данные.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Создание тестовых данных")
|
||||
|
||||
создать_тестовые_файлы()
|
||||
|
||||
print("\nСодержимое созданных файлов:")
|
||||
показать_содержимое_файлов()
|
||||
Двоичные данные
TEMA9/{02373A72-7282-4831-A19F-62F0491DA505}.png
Обычный файл
|
После Ширина: | Высота: | Размер: 127 KiB |