From cb7673ea1c0d0ebe1ecc62aea7f0f94ffec53343 Mon Sep 17 00:00:00 2001 From: Danil Date: Sun, 7 Dec 2025 23:12:56 +0300 Subject: [PATCH] =?UTF-8?q?report:=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA6/aa.txt | Bin 0 -> 24 bytes TEMA6/dd.txt | 0 TEMA6/stud.txt | Bin 0 -> 218 bytes TEMA6/test6.py | 29 ++++ TEMA7/test.py | 14 ++ TEMA7/test7.md | 28 ++++ TEMA8/M0.py | 42 +++++ TEMA8/M1.py | 9 ++ TEMA8/M2.py | 17 +++ TEMA8/MM0.py | 2 + TEMA8/MM1.py | 20 +++ TEMA8/MM2.py | 23 +++ TEMA8/Mod0.py | 1 + TEMA8/Mod1.py | 4 +- TEMA8/protocol8.md | 364 ++++++++++++++++++++++++++++++++++++++++++++ TEMA8/protocol8.py | 363 +++++++++++++++++++++++++++++++++++++++++++ TEMA8/protocol8.txt | 363 +++++++++++++++++++++++++++++++++++++++++++ TEMA8/rand1.txt | 1 + TEMA8/rand2.txt | 1 + TEMA8/task8.md | 100 ++++++++++++ bin.mnz | Bin 0 -> 745 bytes 21 files changed, 1379 insertions(+), 2 deletions(-) create mode 100644 TEMA6/aa.txt create mode 100644 TEMA6/dd.txt create mode 100644 TEMA6/stud.txt create mode 100644 TEMA6/test6.py create mode 100644 TEMA7/test.py create mode 100644 TEMA7/test7.md create mode 100644 TEMA8/M0.py create mode 100644 TEMA8/M1.py create mode 100644 TEMA8/M2.py create mode 100644 TEMA8/MM0.py create mode 100644 TEMA8/MM1.py create mode 100644 TEMA8/MM2.py create mode 100644 TEMA8/protocol8.md create mode 100644 TEMA8/protocol8.py create mode 100644 TEMA8/protocol8.txt create mode 100644 TEMA8/rand1.txt create mode 100644 TEMA8/rand2.txt create mode 100644 TEMA8/task8.md create mode 100644 bin.mnz diff --git a/TEMA6/aa.txt b/TEMA6/aa.txt new file mode 100644 index 0000000000000000000000000000000000000000..f9f0a6a14d164b68f53f469f0ab539bec1d0cf58 GIT binary patch literal 24 acmZo*naaxm0kKmwycxZjyqUdOQuP2a5(EhV literal 0 HcmV?d00001 diff --git a/TEMA6/dd.txt b/TEMA6/dd.txt new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/stud.txt b/TEMA6/stud.txt new file mode 100644 index 0000000000000000000000000000000000000000..24b4fbc19b855b17e8645084c6141ccbb5413217 GIT binary patch literal 218 zcmZ9GF$%&!5JfGt3sJm-qJ;s^vFEWAVqqa}AvoG3Rqz0d5L{d~9>Kpi^6w^$$@UY=P;PFNm@s{`j3&*wiL`-;Pr<}1Plqm?XiJ%*a^jlJT+m5B^jqwT EA3J!3o&W#< literal 0 HcmV?d00001 diff --git a/TEMA6/test6.py b/TEMA6/test6.py new file mode 100644 index 0000000..6d4fb1c --- /dev/null +++ b/TEMA6/test6.py @@ -0,0 +1,29 @@ +import random +import pickle + + +# 1 +students = {"Лазарев": random.randint(1, 100),"Анисенков": random.randint(1, 100),"Филлипова": random.randint(1, 100),"Филлипов": random.randint(1, 100),"Жалнин": random.randint(1, 100),"Махнов": random.randint(1, 100),"Лыкова": random.randint(1, 100),"Терехов": random.randint(1, 100),"Голощапов": random.randint(1, 100),"Мельников": random.randint(1, 100)} +print("Исходный словарь") +for stud, zeloe in students.items(): + print(f"Студент {stud} - {zeloe}") + +# 2 +with open('stud.txt', 'wb') as f: + pickle.dump(students, f) + +# 3 +del students + +# 4 +with open('stud.txt', 'rb') as f: + students = pickle.load(f) +if students: + keys = list(students.keys()) + students.pop(keys[0]) + students.pop(keys[-1]) + +# 5 +print("Новый словарь") +for stud, zeloe in students.items(): + print(f"Студент {stud} : {zeloe}") diff --git a/TEMA7/test.py b/TEMA7/test.py new file mode 100644 index 0000000..56843dd --- /dev/null +++ b/TEMA7/test.py @@ -0,0 +1,14 @@ + +def file(func, *args, **kwargs): + print(f"Функция: {func.__name__}") + print(f"Аргументы: {args} {kwargs}") + return func(*args, **kwargs) + +def m(a, b): + return a * b +def g(name, word="Привет"): + return f"{word}, {name}!" + +print(file(m, 5, 3)) +print(file(g,"Аня", word="Здравствуй")) + diff --git a/TEMA7/test7.md b/TEMA7/test7.md new file mode 100644 index 0000000..2b0fe05 --- /dev/null +++ b/TEMA7/test7.md @@ -0,0 +1,28 @@ +# 7 + , -01-23 + +# + , ( ) . - , . - , . + +# +``` +def file(func, *args, **kwargs): + print(f": {func.__name__}") + print(f": {args} {kwargs}") + return func(*args, **kwargs) + +def m(a, b): + return a * b +def g(name, word=""): + return f"{word}, {name}!" + +print(file(m, 5, 3)) +print(file(g,"", word="")) + +>> : m +>> : (5, 3) {} +>> 15 +>> : g +>> : ('',) {'word': ''} +>> , ! +``` \ No newline at end of file diff --git a/TEMA8/M0.py b/TEMA8/M0.py new file mode 100644 index 0000000..b2d3028 --- /dev/null +++ b/TEMA8/M0.py @@ -0,0 +1,42 @@ +import random +import math + +mean1 = random.uniform(0, 50) +std1 = random.uniform(0.1, 1) +file1 = open("rand1.txt", "w") + +for i in range(1000): + num = round(random.normalvariate(mean1, std1),2) + file1.write(f"{num}") + if i < 999: + file1.write(" ") + +file1.close() + +# Создание второго файла +mean2 = random.uniform(0, 50) +std2 = random.uniform(0.1, 1) +file2 = open("rand2.txt", "w") + +for i in range(1000): + num = round(random.normalvariate(mean2, std2),2) + file2.write(f"{num}") + if i < 999: + file2.write(" ") + +file2.close() +import M1 +import M2 + +def main(): + file1 = input("Введите имя первого файла: ") + file2 = input("Введите имя второго файла: ") + + list1 = M1.f(file1) + list2 = M1.f(file2) + print(len(list1)) + correlation = M2.correlation(list1, list2) + + print(f"Парный коэффициент корреляции: {correlation:.3f}") + +main() diff --git a/TEMA8/M1.py b/TEMA8/M1.py new file mode 100644 index 0000000..c5fd7c9 --- /dev/null +++ b/TEMA8/M1.py @@ -0,0 +1,9 @@ +def f(filename): + numbers = [] + file = open(filename, 'r') + for i in file: + line_numbers = i.strip().split() + for j in line_numbers: + numbers.append(float(j)) + file.close() + return numbers diff --git a/TEMA8/M2.py b/TEMA8/M2.py new file mode 100644 index 0000000..e335810 --- /dev/null +++ b/TEMA8/M2.py @@ -0,0 +1,17 @@ +import math +import statistics as st +def correlation(list1, list2): + n = min(len(list1), len(list2)) + x = list1[:n] + y = list2[:n] + + Xsr = st.mean(x) + Ysr = st.mean(y) + + cov = st.covariance(x,y) + + Xso = st.stdev(x) + Yso = st.stdev(y) + + R_paired = cov / ( Xso*Yso) + return R_paired diff --git a/TEMA8/MM0.py b/TEMA8/MM0.py new file mode 100644 index 0000000..866432b --- /dev/null +++ b/TEMA8/MM0.py @@ -0,0 +1,2 @@ +import MM2 +print('y=',MM2.vyhod) diff --git a/TEMA8/MM1.py b/TEMA8/MM1.py new file mode 100644 index 0000000..87c40ab --- /dev/null +++ b/TEMA8/MM1.py @@ -0,0 +1,20 @@ +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 diff --git a/TEMA8/MM2.py b/TEMA8/MM2.py new file mode 100644 index 0000000..6727207 --- /dev/null +++ b/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) diff --git a/TEMA8/Mod0.py b/TEMA8/Mod0.py index 6337fc3..94f44a7 100644 --- a/TEMA8/Mod0.py +++ b/TEMA8/Mod0.py @@ -7,3 +7,4 @@ print('tt=',tt) from Mod2 import beta qq=beta(float(tt)) print('qq=',qq) +print(t, expi) diff --git a/TEMA8/Mod1.py b/TEMA8/Mod1.py index cf05b61..67fab01 100644 --- a/TEMA8/Mod1.py +++ b/TEMA8/Mod1.py @@ -1,2 +1,2 @@ -perm1=input('Mod1:Введите значение = ') -print('Mod1:Значение perm1=',perm1) +perm1=input('Mod1:Введите значение = ') +print('Mod1:Значение perm1=',perm1) diff --git a/TEMA8/protocol8.md b/TEMA8/protocol8.md new file mode 100644 index 0000000..51c3b2a --- /dev/null +++ b/TEMA8/protocol8.md @@ -0,0 +1,364 @@ +# Тема 8 Лазарев Данил А-01-23 +# 1.Запуск интерактивной оболочки IDLE, импорт трёх вспомогательных каталогов +``` +import os,sys,importlib +os.chdir("C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA8") +os.getcwd() +>> 'C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA8' +``` + +# 2.Создание и использование модулей в среде Python +Большие программы делятся на части-модули, записываемые в отдельные файлы. Это делается для удобства отладки, обеспечения возможности коллективной разработки, создания возможности повторного использования программ и по другим соображениям. При этом возникают 2 проблемы: + +- передача управления от одного модуля к другому в процессе выполнения программы; + +- передача данных между модулями. + +Модулем в среде Python называется любая часть программного кода на этом языке, записанная в отдельном файле + +# 2.1 Запуск модуля на выполнение путем его импорта. +Cодержимое модуля становится доступным для исполнения после выполнения процедуры импорта. После импорта модуль становится объектом в пространстве имен той части программы, где осуществлен импорт. Модуль получает имя или псевдоним, заданные в инструкции импорта, а также набор атрибутов. При этом появляется возможность использования всех приемов, применяемых при работе с модулями + +С помощью текстового редактора оболочки IDLE создайте в своем текущем каталоге файл с именем Mod1.py и запишите в него программу со следующим содержанием: +``` +perm1=input('Mod1:Введите значение = ') +print('Mod1:Значение perm1=',perm1) +``` +Теперь вспомним возможность запуска модуля из командной строки оболочки IDLE. Для этого введем в ней инструкцию: + +При этом управление передается от модуля с именем __main__ (это имя модуля – командной строки) к модулю Mod1, который ищется в файле с именем Mod1.py в рабочем каталоге. Если бы он находился в другом каталоге, то в инструкции импорта пришлось бы указать не только имя файла с модулем, но и его каталог. + +``` +import Mod1 +>> Mod1:Введите значение = 5 +Mod1:Значение perm1= 5 +dir(Mod1) +>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1'] +type(Mod1) +>> +Mod1.perm1 +>> '5' +``` +После повторного импортирования модуля ничего не произошло. + +Для повторного выполнения ранее импортированного модуля следует применить функцию reload из модуля importlib +``` +importlib.reload(Mod1) +>> Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 +>> +Mod1.perm1 +>> '3' +``` +# 2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules. Их можно увидеть по инструкции +``` +print(sorted(sys.modules.keys())) +>> ['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', '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') +>> +print(sorted(sys.modules.keys())) +>> ['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +``` +Функция pop осуществляет удаление модуля из словаря для возможности его последующего использования. +# 2.3. Запуск модуля на выполнение с помощью функции exec(). +Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции + + Объект-модуль при этом не создается! Созданные при выполнении модуля объекты становятся объектами главной программы! + +Следует сделать замечание в пользу того, что в перовм случае наблюдаются сложности с кодировкой, так как чтение в Python производится в одной кодировке, а файл был записан в иной. Поэтому следует явно указывать кодировку. + +``` +exec(open('Mod1.py').read()) +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 + +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 + +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 1 +>> Mod1:Значение perm1= 1 +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 9 +>> Mod1:Значение perm1= 9 + +perm1 +>> '9' +``` +# 2.4. Использование инструкции from … import … +В одном модуле может содержаться несколько программных единиц + +Тогда можно осуществлять импорт модуля не целиком, а только часть содержащихся в нем объектов +## Пример 1 +from Mod1 import perm1 +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 +print(sorted(sys.modules.keys())) +>> ['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +perm1 +>> '5' + +## Пример 2 +С помощью текстового редактора создайте еще один модуль Mod2, содержащий две функции: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + import math + expi=q*math.pi + return math.exp(expi) +``` +Сохраним модуль в текущем каталоге в файле Mod2.py. + +Импортируйте из этого модуля только функцию beta с помощью инструкции: +``` +from Mod1 import perm1 +from Mod2 import beta +g=beta(2) +g +>> 535.4916555247646 +print(sorted(sys.modules.keys())) +>> ['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +alpha() +>> Traceback (most recent call last): + File "", line 1, in + alpha() +NameError: name 'alpha' is not defined +``` +Заметим, что функция alpha не найдена + + +Теперь импортируем функцию alpha из Mod2 инструкцией с указанием псевдонима: +``` +from Mod2 import alpha as al +al() +>> ****ALPHA**** +>> Значение t=5 +>> '5' +``` +Удалим импортированные объекты +``` +del al,beta +``` +Импортируем две функции одной инструкцией и вновь удалим импортированные объекты +``` +from Mod2 import alpha as al, beta as bt +sys.modules.pop('Mod1') +>> +sys.modules.pop('Mod2') +>> +``` +Импортируем всё содержимое модуля +``` +from Mod2 import * +tt=alpha() +>> ****ALPHA**** +>> Значение t=0.12 +tt +>> '0.12' +uu=beta(float(tt)) +uu +>> 1.4578913609506803 +``` +# 3. Создание многомодульных программ +## 3.1. Пример простой многомодульной программы + +С помощью редактора создайте ещё один модуль: +``` +#Модуль 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) +``` +Этот модуль содержит программу, вызывающую на выполнение ранее созданные модули Mod1, Mod2. + +Вызовем данный модуль +``` +import Mod0 +>> Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 +>> perm1= 3 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 +``` +Отобразите в командном окне значения объектов, созданных во время выполнения программы: +``` +Mod0.tt;Mod0.qq;Mod0.Mod1.perm1 +>> '10' +>> 44031505860631.98 +>> '3' +``` +Обратим внимание на доступ к значению объекта perm1: здесь пришлось указывать не только имя модуля Mod0, но и вызываемого модуля Mod1, в котором локализован этот объект. + +## 3.2. Дополнительный пример +Создадим модуль MM1, включив в него (скопировать из текста темы 7) разработанные при выполнении предыдущей темы функции, реализующие усилитель, реальный двигатель, тахогенератор и нелинейное звено типа «зона нечувствительности». Затем создайте модуль ММ2, включив в него инструкции, обеспечивающие ввод параметров задачи, формирование входного сигнала, импорт модуля ММ1 и реализацию модели при расчете выходного сигнала: + +Модуль ММ2: +``` +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) +``` +Модуль ММ1: +``` +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 +``` +Далее создадим модуль ММ0,запускающий на выполнение модуль ММ2 и выводящую полученный выходной сигнал +``` +import MM2 +print('y=',MM2.vyhod) +``` +Запустим модуль ММ0: +``` +import MM0 +>> k1,T,k2,Xm,A,F,N=7,5,2,9,2,0.5,100 +>> y= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.327992097271526, -10.579864814161954, -37.13542021354209, 33.751922812053664, 119.08719463033788, -79.40771369492599, -341.1431068516527, 158.42167861925762, 934.7526961682643, -257.3673839435987, -2501.3394829044555, 232.60386253758892, 6584.067732394343, 551.3073303432211, -17091.023735765313, -4540.941638469293, 43783.01525142554, 19770.165548493114, -110671.74259494596, -71582.46671726667, 275826.55151830014] +``` +## 3.3. Области действия объектов в модулях +В ранее созданных модулях вводятся и используются следующие объекты: +Mod1: perm1 +Mod2: функции alpha, beta; переменные t, expi +Mod0: переменные tt,qq + +Далее проведем следующие эксперименты: +### 3.3.1. вставим в функции alpha обращение к функции beta и, наоборот, из beta – к alpha. +Для этого преобразуем содержимое модулей: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + beta(int(t)) + return t +def beta(q): + import math + expi=q*math.pi + return math.exp(expi) +``` +Выполним запуск программы: +``` +from Mod2 import * +alpha() +>> ****ALPHA**** +>> Значение t=5 +>>153552935.39544657 +>> '5' +``` +Вновь преобразуем модуль Mod2: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + import math + expi=q*math.pi + alpha() + return math.exp(expi) +``` +Снова запустим программу: +``` +beta(6) +>> ****ALPHA**** +>> Значение t=5 +>> 153552935.39544657 +``` +### 3.3.2. Отобразить на экране в модуле Mod0 значения объектов t и expi +### 3.3.3. Попробуйте в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после этого на экране +Изменим модуль Mod0: +``` +#Модуль Mod0 +import Mod1 +print('perm1=',Mod1.perm1) +Mod1.perm1 = str(int(Mod1.perm1)*3) +print('Увеличение perm1 в 3 раза:', Mod1.perm1) +from Mod2 import alpha as al +tt=al() +print('tt=',tt) +from Mod2 import beta +qq=beta(float(tt)) +print('qq=',qq) +``` +Протестируем программу: +``` +import Mod0 +>> perm1= 30 +>> Увеличение perm1 в 3 раза: 90 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 +``` +### 3.3.4. Попробуйте в командной строке (в главном модуле) увеличить в 2 раза значения объектов perm1, tt, qq +``` +import Mod0 +>> perm1= 5 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 + +Mod0.Mod1.perm1=str(int(Mod0.Mod1.perm1)*2) +Mod0.Mod1.perm1 +>> '10' + +Mod0.tt=str(int(Mod0.tt)*2) +Mod0.tt +>> '20' + +Mod0.qq=Mod0.qq*2 +Mod0.qq +>> 88063011721263.95 +``` +# 4. Заверишим сеанс работы со средой IDLE diff --git a/TEMA8/protocol8.py b/TEMA8/protocol8.py new file mode 100644 index 0000000..8c24e05 --- /dev/null +++ b/TEMA8/protocol8.py @@ -0,0 +1,363 @@ +#Тема 8 Лазарев Данил А-01-23 +#1 Запуск интерактивной оболочки IDLE, импорт трёх вспомогательных каталогов +``` +import os,sys,importlib +os.chdir("C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA8") +os.getcwd() +>> 'C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA8' +``` +#2Создание и использование модулей в среде Python +Большие программы делятся на части-модули, записываемые в отдельные файлы. Это делается для удобства отладки, обеспечения возможности коллективной разработки, создания возможности повторного использования программ и по другим соображениям. При этом возникают 2 проблемы: + +- передача управления от одного модуля к другому в процессе выполнения программы; + +- передача данных между модулями. + +Модулем в среде Python называется любая часть программного кода на этом языке, записанная в отдельном файле + +#2.1 Запуск модуля на выполнение путем его импорта. +Cодержимое модуля становится доступным для исполнения после выполнения процедуры импорта. После импорта модуль становится объектом в пространстве имен той части программы, где осуществлен импорт. Модуль получает имя или псевдоним, заданные в инструкции импорта, а также набор атрибутов. При этом появляется возможность использования всех приемов, применяемых при работе с модулями + +С помощью текстового редактора оболочки IDLE создайте в своем текущем каталоге файл с именем Mod1.py и запишите в него программу со следующим содержанием: +``` +perm1=input('Mod1:Введите значение = ') +print('Mod1:Значение perm1=',perm1) +``` +Теперь вспомним возможность запуска модуля из командной строки оболочки IDLE. Для этого введем в ней инструкцию: + +При этом управление передается от модуля с именем __main__ (это имя модуля – командной строки) к модулю Mod1, который ищется в файле с именем Mod1.py в рабочем каталоге. Если бы он находился в другом каталоге, то в инструкции импорта пришлось бы указать не только имя файла с модулем, но и его каталог. + +``` +import Mod1 +>> Mod1:Введите значение = 5 +Mod1:Значение perm1= 5 +dir(Mod1) +>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1'] +type(Mod1) +>> +``` +Mod1.perm1 +>> '5' +``` +После повторного импортирования модуля ничего не произошло. + +Для повторного выполнения ранее импортированного модуля следует применить функцию reload из модуля importlib +``` +importlib.reload(Mod1) +>> Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 +>> +Mod1.perm1 +>> '3' +``` +#2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules. Их можно увидеть по инструкции +``` +print(sorted(sys.modules.keys())) +>> ['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', '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') +>> +print(sorted(sys.modules.keys())) +>> ['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +``` +Функция pop осуществляет удаление модуля из словаря для возможности его последующего использования. +#2.3. Запуск модуля на выполнение с помощью функции exec(). +Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции + + Объект-модуль при этом не создается! Созданные при выполнении модуля объекты становятся объектами главной программы! + +Следует сделать замечание в пользу того, что в перовм случае наблюдаются сложности с кодировкой, так как чтение в Python производится в одной кодировке, а файл был записан в иной. Поэтому следует явно указывать кодировку. + +``` +exec(open('Mod1.py').read()) +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 + +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 + +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 1 +>> Mod1:Значение perm1= 1 +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 9 +>> Mod1:Значение perm1= 9 + +perm1 +>> '9' +``` +#2.4. Использование инструкции from … import … +В одном модуле может содержаться несколько программных единиц + +Тогда можно осуществлять импорт модуля не целиком, а только часть содержащихся в нем объектов +## Пример 1 +from Mod1 import perm1 +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 +print(sorted(sys.modules.keys())) +>> ['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +perm1 +>> '5' + +## Пример 2 +С помощью текстового редактора создайте еще один модуль Mod2, содержащий две функции: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + import math + expi=q*math.pi + return math.exp(expi) +``` +Сохраним модуль в текущем каталоге в файле Mod2.py. + +Импортируйте из этого модуля только функцию beta с помощью инструкции: +``` +from Mod1 import perm1 +from Mod2 import beta +g=beta(2) +g +>> 535.4916555247646 +print(sorted(sys.modules.keys())) +>> ['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +alpha() +>> Traceback (most recent call last): + File "", line 1, in + alpha() +NameError: name 'alpha' is not defined +``` +Заметим, что функция alpha не найдена + + +Теперь импортируем функцию alpha из Mod2 инструкцией с указанием псевдонима: +``` +from Mod2 import alpha as al +al() +>> ****ALPHA**** +>> Значение t=5 +>> '5' +``` +Удалим импортированные объекты +``` +del al,beta +``` +Импортируем две функции одной инструкцией и вновь удалим импортированные объекты +``` +from Mod2 import alpha as al, beta as bt +sys.modules.pop('Mod1') +>> +sys.modules.pop('Mod2') +>> +``` +Импортируем всё содержимое модуля +``` +from Mod2 import * +tt=alpha() +>> ****ALPHA**** +>> Значение t=0.12 +tt +>> '0.12' +uu=beta(float(tt)) +uu +>> 1.4578913609506803 + +#3. Создание многомодульных программ +#3.1. Пример простой многомодульной программы + +С помощью редактора создайте ещё один модуль: +``` +#Модуль 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) +``` +Этот модуль содержит программу, вызывающую на выполнение ранее созданные модули Mod1, Mod2. + +Вызовем данный модуль +``` +import Mod0 +>> Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 +>> perm1= 3 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 +``` +Отобразите в командном окне значения объектов, созданных во время выполнения программы: +``` +Mod0.tt;Mod0.qq;Mod0.Mod1.perm1 +>> '10' +>> 44031505860631.98 +>> '3' +Обратим внимание на доступ к значению объекта perm1: здесь пришлось указывать не только имя модуля Mod0, но и вызываемого модуля Mod1, в котором локализован этот объект. + +#3.2. Дополнительный пример +Создадим модуль MM1, включив в него (скопировать из текста темы 7) разработанные при выполнении предыдущей темы функции, реализующие усилитель, реальный двигатель, тахогенератор и нелинейное звено типа «зона нечувствительности». Затем создайте модуль ММ2, включив в него инструкции, обеспечивающие ввод параметров задачи, формирование входного сигнала, импорт модуля ММ1 и реализацию модели при расчете выходного сигнала: + +Модуль ММ2: +``` +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) +``` +Модуль ММ1: +``` +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 +``` +Далее создадим модуль ММ0,запускающий на выполнение модуль ММ2 и выводящую полученный выходной сигнал +``` +import MM2 +print('y=',MM2.vyhod) +``` +Запустим модуль ММ0: +``` +import MM0 +>> k1,T,k2,Xm,A,F,N=7,5,2,9,2,0.5,100 +>> y= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.327992097271526, -10.579864814161954, -37.13542021354209, 33.751922812053664, 119.08719463033788, -79.40771369492599, -341.1431068516527, 158.42167861925762, 934.7526961682643, -257.3673839435987, -2501.3394829044555, 232.60386253758892, 6584.067732394343, 551.3073303432211, -17091.023735765313, -4540.941638469293, 43783.01525142554, 19770.165548493114, -110671.74259494596, -71582.46671726667, 275826.55151830014] +``` +## 3.3. Области действия объектов в модулях +В ранее созданных модулях вводятся и используются следующие объекты: +Mod1: perm1 +Mod2: функции alpha, beta; переменные t, expi +Mod0: переменные tt,qq + +Далее проведем следующие эксперименты: +### 3.3.1. вставим в функции alpha обращение к функции beta и, наоборот, из beta – к alpha. +Для этого преобразуем содержимое модулей: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + beta(int(t)) + return t +def beta(q): + import math + expi=q*math.pi + return math.exp(expi) +``` +Выполним запуск программы: +``` +from Mod2 import * +alpha() +>> ****ALPHA**** +>> Значение t=5 +>>153552935.39544657 +>> '5' +``` +Вновь преобразуем модуль Mod2: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + import math + expi=q*math.pi + alpha() + return math.exp(expi) +``` +Снова запустим программу: +``` +beta(6) +>> ****ALPHA**** +>> Значение t=5 +>> 153552935.39544657 +``` +### 3.3.2. Отобразить на экране в модуле Mod0 значения объектов t и expi +### 3.3.3. Попробуйте в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после этого на экране +Изменим модуль Mod0: +``` +#Модуль Mod0 +import Mod1 +print('perm1=',Mod1.perm1) +Mod1.perm1 = str(int(Mod1.perm1)*3) +print('Увеличение perm1 в 3 раза:', Mod1.perm1) +from Mod2 import alpha as al +tt=al() +print('tt=',tt) +from Mod2 import beta +qq=beta(float(tt)) +print('qq=',qq) +``` +Протестируем программу: +``` +import Mod0 +>> perm1= 30 +>> Увеличение perm1 в 3 раза: 90 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 +``` +### 3.3.4. Попробуйте в командной строке (в главном модуле) увеличить в 2 раза значения объектов perm1, tt, qq +``` +import Mod0 +>> perm1= 5 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 + +Mod0.Mod1.perm1=str(int(Mod0.Mod1.perm1)*2) +Mod0.Mod1.perm1 +>> '10' + +Mod0.tt=str(int(Mod0.tt)*2) +Mod0.tt +>> '20' + +Mod0.qq=Mod0.qq*2 +Mod0.qq +>> 88063011721263.95 +``` +# 4. Заверишим сеанс работы со средой IDLE diff --git a/TEMA8/protocol8.txt b/TEMA8/protocol8.txt new file mode 100644 index 0000000..8c24e05 --- /dev/null +++ b/TEMA8/protocol8.txt @@ -0,0 +1,363 @@ +#Тема 8 Лазарев Данил А-01-23 +#1 Запуск интерактивной оболочки IDLE, импорт трёх вспомогательных каталогов +``` +import os,sys,importlib +os.chdir("C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA8") +os.getcwd() +>> 'C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA8' +``` +#2Создание и использование модулей в среде Python +Большие программы делятся на части-модули, записываемые в отдельные файлы. Это делается для удобства отладки, обеспечения возможности коллективной разработки, создания возможности повторного использования программ и по другим соображениям. При этом возникают 2 проблемы: + +- передача управления от одного модуля к другому в процессе выполнения программы; + +- передача данных между модулями. + +Модулем в среде Python называется любая часть программного кода на этом языке, записанная в отдельном файле + +#2.1 Запуск модуля на выполнение путем его импорта. +Cодержимое модуля становится доступным для исполнения после выполнения процедуры импорта. После импорта модуль становится объектом в пространстве имен той части программы, где осуществлен импорт. Модуль получает имя или псевдоним, заданные в инструкции импорта, а также набор атрибутов. При этом появляется возможность использования всех приемов, применяемых при работе с модулями + +С помощью текстового редактора оболочки IDLE создайте в своем текущем каталоге файл с именем Mod1.py и запишите в него программу со следующим содержанием: +``` +perm1=input('Mod1:Введите значение = ') +print('Mod1:Значение perm1=',perm1) +``` +Теперь вспомним возможность запуска модуля из командной строки оболочки IDLE. Для этого введем в ней инструкцию: + +При этом управление передается от модуля с именем __main__ (это имя модуля – командной строки) к модулю Mod1, который ищется в файле с именем Mod1.py в рабочем каталоге. Если бы он находился в другом каталоге, то в инструкции импорта пришлось бы указать не только имя файла с модулем, но и его каталог. + +``` +import Mod1 +>> Mod1:Введите значение = 5 +Mod1:Значение perm1= 5 +dir(Mod1) +>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1'] +type(Mod1) +>> +``` +Mod1.perm1 +>> '5' +``` +После повторного импортирования модуля ничего не произошло. + +Для повторного выполнения ранее импортированного модуля следует применить функцию reload из модуля importlib +``` +importlib.reload(Mod1) +>> Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 +>> +Mod1.perm1 +>> '3' +``` +#2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules. Их можно увидеть по инструкции +``` +print(sorted(sys.modules.keys())) +>> ['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', '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') +>> +print(sorted(sys.modules.keys())) +>> ['__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +``` +Функция pop осуществляет удаление модуля из словаря для возможности его последующего использования. +#2.3. Запуск модуля на выполнение с помощью функции exec(). +Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции + + Объект-модуль при этом не создается! Созданные при выполнении модуля объекты становятся объектами главной программы! + +Следует сделать замечание в пользу того, что в перовм случае наблюдаются сложности с кодировкой, так как чтение в Python производится в одной кодировке, а файл был записан в иной. Поэтому следует явно указывать кодировку. + +``` +exec(open('Mod1.py').read()) +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 + +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 + +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 1 +>> Mod1:Значение perm1= 1 +exec(open('Mod1.py', encoding='utf-8').read()) +>> Mod1:Введите значение = 9 +>> Mod1:Значение perm1= 9 + +perm1 +>> '9' +``` +#2.4. Использование инструкции from … import … +В одном модуле может содержаться несколько программных единиц + +Тогда можно осуществлять импорт модуля не целиком, а только часть содержащихся в нем объектов +## Пример 1 +from Mod1 import perm1 +>> Mod1:Введите значение = 5 +>> Mod1:Значение perm1= 5 +print(sorted(sys.modules.keys())) +>> ['Mod1', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +perm1 +>> '5' + +## Пример 2 +С помощью текстового редактора создайте еще один модуль Mod2, содержащий две функции: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + import math + expi=q*math.pi + return math.exp(expi) +``` +Сохраним модуль в текущем каталоге в файле Mod2.py. + +Импортируйте из этого модуля только функцию beta с помощью инструкции: +``` +from Mod1 import perm1 +from Mod2 import beta +g=beta(2) +g +>> 535.4916555247646 +print(sorted(sys.modules.keys())) +>> ['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_bisect', '_bz2', '_codecs', '_collections', '_collections_abc', '_colorize', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_lzma', '_opcode', '_opcode_metadata', '_operator', '_pickle', '_pyrepl', '_pyrepl.pager', '_queue', '_random', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_suggestions', '_sysconfig', '_thread', '_tkinter', '_tokenize', '_typing', '_warnings', '_weakref', '_weakrefset', '_winapi', '_wmi', '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', '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', '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', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib'] +alpha() +>> Traceback (most recent call last): + File "", line 1, in + alpha() +NameError: name 'alpha' is not defined +``` +Заметим, что функция alpha не найдена + + +Теперь импортируем функцию alpha из Mod2 инструкцией с указанием псевдонима: +``` +from Mod2 import alpha as al +al() +>> ****ALPHA**** +>> Значение t=5 +>> '5' +``` +Удалим импортированные объекты +``` +del al,beta +``` +Импортируем две функции одной инструкцией и вновь удалим импортированные объекты +``` +from Mod2 import alpha as al, beta as bt +sys.modules.pop('Mod1') +>> +sys.modules.pop('Mod2') +>> +``` +Импортируем всё содержимое модуля +``` +from Mod2 import * +tt=alpha() +>> ****ALPHA**** +>> Значение t=0.12 +tt +>> '0.12' +uu=beta(float(tt)) +uu +>> 1.4578913609506803 + +#3. Создание многомодульных программ +#3.1. Пример простой многомодульной программы + +С помощью редактора создайте ещё один модуль: +``` +#Модуль 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) +``` +Этот модуль содержит программу, вызывающую на выполнение ранее созданные модули Mod1, Mod2. + +Вызовем данный модуль +``` +import Mod0 +>> Mod1:Введите значение = 3 +Mod1:Значение perm1= 3 +>> perm1= 3 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 +``` +Отобразите в командном окне значения объектов, созданных во время выполнения программы: +``` +Mod0.tt;Mod0.qq;Mod0.Mod1.perm1 +>> '10' +>> 44031505860631.98 +>> '3' +Обратим внимание на доступ к значению объекта perm1: здесь пришлось указывать не только имя модуля Mod0, но и вызываемого модуля Mod1, в котором локализован этот объект. + +#3.2. Дополнительный пример +Создадим модуль MM1, включив в него (скопировать из текста темы 7) разработанные при выполнении предыдущей темы функции, реализующие усилитель, реальный двигатель, тахогенератор и нелинейное звено типа «зона нечувствительности». Затем создайте модуль ММ2, включив в него инструкции, обеспечивающие ввод параметров задачи, формирование входного сигнала, импорт модуля ММ1 и реализацию модели при расчете выходного сигнала: + +Модуль ММ2: +``` +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) +``` +Модуль ММ1: +``` +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 +``` +Далее создадим модуль ММ0,запускающий на выполнение модуль ММ2 и выводящую полученный выходной сигнал +``` +import MM2 +print('y=',MM2.vyhod) +``` +Запустим модуль ММ0: +``` +import MM0 +>> k1,T,k2,Xm,A,F,N=7,5,2,9,2,0.5,100 +>> y= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.327992097271526, -10.579864814161954, -37.13542021354209, 33.751922812053664, 119.08719463033788, -79.40771369492599, -341.1431068516527, 158.42167861925762, 934.7526961682643, -257.3673839435987, -2501.3394829044555, 232.60386253758892, 6584.067732394343, 551.3073303432211, -17091.023735765313, -4540.941638469293, 43783.01525142554, 19770.165548493114, -110671.74259494596, -71582.46671726667, 275826.55151830014] +``` +## 3.3. Области действия объектов в модулях +В ранее созданных модулях вводятся и используются следующие объекты: +Mod1: perm1 +Mod2: функции alpha, beta; переменные t, expi +Mod0: переменные tt,qq + +Далее проведем следующие эксперименты: +### 3.3.1. вставим в функции alpha обращение к функции beta и, наоборот, из beta – к alpha. +Для этого преобразуем содержимое модулей: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + beta(int(t)) + return t +def beta(q): + import math + expi=q*math.pi + return math.exp(expi) +``` +Выполним запуск программы: +``` +from Mod2 import * +alpha() +>> ****ALPHA**** +>> Значение t=5 +>>153552935.39544657 +>> '5' +``` +Вновь преобразуем модуль Mod2: +``` +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + import math + expi=q*math.pi + alpha() + return math.exp(expi) +``` +Снова запустим программу: +``` +beta(6) +>> ****ALPHA**** +>> Значение t=5 +>> 153552935.39544657 +``` +### 3.3.2. Отобразить на экране в модуле Mod0 значения объектов t и expi +### 3.3.3. Попробуйте в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после этого на экране +Изменим модуль Mod0: +``` +#Модуль Mod0 +import Mod1 +print('perm1=',Mod1.perm1) +Mod1.perm1 = str(int(Mod1.perm1)*3) +print('Увеличение perm1 в 3 раза:', Mod1.perm1) +from Mod2 import alpha as al +tt=al() +print('tt=',tt) +from Mod2 import beta +qq=beta(float(tt)) +print('qq=',qq) +``` +Протестируем программу: +``` +import Mod0 +>> perm1= 30 +>> Увеличение perm1 в 3 раза: 90 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 +``` +### 3.3.4. Попробуйте в командной строке (в главном модуле) увеличить в 2 раза значения объектов perm1, tt, qq +``` +import Mod0 +>> perm1= 5 +>> ****ALPHA**** +>> Значение t=10 +>> tt= 10 +>> qq= 44031505860631.98 + +Mod0.Mod1.perm1=str(int(Mod0.Mod1.perm1)*2) +Mod0.Mod1.perm1 +>> '10' + +Mod0.tt=str(int(Mod0.tt)*2) +Mod0.tt +>> '20' + +Mod0.qq=Mod0.qq*2 +Mod0.qq +>> 88063011721263.95 +``` +# 4. Заверишим сеанс работы со средой IDLE diff --git a/TEMA8/rand1.txt b/TEMA8/rand1.txt new file mode 100644 index 0000000..928a302 --- /dev/null +++ b/TEMA8/rand1.txt @@ -0,0 +1 @@ +24.38 24.5 24.21 24.35 24.41 24.57 24.35 24.56 24.64 24.58 24.36 24.65 24.84 24.49 24.46 24.46 24.57 24.45 24.43 24.41 24.56 24.42 24.51 24.33 24.32 24.7 24.21 24.47 24.48 24.37 24.48 24.69 24.31 24.55 24.35 24.48 24.45 24.38 24.45 24.49 24.6 24.56 24.45 24.77 24.46 24.35 24.51 24.35 24.51 24.56 24.17 24.56 24.56 24.67 24.45 24.41 24.54 24.32 24.45 24.38 24.42 24.51 24.45 24.43 24.53 24.31 24.47 24.57 24.22 24.58 24.62 24.29 24.38 24.66 24.57 24.58 24.38 24.78 24.44 24.58 24.57 24.43 24.52 24.44 24.32 24.72 24.48 24.41 24.63 24.51 24.53 24.34 24.55 24.25 24.26 24.63 24.54 24.49 24.57 24.52 24.58 24.36 24.59 24.59 24.49 24.59 24.54 24.58 24.37 24.52 24.5 24.47 24.12 24.27 24.25 24.69 24.39 24.37 24.61 24.56 24.41 24.74 24.67 24.61 24.45 24.34 24.55 24.54 24.56 24.62 24.74 24.45 24.49 24.16 24.65 24.65 24.47 24.43 24.19 24.62 24.6 24.33 24.59 24.36 24.57 24.34 24.49 24.4 24.45 24.49 24.3 24.68 24.44 24.58 24.38 24.39 24.41 24.43 24.42 24.62 24.35 24.22 24.47 24.54 24.33 24.4 24.44 24.64 24.45 24.27 24.4 24.41 24.61 24.47 24.76 24.6 24.36 24.58 24.54 24.59 24.77 24.81 24.71 24.7 24.44 24.55 24.59 24.52 24.44 24.65 24.55 24.51 24.61 24.5 24.56 24.4 24.69 24.66 24.13 24.5 24.58 24.67 24.46 24.68 24.57 24.24 24.56 24.56 24.33 24.53 24.62 24.27 24.29 24.45 24.54 24.53 24.42 24.4 24.52 24.45 24.48 24.45 24.55 24.44 24.49 24.39 24.52 24.69 24.75 24.69 24.55 24.27 24.77 24.7 24.49 24.65 24.35 24.61 24.61 24.61 24.7 24.33 24.47 24.36 24.53 24.34 24.45 24.41 24.48 24.4 24.76 24.09 24.43 24.56 24.31 24.48 24.46 24.57 24.26 24.64 24.43 24.62 24.51 24.44 24.62 24.45 24.42 24.44 24.45 24.53 24.34 24.46 24.65 24.35 24.37 24.34 24.5 24.47 24.26 24.57 24.48 24.7 24.54 24.61 24.36 24.57 24.47 24.41 24.41 24.36 24.46 24.58 24.64 24.53 24.37 24.54 24.61 24.62 24.22 24.54 24.39 24.62 24.91 24.72 24.56 24.48 24.3 24.55 24.63 24.55 24.45 24.63 24.3 24.2 24.68 24.38 24.5 24.21 24.49 24.41 24.67 24.62 24.51 24.58 24.56 24.24 24.55 24.23 24.62 24.64 24.53 24.75 24.53 24.42 24.69 24.28 24.43 24.27 24.48 24.66 24.38 24.66 24.47 24.25 24.49 24.52 24.58 24.54 24.47 24.76 24.55 24.44 24.55 24.37 24.61 24.54 24.58 24.43 24.3 24.58 24.5 24.4 24.65 24.46 24.25 24.44 24.53 24.61 24.54 24.51 24.37 24.43 24.3 24.66 24.19 24.33 24.58 24.73 24.52 24.31 24.34 24.56 24.29 24.46 24.73 24.55 24.46 24.29 24.36 24.38 24.52 24.58 24.57 24.54 24.58 24.41 24.45 24.31 24.55 24.39 24.68 24.58 24.43 24.68 24.39 24.25 24.39 24.32 24.48 24.69 24.45 24.33 24.49 24.48 24.34 24.44 24.43 24.38 24.39 24.55 24.53 24.46 24.38 24.36 24.45 24.57 24.55 24.75 24.48 24.43 24.48 24.52 24.42 24.53 24.33 24.59 24.38 24.61 24.53 24.36 24.41 24.33 24.24 24.41 24.23 24.58 24.44 24.51 24.41 24.4 24.46 24.39 24.54 24.39 24.55 24.67 24.55 24.53 24.45 24.53 24.45 24.29 24.44 24.36 24.69 24.61 24.36 24.64 24.39 24.61 24.61 24.59 24.45 24.59 24.56 24.64 24.54 24.45 24.46 24.65 24.25 24.63 24.47 24.45 24.46 24.34 24.56 24.31 24.39 24.33 24.64 24.49 24.42 24.65 24.38 24.29 24.34 24.41 24.3 24.08 24.49 24.35 24.49 24.37 24.44 24.52 24.41 24.65 24.4 24.73 24.27 24.37 24.7 24.52 24.51 24.21 24.4 24.41 24.74 24.7 24.39 24.46 24.46 24.68 24.53 24.5 24.36 24.61 24.55 24.51 24.7 24.5 24.61 24.18 24.81 24.32 24.51 24.15 24.47 24.7 24.46 24.48 24.27 24.54 24.45 24.54 24.23 24.55 24.58 24.4 24.25 24.48 24.52 24.6 24.29 24.6 24.47 24.55 24.54 24.65 24.63 24.53 24.62 24.67 24.4 24.47 24.33 24.54 24.26 24.53 24.51 24.37 24.4 24.3 24.48 24.49 24.31 24.62 24.32 24.31 24.34 24.87 24.53 24.54 24.43 24.41 24.2 24.63 24.55 24.59 24.56 24.7 24.5 24.41 24.44 24.61 24.4 24.45 24.66 24.52 24.56 24.49 24.63 24.43 24.65 24.41 24.35 24.21 24.42 24.63 24.73 24.29 24.33 24.51 24.68 24.44 24.38 24.65 24.29 24.69 24.31 24.48 24.54 24.65 24.53 24.4 24.45 24.42 24.57 24.41 24.32 24.61 24.69 24.39 24.53 24.15 24.51 24.48 24.22 24.44 24.47 24.45 24.29 24.38 24.42 24.47 24.44 24.51 24.56 24.33 24.51 24.31 24.39 24.61 24.6 24.45 24.54 24.7 24.47 24.33 24.35 24.73 24.37 24.39 24.72 24.45 24.5 24.58 24.34 24.39 24.43 24.35 24.54 24.72 24.45 24.47 24.65 24.49 24.34 24.26 24.66 24.56 24.45 24.48 24.46 24.55 24.35 24.58 24.38 24.35 24.56 24.39 24.28 24.54 24.46 24.72 24.54 24.86 24.57 24.51 24.36 24.18 24.7 24.44 24.15 24.4 24.38 24.56 24.5 24.81 24.52 24.48 24.64 24.52 24.22 24.47 24.34 24.65 24.52 24.47 24.32 24.56 24.52 24.27 24.7 24.45 24.18 24.41 24.51 24.42 24.58 24.58 24.28 24.45 24.31 24.6 24.67 24.53 24.64 24.41 24.51 24.64 24.8 24.59 24.32 24.34 24.33 24.65 24.66 24.35 24.65 24.27 24.73 24.36 24.74 24.51 24.51 24.56 24.47 24.58 24.37 24.46 24.58 24.45 24.35 24.52 24.28 24.52 24.34 24.58 24.46 24.36 24.47 24.42 24.54 24.41 24.42 24.08 24.38 24.45 24.4 24.57 24.45 24.42 24.43 24.3 24.61 24.55 24.68 24.54 24.51 24.3 24.43 24.57 24.54 24.45 24.46 24.37 24.61 24.49 24.43 24.51 24.42 24.57 24.71 24.46 24.09 24.56 24.38 24.37 24.49 24.61 24.51 24.34 24.48 24.56 24.51 24.3 24.43 24.34 24.54 24.52 24.48 24.41 24.36 24.48 24.51 24.53 24.22 24.45 24.47 24.29 24.41 24.48 24.34 24.41 24.34 24.4 24.41 24.44 24.52 24.59 24.61 24.64 24.61 24.45 24.62 24.41 24.59 24.42 24.36 24.73 24.6 24.34 24.41 24.34 24.41 24.46 24.48 24.53 24.61 24.61 24.43 24.69 24.57 24.37 24.46 24.37 24.51 24.57 24.34 24.55 24.58 24.45 24.45 24.48 24.42 24.44 24.66 24.38 24.52 24.71 24.53 24.6 24.77 24.25 24.33 24.15 24.55 24.77 24.46 24.5 24.37 24.19 24.61 24.6 24.55 24.34 24.25 24.36 24.57 24.51 24.47 24.42 24.67 24.67 24.48 24.49 24.6 24.2 24.61 24.41 24.46 24.53 24.41 24.51 24.55 24.68 24.48 24.47 24.28 24.3 24.54 24.37 24.67 24.71 24.44 24.48 24.39 24.27 24.36 24.61 24.45 24.42 24.16 24.52 24.34 24.84 24.53 24.32 24.51 24.46 24.62 24.17 24.45 24.45 24.79 24.43 24.51 24.34 24.56 24.5 24.42 24.38 24.28 24.35 24.44 24.24 24.58 24.57 24.54 24.36 24.44 24.65 24.66 24.59 24.42 24.49 24.66 24.31 24.5 24.32 24.29 24.54 24.49 24.43 24.38 24.67 24.47 24.44 24.32 24.36 24.46 24.54 24.37 24.5 24.22 24.62 24.37 24.72 24.63 24.48 24.4 24.52 24.48 24.39 24.58 24.51 24.35 24.51 \ No newline at end of file diff --git a/TEMA8/rand2.txt b/TEMA8/rand2.txt new file mode 100644 index 0000000..27be7ed --- /dev/null +++ b/TEMA8/rand2.txt @@ -0,0 +1 @@ +20.22 20.38 20.11 19.99 20.11 19.87 20.26 20.14 20.0 20.35 19.7 19.45 19.8 20.17 19.98 19.84 20.37 20.12 20.1 20.24 19.97 20.2 19.97 19.77 20.03 20.05 19.92 20.07 20.02 19.8 20.27 20.32 19.84 19.85 20.44 20.11 19.8 19.76 20.23 20.09 20.0 19.87 19.93 19.99 20.3 20.07 19.77 20.06 20.03 20.19 20.27 20.57 19.91 20.06 20.15 19.98 19.73 20.34 20.17 20.11 20.23 20.22 19.67 20.26 19.98 20.08 20.09 20.02 19.9 20.12 20.71 20.17 20.14 20.36 19.86 20.35 20.0 19.86 20.18 19.96 19.69 19.67 19.68 20.07 19.97 20.02 20.2 19.79 20.05 19.85 20.04 19.76 20.42 19.79 20.22 19.85 19.91 19.9 19.99 20.02 20.04 20.19 20.23 19.99 19.95 19.95 19.93 19.91 20.03 20.23 19.82 19.84 19.79 20.13 20.12 20.24 20.1 20.03 20.2 20.01 20.24 20.11 20.18 20.18 20.4 19.91 20.01 19.97 20.02 20.16 19.96 19.96 20.15 20.14 20.03 20.0 19.94 19.83 19.71 19.95 20.1 19.99 19.88 20.37 19.93 19.94 20.32 19.95 20.07 20.07 19.85 19.89 20.02 20.21 19.86 19.7 20.21 20.44 19.89 19.99 20.04 20.17 20.03 20.31 20.1 20.19 19.65 19.83 19.69 20.11 20.17 20.43 19.87 19.81 19.99 20.3 20.32 19.92 20.02 20.47 20.05 19.81 19.99 20.44 20.07 20.07 20.04 20.03 19.97 19.98 20.04 20.18 20.23 19.98 20.42 20.29 19.89 19.9 20.09 20.03 20.63 19.93 20.25 20.08 19.86 20.06 19.91 20.12 20.3 19.87 19.86 20.53 20.09 20.16 19.99 19.84 19.97 19.76 19.7 20.02 20.21 19.7 19.9 20.04 20.25 19.99 20.14 20.03 20.16 19.89 19.99 20.0 19.89 20.4 20.16 20.03 20.42 20.27 20.14 19.87 20.23 19.98 20.1 19.83 20.01 20.09 19.68 19.92 20.18 20.17 20.04 19.97 20.03 20.24 20.01 20.2 19.92 20.29 20.23 19.92 19.91 19.98 20.52 19.7 19.93 20.24 20.02 20.44 20.03 20.11 20.17 20.23 19.88 19.99 19.68 19.74 20.03 19.83 19.78 20.19 20.1 19.79 20.04 20.68 19.84 20.12 19.83 20.09 19.85 20.26 20.06 19.92 20.23 20.36 20.35 20.3 19.96 19.74 19.99 19.82 20.1 20.4 20.11 19.84 20.08 19.76 19.79 20.43 20.2 19.96 20.04 20.09 20.01 19.88 20.15 20.03 20.12 19.84 19.85 20.14 20.14 20.15 20.0 19.76 19.91 20.08 20.13 19.88 20.02 19.98 20.29 19.75 20.18 19.95 20.32 19.84 19.87 20.36 20.19 19.93 19.84 20.35 19.72 20.06 20.34 19.9 19.96 19.85 19.79 19.94 19.89 19.71 20.09 20.24 20.16 19.96 20.03 20.05 20.07 20.09 20.06 19.74 20.17 19.82 19.88 20.18 20.02 20.02 20.35 20.14 20.09 20.35 20.08 19.66 20.25 20.25 20.18 19.9 19.84 20.27 20.2 19.95 19.9 19.69 19.75 20.12 19.94 19.77 20.17 20.2 20.05 19.8 19.95 19.89 20.1 20.06 20.1 19.91 20.04 20.3 20.07 20.35 19.96 19.96 20.11 20.12 19.97 20.04 20.17 20.07 19.72 20.25 20.0 20.18 19.85 19.69 20.2 20.06 19.86 20.07 20.0 20.08 20.01 20.0 19.84 20.03 20.04 20.38 20.11 19.79 19.8 20.43 20.13 19.91 20.04 20.15 20.56 19.93 20.19 20.06 19.98 20.23 19.76 19.92 20.09 20.18 20.14 20.2 19.97 20.22 20.05 20.29 20.12 20.14 20.03 19.7 19.9 20.15 19.75 19.61 20.15 19.85 19.82 20.07 20.06 20.13 20.08 19.9 20.1 19.8 20.12 20.05 20.06 20.07 19.91 20.14 20.02 19.83 20.16 20.09 20.31 19.68 20.29 19.89 19.95 19.89 19.76 20.15 20.02 20.08 20.03 19.88 20.11 19.96 19.8 20.19 19.86 19.82 20.2 19.8 20.32 20.39 20.01 19.78 19.91 20.2 19.91 19.92 20.07 20.1 20.06 20.13 20.02 19.82 19.5 20.18 20.13 20.25 20.01 19.78 19.92 19.83 20.34 20.09 20.05 20.03 19.93 19.94 20.07 20.02 19.94 20.21 19.78 19.97 19.84 19.98 20.12 19.98 20.09 19.82 20.1 20.07 20.09 19.73 20.22 20.19 20.21 20.31 20.21 20.03 19.95 20.36 20.33 20.23 20.35 20.03 19.97 19.8 19.8 20.13 20.13 19.86 20.12 19.99 20.12 20.08 19.62 20.12 19.74 20.09 19.98 20.26 19.67 20.01 19.95 20.01 20.32 20.2 20.04 20.29 20.48 19.97 20.28 20.06 19.93 19.98 19.87 19.95 20.31 19.75 19.82 20.32 20.25 19.94 20.01 20.15 19.78 20.2 20.34 19.93 20.26 19.9 20.33 19.88 19.98 20.01 20.01 20.12 19.91 20.24 20.22 20.08 20.25 19.9 20.07 19.95 19.83 20.22 20.04 19.77 19.85 20.22 19.89 20.08 19.88 19.93 19.77 19.99 19.96 19.68 20.06 19.95 20.2 20.17 20.05 19.91 20.15 20.14 20.13 20.06 20.3 20.24 20.05 19.79 20.17 20.42 19.73 19.74 19.67 19.83 19.95 20.02 20.45 20.06 19.96 20.25 19.8 19.98 20.08 20.12 19.92 20.04 20.11 20.29 20.18 20.11 20.32 20.21 19.77 20.05 19.94 20.33 20.09 20.19 20.22 19.85 19.97 19.99 20.36 20.16 19.88 19.85 19.83 20.07 20.63 20.24 19.8 20.52 19.94 20.01 19.76 20.09 20.33 20.11 20.15 20.04 20.06 20.07 19.89 19.94 20.0 20.09 19.95 19.95 19.87 20.18 20.31 20.12 20.33 19.87 20.23 19.99 19.79 20.0 20.21 20.13 20.07 20.25 20.48 20.26 19.9 19.89 19.83 20.08 20.04 20.18 20.04 20.26 20.07 20.12 20.21 20.08 19.61 19.94 20.16 19.98 20.23 19.96 20.01 19.54 19.92 20.08 19.98 20.41 19.97 19.95 20.12 19.83 20.07 19.89 20.21 20.25 20.06 19.94 19.91 20.12 19.91 19.76 20.19 20.21 19.94 20.24 19.87 19.88 20.02 19.95 19.83 20.21 20.31 20.14 19.95 20.27 19.99 20.19 20.26 20.09 19.76 19.74 20.14 19.87 20.14 19.7 19.98 19.99 20.1 19.94 19.86 19.96 20.23 19.97 20.16 19.96 20.07 20.2 19.95 20.24 19.73 19.6 20.15 20.1 19.81 20.15 19.75 19.79 20.22 19.67 20.12 19.79 19.86 20.13 20.08 20.17 20.09 20.13 19.91 20.29 20.54 20.06 19.98 19.84 19.92 20.08 20.03 20.29 20.28 19.65 20.29 20.1 20.16 19.76 20.08 20.09 20.11 19.93 19.96 20.15 20.3 19.91 20.21 20.05 19.89 19.92 20.23 20.07 19.92 20.19 19.87 20.1 20.34 19.92 20.07 19.79 19.92 19.91 19.99 20.32 20.4 20.0 19.87 19.88 20.04 20.32 19.79 19.75 19.81 19.89 19.84 20.19 19.86 20.01 20.28 20.13 20.15 19.95 20.02 20.2 19.84 19.9 20.14 20.12 19.98 20.36 19.81 19.81 20.14 20.13 20.06 20.35 19.88 19.84 20.05 19.93 20.12 20.0 20.21 19.91 20.23 19.73 19.89 19.87 20.28 20.26 19.89 20.1 19.86 19.97 20.13 20.39 20.09 20.47 20.28 20.15 19.71 19.95 19.91 19.96 20.02 20.18 20.17 20.31 20.25 19.87 20.2 19.92 20.16 20.22 20.08 20.01 20.18 20.45 20.24 20.14 19.96 20.19 19.63 19.95 19.99 20.16 20.15 19.92 19.95 20.23 20.32 20.34 19.73 19.65 20.24 20.08 19.78 19.73 19.7 19.93 20.1 19.54 20.08 20.14 19.95 20.2 20.1 19.97 20.07 20.09 20.32 20.14 19.93 20.16 20.47 20.09 19.96 19.59 20.12 19.96 20.2 19.83 19.99 19.94 19.78 20.16 19.96 20.33 20.45 20.3 19.63 20.43 20.13 19.93 19.88 19.86 19.86 19.97 19.87 20.1 20.3 20.06 19.87 19.85 19.93 20.04 20.08 20.03 \ No newline at end of file diff --git a/TEMA8/task8.md b/TEMA8/task8.md new file mode 100644 index 0000000..1ecb78b --- /dev/null +++ b/TEMA8/task8.md @@ -0,0 +1,100 @@ +# 8 + , -01-23 +## + , : + +- 1 ( ). . . . + +- 2 ( ). . . + +- 3 , 1 . 2 . + + . + +## +1: +``` +def f(filename): + numbers = [] + file = open(filename, 'r') + for i in file: + line_numbers = i.strip().split() + for j in line_numbers: + numbers.append(float(j)) + file.close() + return numbers +``` + 2: +``` +import math +import statistics as st +def correlation(list1, list2): + n = min(len(list1), len(list2)) + x = list1[:n] + y = list2[:n] + + Xsr = st.mean(x) + Ysr = st.mean(y) + + cov = st.covariance(x,y) + + Xso = st.stdev(x) + Yso = st.stdev(y) + + R_paired = cov / ( Xso*Yso) + return R_paired +``` + 3: +``` +import random +import math + +mean1 = random.uniform(0, 50) +std1 = random.uniform(0.1, 1) +file1 = open("rand1.txt", "w") + +for i in range(1000): + num = round(random.normalvariate(mean1, std1),2) + file1.write(f"{num}") + if i < 999: + file1.write(" ") + +file1.close() + +# +mean2 = random.uniform(0, 50) +std2 = random.uniform(0.1, 1) +file2 = open("rand2.txt", "w") + +for i in range(1000): + num = round(random.normalvariate(mean2, std2),2) + file2.write(f"{num}") + if i < 999: + file2.write(" ") + +file2.close() +import M1 +import M2 + +def main(): + file1 = input(" : ") + file2 = input(" : ") + + list1 = M1.f(file1) + list2 = M1.f(file2) + print(len(list1)) + correlation = M2.correlation(list1, list2) + + print(f" : {correlation:.3f}") + +main() +``` + + : +``` +import M0 +>> : rand1.txt +>> : rand2.txt +>> 1000 +>> : 0.002 +``` \ No newline at end of file diff --git a/bin.mnz b/bin.mnz new file mode 100644 index 0000000000000000000000000000000000000000..42dfe291b27170dd099ddcb03d6beeb3c5345d92 GIT binary patch literal 745 zcmYL{Jx&8b4282%N<_gaQbo)kKZl`%nuY^}ehP{W4U`-pLPA8W7Ovpj2!GE)B$DNM z_IrMw+3jj~zg+0I?#tB1zRc$y>J=Fw5y~Z)SBGno3n1`HZ>fahp>fQ#WXA^DQsyL~ z? z-M_^|As8;KF>zwDd}WP5U3_jR7SoD}>uB19IfX1slO=S|aYQACQ7zg+qGVOmpn8o!i=OVCo~C2Pc-=hs|2kU@_JSDBrlcvXG0ICFF;SDmx_h(t%byDT9*)S4qx9! zXv&^;ku&XrfM3^-1pV^bmb~rxzakek}4)Dzm eHu?WxKR~u0`-wd}b)ws5h_6nWj$J?y?>4_!2L|N; literal 0 HcmV?d00001