Сравнить коммиты
35 Коммитов
| Автор | SHA1 | Дата |
|---|---|---|
|
|
aa554d436c | 3 недель назад |
|
|
34d84be93c | 1 месяц назад |
|
|
0e1a80dbbb | 1 месяц назад |
|
|
92864ca5b2 | 1 месяц назад |
|
|
c518d21ed4 | 1 месяц назад |
|
|
be1a33a411 | 1 месяц назад |
|
|
b85c3f7eaa | 1 месяц назад |
|
|
0f5120ea57 | 2 месяцев назад |
|
|
5fdc0540d7 | 2 месяцев назад |
|
|
f66f431d9e | 2 месяцев назад |
|
|
26d7d72ffd | 2 месяцев назад |
|
|
082a884806 | 2 месяцев назад |
|
|
5dfc6b4069 | 2 месяцев назад |
|
|
e1d91d2417 | 2 месяцев назад |
|
|
b066616722 | 2 месяцев назад |
|
|
ede2f10565 | 2 месяцев назад |
|
|
22d13856db | 2 месяцев назад |
|
|
0927da3b27 | 2 месяцев назад |
|
|
e058d217ab | 3 месяцев назад |
|
|
ec8173a9c2 | 3 месяцев назад |
|
|
2cf445a624 | 3 месяцев назад |
|
|
18a3e4fad9 | 3 месяцев назад |
|
|
f0f3b623cf | 3 месяцев назад |
|
|
9067761e97 | 3 месяцев назад |
|
|
5ef3a40778 | 3 месяцев назад |
|
|
aea9a7e2a7 | 3 месяцев назад |
|
|
3eefb2f8ca | 3 месяцев назад |
|
|
6d8e9face9 | 4 месяцев назад |
|
|
ebafe05594 | 4 месяцев назад |
|
|
c0c649f765 | 4 месяцев назад |
|
|
0558a1abd6 | 4 месяцев назад |
|
|
e1eadd36b3 | 4 месяцев назад |
|
|
3694fcd9f3 | 4 месяцев назад |
|
|
27ed910703 | 4 месяцев назад |
|
|
cb083c89b5 | 4 месяцев назад |
@ -0,0 +1,7 @@
|
|||||||
|
#Программа по Теме 1 Гордиевских Данила Александровича
|
||||||
|
|
||||||
|
print('Hello')
|
||||||
|
h=input('Your name=')
|
||||||
|
|
||||||
|
import os
|
||||||
|
os.chdir("C:\\Users\\gorda\\YandexDisk\\5 семестр\\ПОАС\\TEMA1")
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
# Отчет по теме 1
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## 1 Изучение среды IDLE
|
||||||
|
|
||||||
|
## 1.1 Работа в интерпретаторе Python 3.13 (command line)
|
||||||
|
|
||||||
|
Изучены инструкции print() и input().
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> print("Hello")
|
||||||
|
Hello
|
||||||
|
>>> h = input("Your name = ")
|
||||||
|
Your name = Danil
|
||||||
|
```
|
||||||
|
|
||||||
|
## 1.2 Работа в оболочке IDLE
|
||||||
|
|
||||||
|
Для настройки рабочей директории введены инструкции:
|
||||||
|
|
||||||
|
```
|
||||||
|
import os
|
||||||
|
os.chdir("C:\\Users\\gorda\\YandexDisk\\5 семестр\\ПОАС\\TEMA1")
|
||||||
|
```
|
||||||
|
|
||||||
|
Проведены настройки окна IDLE. Настроены размер окна, шрифт и выделение комментариев. Приведены скриншоты окон настройки
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 1.3 Написание демонстрационной программы
|
||||||
|
|
||||||
|
Создан файл Pr0.py, прикреплённый к отчёту, в него вставлены инструкции из пунктов 1.1 и 1.2.
|
||||||
|
|
||||||
|
Полученный вывод:
|
||||||
|
|
||||||
|
```
|
||||||
|
================== RESTART: C:\Users\gorda\YandexDisk\5 семестр\ПОАС\TEMA1\Pr0.py ==================
|
||||||
|
Hello
|
||||||
|
Your name=Danil
|
||||||
|
```
|
||||||
|
|
||||||
|
## 1.4 Анализ каталога pycache
|
||||||
|
|
||||||
|
После запуска программы Pr0.py в рабочей директории появился каталог __pycache__, внутри которого расположен файл Pr0.cpython-34.pyc, фрагмент которого представлен на скриншоте
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Файл .pyc — это скомпилированный файл байт-кода для исходного кода Python (.py) для исполнения виртуальной машиной Python
|
||||||
|
|
||||||
|
## 1.5 Изучение HELP'а
|
||||||
|
|
||||||
|
В командную строку Python введена инструкция help(print), help(input). Вывод — описание работы данных инструкций, представлен на скриншоте
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 1.6 Пункт 15
|
||||||
|
|
||||||
|
Открыт в редакторе и запущен файл prb1.py, получен вывод:
|
||||||
|
|
||||||
|
```
|
||||||
|
================== RESTART: C:\Users\gorda\YandexDisk\5 семестр\ПОАС\TEMA1\prb1.py =================
|
||||||
|
Как Вас зовут? Danil
|
||||||
|
Привет, Danil
|
||||||
|
```
|
||||||
|
|
||||||
|
Запущен файл tdemo_chaos.py и изучено его содержимое. Скриншот окна работы программы и код приграммы приведён ниже
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
Запущен пример clock из пакета Turtle. Окно представлено на скриншоте
|
||||||
|
|
||||||
|

|
||||||
|
После Ширина: | Высота: | Размер: 42 KiB |
|
После Ширина: | Высота: | Размер: 87 KiB |
|
После Ширина: | Высота: | Размер: 61 KiB |
|
После Ширина: | Высота: | Размер: 51 KiB |
|
После Ширина: | Высота: | Размер: 77 KiB |
|
После Ширина: | Высота: | Размер: 110 KiB |
|
После Ширина: | Высота: | Размер: 83 KiB |
|
После Ширина: | Высота: | Размер: 116 KiB |
@ -0,0 +1,220 @@
|
|||||||
|
# Отчет по теме 1
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Пункт 2. Использование простых объектов
|
||||||
|
|
||||||
|
Созданы простые переменные. Просмотрены существующие объекты в рабочем пространстве. Определён класс переменной, удалена переменная из рабочего пространства.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> f1 = 16; f2 = 3
|
||||||
|
>>> f1,f2
|
||||||
|
(16, 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', 'numerator', 'real', 'to_bytes']
|
||||||
|
>>> type(f1)
|
||||||
|
<class 'int'>
|
||||||
|
>>> del f1,f2
|
||||||
|
>>> dir()
|
||||||
|
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__' ]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3. Изучение правил именования в Python
|
||||||
|
|
||||||
|
Название переменной не может начинаться с цифры и совпадать с зарезервированныым словам в ЯП.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> gg1 = 1.6
|
||||||
|
>>> hh1 = "String"
|
||||||
|
>>> 73sr = 3
|
||||||
|
File "<stdin>", line 1
|
||||||
|
73sr = 3
|
||||||
|
^
|
||||||
|
SyntaxError: invalid decimal literal
|
||||||
|
>>> and = 7
|
||||||
|
File "<stdin>", line 1
|
||||||
|
and = 7
|
||||||
|
^^^
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 4. Исследование ключевых слов
|
||||||
|
|
||||||
|
Подключена библиотека keyword. Выведен список ключевых слов Python. Этот список сохранён в переменной
|
||||||
|
|
||||||
|
```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']
|
||||||
|
kluchevie_slova = keyword.kwlist
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт5. Исследование встроенных идентификаторов
|
||||||
|
|
||||||
|
Подключена библиотека builtins. Выведено содержание всех встроенных идентификаторов Python. Изучена функция abs()
|
||||||
|
|
||||||
|
```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', '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', '_', '__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(-0.1652)
|
||||||
|
0.1652
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 6. Чувствительность Python к регистру символов
|
||||||
|
|
||||||
|
Python чувствителен к регистру символов в названии переменных. Переменные Gg1 и gg1 -- разные
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> Gg1 = 45
|
||||||
|
>>> gg1
|
||||||
|
1.6
|
||||||
|
>>> Gg1
|
||||||
|
45
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 7. Изучение базовых типов объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str)
|
||||||
|
|
||||||
|
### Пункт 7.1. Изучение логических переменных
|
||||||
|
|
||||||
|
Созданы логические переменные. Проверена их работоспособность
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> bb1 = True
|
||||||
|
>>> bb2 = False
|
||||||
|
>>> bb1;bb2
|
||||||
|
True
|
||||||
|
False
|
||||||
|
>>> type(bb1)
|
||||||
|
<class 'bool'>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 7.2. Изучение числовых переменных
|
||||||
|
|
||||||
|
Изучены различные виды представления переменных типа int. Числа могут быть записаны как отрицательные, в экспоненциальной форме, в двоичной, восьмиричной, комплексной форме
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> ii1=-1234567890
|
||||||
|
>>> ff1=-8.9876e-12
|
||||||
|
>>> dv1=0b1101010
|
||||||
|
>>> type(dv1)
|
||||||
|
<class 'int'>
|
||||||
|
>>> vsm1=0o52765
|
||||||
|
>>> a=3.67; b=-0.45
|
||||||
|
>>> cc2=complex(a,b)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 7.3. Изучение строковвых переменных
|
||||||
|
|
||||||
|
Изучены строковые переменные Python. Строка может быть записана в одну строку, в две и более строки, к символам в строке можно обращаться как к элементам массива. Строки не изменяемы, но их можно переопределить
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> ss1='Это - строка символов'
|
||||||
|
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||||
|
>>> print(ss1a)
|
||||||
|
Это - " строка символов ",
|
||||||
|
выводимая на двух строках
|
||||||
|
>>> ss1[0]
|
||||||
|
'Э'
|
||||||
|
>>> ss1[3:17:2]
|
||||||
|
' тоасм'
|
||||||
|
>>> ss1=ss1[:4]+'='+ss1[5:]
|
||||||
|
>>> print(ss1)
|
||||||
|
Это = строка символов
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 8. Изучение сложных типов объектов: списки (list), кортежи (tuple), словари (dict), множества (set)
|
||||||
|
|
||||||
|
### Пункт 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,0]
|
||||||
|
>>> spis
|
||||||
|
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
|
||||||
|
>>> stup[-8::2]
|
||||||
|
[0, 1, 1, 1]
|
||||||
|
>>> spis1[1]='Список'
|
||||||
|
>>> spis1
|
||||||
|
[111, 'Список', (5-9j)]
|
||||||
|
>>> spis1.append('New item')
|
||||||
|
>>> spis1.append(ss1b)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'ss1b' is not defined
|
||||||
|
>>> s1b= 'Меня зовут: \n <Gordievskikh D. A. >'
|
||||||
|
>>> spis1.append(s1b)
|
||||||
|
>>> spis1
|
||||||
|
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n <Gordievskikh D. A. >']
|
||||||
|
>>> print(spis1)
|
||||||
|
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n <Gordievskikh D. A. >']
|
||||||
|
>>> spis1.pop(1)
|
||||||
|
'Список'
|
||||||
|
>>> spis1
|
||||||
|
[111, (5-9j), 'New item', 'Меня зовут: \n <Gordievskikh D. A. >']
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 8.2. Изучение кортежей
|
||||||
|
|
||||||
|
Объект-кортеж похож на список, но его нельзя изменить – кортежи являются последовательно-стями, как списки, но они являются неизменяемыми, как строки. В отличие от списка литерал кор-тежа заключается в круглые, а не в квадратные скобки. Кортежи также поддер¬живают включение в них объектов различных типов и операции, типич¬ные для последовательностей
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> kort1=(222,'Kortezh',77+8j)
|
||||||
|
>>> kort1= kort1+(s1b,)
|
||||||
|
>>> kort1
|
||||||
|
(222, 'Kortezh', (77+8j), 'Меня зовут: \n <Gordievskikh D. A. >')
|
||||||
|
>>> kort1.count(222)
|
||||||
|
1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 8.3. Изучение словаря
|
||||||
|
|
||||||
|
Объект-словарь похож на ассоциативные массивы в других языках программирования. Его содер-жанием является совокупность пар: «ключ (key)»:«значение (value)». В качестве ключей могут использоваться неизменяемые типы объектов. Значениями могут быть объекты любого типа. Ссылка на ключ обеспечивает быстрый доступ к связанному с ним значению. В отличие от списков и кортежей совокупность элементов словаря не является упорядоченной (последовательностью). Его элементы могут изменяться с помощью операции присваивания значений.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||||
|
>>> dic1['Saratov']
|
||||||
|
145
|
||||||
|
>>> dic1['Saratov'] = 1989
|
||||||
|
>>> dic1['Saratov']
|
||||||
|
1989
|
||||||
|
>>> sorted(dic1.keys())
|
||||||
|
['Orel', 'Saratov', 'Vologda']
|
||||||
|
>>> sorted(dic1.values())
|
||||||
|
[45, 56, 1989]
|
||||||
|
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
|
||||||
|
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
|
||||||
|
>>> dic3['statistics'][2]
|
||||||
|
'standart deviation'
|
||||||
|
>>> 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('линия связи')
|
||||||
|
>>> mnoz1
|
||||||
|
{'реле', 'двигатель', 'датчик', 'микропроцессор'}
|
||||||
|
```
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
#Индивидуальное задание №21
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
Создайте кортеж с элементами – названиями цветов: розы, гвоздики, лилии, сирень, хризантемы, анютины глазки. Напишите инструкцию формального определения числа элементов в кортеже. Напишите инструкции, позволяющие создать новый кортеж, отличающийся от первого тем, что в нем вместо роз будут представлены колокольчики.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> flowers = ("розы", "гвоздики", "лилии", "сирень", "хризантемы", "анютины глазки")
|
||||||
|
>>> len(flowers)
|
||||||
|
6
|
||||||
|
>>> flowers = ("колокольчик",)+flowers[1:]
|
||||||
|
>>> flowers
|
||||||
|
('колокольчик', 'гвоздики', 'лилии', 'сирень', 'хризантемы', 'анютины глазки')
|
||||||
|
```
|
||||||
@ -0,0 +1,66 @@
|
|||||||
|
# Общее контрольное задание по теме 2
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Пункт 1
|
||||||
|
|
||||||
|
Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции
|
||||||
|
|
||||||
|
```py
|
||||||
|
familia = "Gordievskikh"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 2
|
||||||
|
|
||||||
|
Создать переменную со значением, совпадающим с первой буквой из familia.
|
||||||
|
|
||||||
|
```py
|
||||||
|
f = familia[0]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3
|
||||||
|
|
||||||
|
Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python
|
||||||
|
|
||||||
|
```py
|
||||||
|
import keyword
|
||||||
|
sp_kw = keyword.kwlist
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 4
|
||||||
|
|
||||||
|
Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка
|
||||||
|
|
||||||
|
```py
|
||||||
|
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']
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 5-7
|
||||||
|
|
||||||
|
Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
|
||||||
|
Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
|
||||||
|
Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
|
||||||
|
|
||||||
|
|
||||||
|
```py
|
||||||
|
kort_nam = ("Danil","Maria","Maxim", "Lyudmila")
|
||||||
|
type(kort_nam)
|
||||||
|
<class 'tuple'>
|
||||||
|
kort_nam += ("Dima","Denis")
|
||||||
|
kort_nam.count("Dima")
|
||||||
|
1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 8
|
||||||
|
|
||||||
|
Создайте словарь dict_bas, в котором ключами являются русские названия типов перемен-ных, использованных в предыдущих операторах, а значениями – ранее созданные пере-менные, соответствующие этим типам
|
||||||
|
|
||||||
|
```py
|
||||||
|
dict_bas = {"Строка":familia, "Список":sp_kw, "Кортеж":kort_nam}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,442 @@
|
|||||||
|
# Отчет по теме 3
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Пункт 2.1
|
||||||
|
|
||||||
|
Преобразование в логический тип с помощью функции bool(<Объект>).
|
||||||
|
|
||||||
|
```py
|
||||||
|
logiz1=bool(56)
|
||||||
|
logiz2=bool(0)
|
||||||
|
logiz3=bool("Beta")
|
||||||
|
logiz4=bool("")
|
||||||
|
logiz1
|
||||||
|
True
|
||||||
|
logiz2
|
||||||
|
False
|
||||||
|
logiz3
|
||||||
|
True
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 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,16)
|
||||||
|
123
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3.1
|
||||||
|
|
||||||
|
Преобразование в строку символов
|
||||||
|
|
||||||
|
```py
|
||||||
|
strk1=str(23.6)
|
||||||
|
strk2=str(logiz3)
|
||||||
|
strk3=str(["A","B","C"])
|
||||||
|
strk4=str(("A","B","C"))
|
||||||
|
strk5=str({"A":1,"B":2,"C":9})
|
||||||
|
strk1;strk2;strk3;strk4;strk5
|
||||||
|
'23.6'
|
||||||
|
'True'
|
||||||
|
"['A', 'B', 'C']"
|
||||||
|
"('A', 'B', 'C')"
|
||||||
|
"{'A': 1, 'B': 2, 'C': 9}"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 3.2
|
||||||
|
|
||||||
|
Преобразование элементов объекта в список
|
||||||
|
|
||||||
|
```py
|
||||||
|
spis1=list("Строка символов")
|
||||||
|
spis2=list((124,236,-15,908))
|
||||||
|
spis3=list({"A":1,"B":2,"C":9})
|
||||||
|
spis1;spis2;spis3
|
||||||
|
['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в']
|
||||||
|
[124, 236, -15, 908]
|
||||||
|
['A', 'B', 'C']
|
||||||
|
spis4=list({"A":1,"B":2,"C":9}.values())
|
||||||
|
spis4
|
||||||
|
[1, 2, 9]
|
||||||
|
spis5=list({"A":1,"B":2,"C":9}.keys())
|
||||||
|
spis5
|
||||||
|
['A', 'B', 'C']
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 3.3
|
||||||
|
|
||||||
|
Преобразование элементов объектов в кортеж
|
||||||
|
|
||||||
|
```py
|
||||||
|
kort7=tuple('Строка символов')
|
||||||
|
kort8=tuple(spis2)
|
||||||
|
kort9=tuple({"A":1,"B":2,"C":9})
|
||||||
|
kort7;kort8;kort9
|
||||||
|
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
|
||||||
|
(124, 236, -15, 908)
|
||||||
|
('A', 'B', 'C')
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 3.4
|
||||||
|
|
||||||
|
Преобразование элементов объектов в кортеж
|
||||||
|
|
||||||
|
```py
|
||||||
|
del strk5, kort8
|
||||||
|
strk5;kort8
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#33>", line 1, in <module>
|
||||||
|
strk5;kort8
|
||||||
|
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
|
||||||
|
fio = "GordievskikhDA"
|
||||||
|
fiospis = list(fio);fiospis
|
||||||
|
['G', 'o', 'r', 'd', 'i', 'e', 'v', 's', 'k', 'i', 'k', 'h', 'D', 'A']
|
||||||
|
fiokort = tuple(fiospis);fiokort
|
||||||
|
('G', 'o', 'r', 'd', 'i', 'e', 'v', 's', 'k', 'i', 'k', 'h', 'D', 'A')
|
||||||
|
fiostr = str(fiokort);fiostr
|
||||||
|
"('G', 'o', 'r', 'd', 'i', 'e', 'v', 's', 'k', 'i', 'k', 'h', 'D', 'A')"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 4
|
||||||
|
|
||||||
|
Сложение, вычитание, умножение, деление, целочисленное деление, остаток, степень, приколюхи с комплексными числами
|
||||||
|
|
||||||
|
```py
|
||||||
|
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
|
||||||
|
3.9555555555555557
|
||||||
|
type(a)
|
||||||
|
<class 'float'>
|
||||||
|
|
||||||
|
b=178//45;b
|
||||||
|
3
|
||||||
|
c=-24.6//12.1;c
|
||||||
|
-3.0
|
||||||
|
7.47 // 3
|
||||||
|
2.0
|
||||||
|
|
||||||
|
148%33
|
||||||
|
16
|
||||||
|
12.6%3.8
|
||||||
|
1.2000000000000002
|
||||||
|
5%2
|
||||||
|
1
|
||||||
|
6%2
|
||||||
|
0
|
||||||
|
|
||||||
|
14**3
|
||||||
|
2744
|
||||||
|
e=2.7**3.6;e
|
||||||
|
35.719843790663525
|
||||||
|
55**complex(15,6)
|
||||||
|
(5.909952981889534e+25-1.1295250250324674e+26j)
|
||||||
|
complex(15,6)**2
|
||||||
|
(189+180j)
|
||||||
|
complex(3,4)**complex(5,6)
|
||||||
|
(-1.8608933068808367+11.83676710676438j)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 5
|
||||||
|
|
||||||
|
Бинарная магия
|
||||||
|
|
||||||
|
```py
|
||||||
|
dv1=9;bin(dv1)
|
||||||
|
'0b1001'
|
||||||
|
dv2 = ~dv1;bin(dv2);dv2
|
||||||
|
'-0b1010'
|
||||||
|
-10
|
||||||
|
|
||||||
|
7&9
|
||||||
|
1
|
||||||
|
7&8
|
||||||
|
0
|
||||||
|
|
||||||
|
7|9
|
||||||
|
15
|
||||||
|
7|8
|
||||||
|
15
|
||||||
|
|
||||||
|
14^5
|
||||||
|
11
|
||||||
|
|
||||||
|
h = 256
|
||||||
|
bin(h)
|
||||||
|
'0b100000000'
|
||||||
|
h += 8
|
||||||
|
bin(h)
|
||||||
|
'0b100001000'
|
||||||
|
h>>4
|
||||||
|
16
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 6
|
||||||
|
|
||||||
|
Операции со строковыми данными. Строки, списки, кортежи, форматирование строк
|
||||||
|
|
||||||
|
```py
|
||||||
|
'Система '+'регулирования'
|
||||||
|
'Система регулирования'
|
||||||
|
['abc','de','fg']+['hi','jkl']
|
||||||
|
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||||
|
('abc','de','fg')+('hi','jkl')
|
||||||
|
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
|
||||||
|
'ля-'*5
|
||||||
|
'ля-ля-ля-ля-ля-'
|
||||||
|
['ку','-']*3
|
||||||
|
['ку', '-', 'ку', '-', 'ку', '-']
|
||||||
|
('кис','-')*4
|
||||||
|
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
|
||||||
|
|
||||||
|
stroka='Система автоматического управления'
|
||||||
|
'автомат' in stroka
|
||||||
|
True
|
||||||
|
stroka = 'автомат по ТАУ'
|
||||||
|
'ку' in ['ку','-']*3
|
||||||
|
True
|
||||||
|
'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
False
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Операции с переменными. Присвавание, изменение
|
||||||
|
|
||||||
|
```py
|
||||||
|
zz = -12
|
||||||
|
zz+=5
|
||||||
|
zz-=3
|
||||||
|
zz
|
||||||
|
-10
|
||||||
|
stroka='Система'
|
||||||
|
stroka+=' регулирования'
|
||||||
|
stroka
|
||||||
|
'Система регулирования'
|
||||||
|
zz/=2
|
||||||
|
zz*=5
|
||||||
|
zz
|
||||||
|
-25.0
|
||||||
|
zz//=3
|
||||||
|
zz
|
||||||
|
-9.0
|
||||||
|
zz%=2
|
||||||
|
zz
|
||||||
|
1.0
|
||||||
|
w=v=10
|
||||||
|
w;v
|
||||||
|
10
|
||||||
|
10
|
||||||
|
n1,n2,n3=(11,-3,'all')
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 8.1
|
||||||
|
|
||||||
|
Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=)
|
||||||
|
|
||||||
|
```py
|
||||||
|
w=v=10
|
||||||
|
w==v
|
||||||
|
True
|
||||||
|
w=2*v
|
||||||
|
w>=v
|
||||||
|
True
|
||||||
|
True
|
||||||
|
Frue
|
||||||
|
False
|
||||||
|
Talse
|
||||||
|
True>False
|
||||||
|
Frue
|
||||||
|
False<False
|
||||||
|
Talse
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 8.2
|
||||||
|
|
||||||
|
Проверка наличия заданного элемента в последовательности или во множестве
|
||||||
|
|
||||||
|
```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':['UIT','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
|
||||||
|
'UIT' in dct1['Depart']
|
||||||
|
True
|
||||||
|
dct1['Depart'][1] == 'MM'
|
||||||
|
False
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 8.3
|
||||||
|
|
||||||
|
Создание больших логических выражений с использованием соединительных слов
|
||||||
|
|
||||||
|
```py
|
||||||
|
a=17
|
||||||
|
b=-6
|
||||||
|
(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
|
||||||
|
True
|
||||||
|
not(not (a>=b) or not('book' in mnoz1) and not ('Pskov' in dic1))
|
||||||
|
True
|
||||||
|
not (a>=b) or not('book' in mnoz1) or not ('Pskov' in dic1)
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 8.4
|
||||||
|
|
||||||
|
Проверка ссылок переменных на один и тот же объект
|
||||||
|
|
||||||
|
```py
|
||||||
|
w=v=10
|
||||||
|
w is v
|
||||||
|
True
|
||||||
|
w1=['A','B']
|
||||||
|
v1=['A','B']
|
||||||
|
w1 is v1
|
||||||
|
False
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 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('пр')
|
||||||
|
5
|
||||||
|
stroka.count("с")
|
||||||
|
4
|
||||||
|
stroka.replace(' у',' автоматического у')
|
||||||
|
'Микропроцессорная система автоматического управления'
|
||||||
|
stroka
|
||||||
|
'Микропроцессорная система управления'
|
||||||
|
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
|
||||||
|
spsk = [28, "ударов", "ножом", ",", ["ты действовал наверняка, ","да"], "?"]
|
||||||
|
spsk.pop(2)
|
||||||
|
'ножом'
|
||||||
|
spsk
|
||||||
|
[28, 'ударов', ',', ['ты действовал наверняка, ', 'да'], '?']
|
||||||
|
spsk.append('c')
|
||||||
|
spsk
|
||||||
|
[28, 'ударов', ',', ['ты действовал наверняка, ', 'да'], '?', 'c']
|
||||||
|
spsk.insert(2,'a')
|
||||||
|
spsk
|
||||||
|
[28, 'ударов', 'a', ',', ['ты действовал наверняка, ', 'да'], '?', 'c']
|
||||||
|
spsk.count('a')
|
||||||
|
1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Пункт 10
|
||||||
|
|
||||||
|
Выход
|
||||||
|
|
||||||
|
```py
|
||||||
|
exit()
|
||||||
|
```
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
# Общее контрольное задание
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Задание 1
|
||||||
|
|
||||||
|
Преобразовать восьмеричное значение 45 в целое число.
|
||||||
|
|
||||||
|
```py
|
||||||
|
int("45",8)
|
||||||
|
37
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 2
|
||||||
|
|
||||||
|
Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж
|
||||||
|
|
||||||
|
```py
|
||||||
|
d = {"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||||
|
sp1 = d.keys()
|
||||||
|
sp2 = d.values()
|
||||||
|
sp1;sp2
|
||||||
|
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||||
|
dict_values([23, 12, 78])
|
||||||
|
kort = tuple(sp1)+tuple(sp2)
|
||||||
|
kort
|
||||||
|
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 3
|
||||||
|
|
||||||
|
Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
|
||||||
|
|
||||||
|
```py
|
||||||
|
((1768//24.8)%3)**2.4
|
||||||
|
5.278031643091577
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 4
|
||||||
|
|
||||||
|
Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
|
||||||
|
|
||||||
|
```py
|
||||||
|
((~(13&27))^14)<<2
|
||||||
|
-32
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 5
|
||||||
|
|
||||||
|
Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
|
||||||
|
|
||||||
|
```py
|
||||||
|
spisok = ["колебат"]*4
|
||||||
|
spisok
|
||||||
|
['колебат', 'колебат', 'колебат', 'колебат']
|
||||||
|
'аткол' in spisok[1]+spisok[2]
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 6
|
||||||
|
|
||||||
|
Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов
|
||||||
|
|
||||||
|
```py
|
||||||
|
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.
|
||||||
|
|
||||||
|
d.keys()
|
||||||
|
dict_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.
|
||||||
|
|
||||||
|
d.values()
|
||||||
|
dict_values([23, 12, 78])
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 7
|
||||||
|
|
||||||
|
Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
|
||||||
|
|
||||||
|
```py
|
||||||
|
s1 = 'Создать объект - символьную строку с текстом данного предложения'
|
||||||
|
ls2 = list(s1.split())
|
||||||
|
ls2
|
||||||
|
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||||
|
ls2[ls2.index('-')] = ','; ls2
|
||||||
|
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||||
|
ls2.remove('данного'); ls2
|
||||||
|
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||||
|
```
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
# Тест по модулю 1
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Задание 1
|
||||||
|
|
||||||
|
Везде, но главное помнить, что все символы в строке ПОСЛЕ значка # не учитываются питоном. Можно комментироввать в пустой строке или после инструкции. Например:
|
||||||
|
#Комментарий в строке, всё норм
|
||||||
|
Print(“hello MPEI”) #Комментарий после инструкции, всё ок
|
||||||
|
# print(“Hello MPEI”) работать не будет
|
||||||
|
|
||||||
|
|
||||||
|
## Задание 2
|
||||||
|
|
||||||
|
Создайте объект-строку, содержащую любые 6 чисел, разделенных запятыми. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
|
||||||
|
|
||||||
|
```py
|
||||||
|
stroka = "2,4,8,16,32,64"
|
||||||
|
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']
|
||||||
|
type(stroka)
|
||||||
|
<class 'str'>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Задание 3
|
||||||
|
|
||||||
|
Напишите инструкцию, позволяющую выделить из строки третье по порядку число и записать его в виде отдельной числовой переменной. Отобразите на экране получившийся объект.
|
||||||
|
|
||||||
|
```py
|
||||||
|
chislo = int(stroka[4]);chislo
|
||||||
|
8
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Задание 4
|
||||||
|
|
||||||
|
Преобразовать строку в список так, чтобы его элементами были только строки, содержащие числа. Отобразите полученный объект. Напишите инструкцию, заменяющую в списке третье по порядку число на 777. Отобразите полученный объект.
|
||||||
|
|
||||||
|
```py
|
||||||
|
spis = stroka.split(",")
|
||||||
|
spis
|
||||||
|
['2', '4', '8', '16', '32', '64']
|
||||||
|
spis[2] = 777
|
||||||
|
spis
|
||||||
|
['2', '4', 777, '16', '32', '64']
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Задание 5
|
||||||
|
|
||||||
|
Напишите инструкцию, позволяющую подсчитать сумму чисел, содержащихся во втором и пятом элементах списка. Отобразите результат. Проверьте полученный результат.
|
||||||
|
|
||||||
|
```py
|
||||||
|
aaaa = int(spis[1])+int(spis[4])
|
||||||
|
aaaa
|
||||||
|
36ssssss
|
||||||
|
```
|
||||||
|
После Ширина: | Высота: | Размер: 20 KiB |
|
После Ширина: | Высота: | Размер: 15 KiB |
|
После Ширина: | Высота: | Размер: 10 KiB |
@ -0,0 +1,237 @@
|
|||||||
|
# Отчет по теме 4
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Пункт 2
|
||||||
|
|
||||||
|
### Пункт 2.1
|
||||||
|
|
||||||
|
Функция round – округление числа с заданной точностью
|
||||||
|
|
||||||
|
```py
|
||||||
|
round(123.456,1)
|
||||||
|
123.5
|
||||||
|
round(123.456,0)
|
||||||
|
123.0
|
||||||
|
round(123.456)
|
||||||
|
123
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.2
|
||||||
|
|
||||||
|
Функция range – создание последовательности целых чисел с заданным шагом
|
||||||
|
|
||||||
|
```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 = ["Гордиевских","Девятова","Креветов"]
|
||||||
|
zip(gg,qq)
|
||||||
|
<zip object at 0x1130be780>
|
||||||
|
tuple(zip(gg,qq))
|
||||||
|
((76, 'Гордиевских'), (85, 'Девятова'), (94, 'Креветов'))
|
||||||
|
ff = zip(gg,qq)
|
||||||
|
ff[1][1]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#13>", line 1, in <module>
|
||||||
|
ff[1][1]
|
||||||
|
TypeError: 'zip' object is not subscriptable
|
||||||
|
fff = tuple(ff)
|
||||||
|
fff[1][1]
|
||||||
|
'Девятова'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.4
|
||||||
|
|
||||||
|
Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки
|
||||||
|
|
||||||
|
```py
|
||||||
|
fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||||
|
коэффициент усиления=31
|
||||||
|
fff
|
||||||
|
31.0
|
||||||
|
dan
|
||||||
|
-1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.5
|
||||||
|
|
||||||
|
Функция exec – чтение и выполнение объекта-аргумента функции
|
||||||
|
|
||||||
|
```py
|
||||||
|
exec(input('введите инструкции:'))
|
||||||
|
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||||
|
gg
|
||||||
|
221.456
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.5
|
||||||
|
|
||||||
|
Функция divmod() возвращает кортеж из целого и остатка от деления первого аргумента от второго
|
||||||
|
|
||||||
|
```py
|
||||||
|
divmod(25,6)
|
||||||
|
(4, 1)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3
|
||||||
|
|
||||||
|
Функции из стандартного модуля math
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
dir(math)
|
||||||
|
['__doc__', '__file__', '__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!.
|
||||||
|
|
||||||
|
math.factorial(5)
|
||||||
|
120
|
||||||
|
math.pi
|
||||||
|
3.141592653589793
|
||||||
|
from math import *
|
||||||
|
sin(45)
|
||||||
|
0.8509035245341184
|
||||||
|
sin(60)
|
||||||
|
-0.3048106211022167
|
||||||
|
sin(radians(30))
|
||||||
|
0.49999999999999994
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sin(2*pi/7+exp(0.23))
|
||||||
|
0.8334902641414562
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 4
|
||||||
|
|
||||||
|
Функции из модуля cmath
|
||||||
|
|
||||||
|
```py
|
||||||
|
import cmath
|
||||||
|
dir(cmath)
|
||||||
|
['__doc__', '__file__', '__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
|
||||||
|
|
||||||
|
Стандартный модуль random
|
||||||
|
|
||||||
|
```py
|
||||||
|
randomnoe = [random.uniform(0, 10),random.gauss(0, 1),random.betavariate(2, 5),random.gammavariate(2, 1)]
|
||||||
|
randomnoe
|
||||||
|
[0.987945011841781, 0.3286620967978268, 0.11054691058687621, 3.3461896723529287]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 6
|
||||||
|
|
||||||
|
Функции из модуля time
|
||||||
|
|
||||||
|
```py
|
||||||
|
import time
|
||||||
|
dir(time)
|
||||||
|
['CLOCK_MONOTONIC', 'CLOCK_MONOTONIC_RAW', 'CLOCK_MONOTONIC_RAW_APPROX', 'CLOCK_PROCESS_CPUTIME_ID', 'CLOCK_REALTIME', 'CLOCK_THREAD_CPUTIME_ID', 'CLOCK_UPTIME_RAW', 'CLOCK_UPTIME_RAW_APPROX', '_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock_getres', 'clock_gettime', 'clock_gettime_ns', 'clock_settime', 'clock_settime_ns', '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', 'tzset']
|
||||||
|
c1=time.time()
|
||||||
|
c1
|
||||||
|
1761226276.074031
|
||||||
|
c2=time.time()-c1;c2
|
||||||
|
19.872960090637207
|
||||||
|
c2=time.time()-c1;c2
|
||||||
|
33.6310248374939
|
||||||
|
dat=time.gmtime();dat
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=23, tm_hour=13, tm_min=32, tm_sec=21, tm_wday=3, tm_yday=296, tm_isdst=0)
|
||||||
|
dat.tm_mon
|
||||||
|
10
|
||||||
|
time.localtime()
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=23, tm_hour=16, tm_min=33, tm_sec=50, tm_wday=3, tm_yday=296, tm_isdst=0)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 7
|
||||||
|
|
||||||
|
Графические функции
|
||||||
|
|
||||||
|
График одной переменной
|
||||||
|
|
||||||
|
```py
|
||||||
|
import pylab
|
||||||
|
Matplotlib is building the font cache; this may take a moment.
|
||||||
|
import pylab
|
||||||
|
x=list(range(-3,55,4))
|
||||||
|
t=list(range(15))
|
||||||
|
pylab.plot(t,x)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x10d114410>]
|
||||||
|
pylab.title('Первый график')
|
||||||
|
Text(0.5, 1.0, 'Первый график')
|
||||||
|
pylab.xlabel('время')
|
||||||
|
Text(0.5, 47.04444444444444, 'время')
|
||||||
|
pylab.ylabel('сигнал')
|
||||||
|
Text(93.94444444444443, 0.5, 'сигнал')
|
||||||
|
pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
Полученный график представлен на рисунке
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Круговая диаграмма
|
||||||
|
|
||||||
|
```py
|
||||||
|
region=['Центр','Урал','Сибирь','Юг']
|
||||||
|
naselen=[65,12,23,17]
|
||||||
|
pylab.pie(naselen,labels=region)
|
||||||
|
([<matplotlib.patches.Wedge object at 0x10d10eba0>, <matplotlib.patches.Wedge object at 0x117c4e5d0>, <matplotlib.patches.Wedge object at 0x117c4e990>, <matplotlib.patches.Wedge object at 0x117c4ec10>], [Text(-0.19101313413904503, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.4848612919483732, 'Юг')])
|
||||||
|
pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
Полученный график представлен на рисунке
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Испробовано построение гистограммы
|
||||||
|
|
||||||
|
```py
|
||||||
|
pylab.hist([1,2,3,4,5],3)
|
||||||
|
(array([2., 1., 2.]), array([1. , 2.33333333, 3.66666667, 5. ]), <BarContainer object of 3 artists>)
|
||||||
|
pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
Полученный график представлен на рисунке
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Пункт 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']
|
||||||
|
viborka = [0.12,-1.08,-0.47,0,0.03,-0.28,0.14,0.37,1.22,-0.25,0.22,-0.6,0.78,0,1.02,0.45,2.59,-0.82,-1.14,-0.46,1.15,-0.92,1.12,1.3,-0.13,-0.83,1.01,0.34,0.04,-0.07,0.19,-0.8,1.28,0.56,0.61,0.38,-0.9,1.04,0.35,-0.15,-0.99,1.63,0.89,1.74,0.5,-0.37,-0.7,0.35,0.99,1.14]
|
||||||
|
statistics.mean(viborka)
|
||||||
|
0.2518
|
||||||
|
statistics.stdev(viborka)
|
||||||
|
0.8335801566442308
|
||||||
|
statistics.median(viborka)
|
||||||
|
0.20500000000000002
|
||||||
|
```
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
# Общее контрольное задание
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Задание 1
|
||||||
|
|
||||||
|
Напишите и исполните единое выражение, реализующее последовательное выполнение сле-дующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления
|
||||||
|
|
||||||
|
```py
|
||||||
|
divmod((round(phase(5+6j),2)*20),3)
|
||||||
|
(5.0, 2.6000000000000014)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 2
|
||||||
|
|
||||||
|
Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||||
|
|
||||||
|
```py
|
||||||
|
from time import *
|
||||||
|
nowatime = localtime()
|
||||||
|
nowatime
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=23, tm_hour=20, tm_min=20, tm_sec=30, tm_wday=3, tm_yday=296, tm_isdst=0)
|
||||||
|
stri = str(nowatime.tm_hour)+":"+str(nowatime.tm_min)
|
||||||
|
stri
|
||||||
|
'20:20'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 3
|
||||||
|
|
||||||
|
Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели
|
||||||
|
|
||||||
|
```py
|
||||||
|
days = ["Пн","Вт","Ср","Чт","Пт","Сб","Вс"]
|
||||||
|
from random import *
|
||||||
|
ra = sample(days, 3); ra
|
||||||
|
['Чт', 'Вт', 'Пн']
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 4
|
||||||
|
|
||||||
|
Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3
|
||||||
|
|
||||||
|
```py
|
||||||
|
nums = sample(range(14,32,3), 1); nums
|
||||||
|
[26]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 5
|
||||||
|
|
||||||
|
Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стан-дартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита
|
||||||
|
|
||||||
|
```py
|
||||||
|
from random import *
|
||||||
|
N = round(gauss(15,4))
|
||||||
|
alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
|
||||||
|
randlet = sample(alphabet,N)
|
||||||
|
N; randlet
|
||||||
|
9
|
||||||
|
['o', 'q', 'j', 's', 'a', 'v', 'r', 'i', 'c']
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 6
|
||||||
|
|
||||||
|
Напишите инструкцию для определения временного интервала в минутах, прошедшего с мо-мента предыдущего (из п.2) определения временных параметров
|
||||||
|
|
||||||
|
```py
|
||||||
|
from time import *
|
||||||
|
c1 = time()
|
||||||
|
c2 = time()-c1; c2
|
||||||
|
21.224413871765137
|
||||||
|
```
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
# Тест по модулю 4
|
||||||
|
|
||||||
|
Гордиевских Данил
|
||||||
|
|
||||||
|
Напишите инструкцию создания переменной со значением – календарными данными момента начала выполнения контрольного задания. Создайте кортеж с последовательностью элементов со значениями от -26 до 46 с шагом 9. Подсчитайте число элементов в созданном кортеже. Отобразите результат в виде строки по шаблону: «Число элементов = <значение>». Напишите инструкцию определения числа секунд, прошедших с начала выполнения контрольного задания.
|
||||||
|
|
||||||
|
```py
|
||||||
|
starttask = localtime()
|
||||||
|
starttask
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=24, tm_hour=9, tm_min=52, tm_sec=13, tm_wday=4, tm_yday=297, tm_isdst=0)
|
||||||
|
aaaa = tuple(range(-26,46,9));aaaa
|
||||||
|
(-26, -17, -8, 1, 10, 19, 28, 37)
|
||||||
|
len(aaaa)
|
||||||
|
8
|
||||||
|
print(f"Число элементов = {len(aaaa)}")
|
||||||
|
Число элементов = 8
|
||||||
|
(localtime().tm_min - starttask.tm_min)*60 + (localtime().tm_sec - starttask.tm_sec)
|
||||||
|
328
|
||||||
|
```
|
||||||
|
После Ширина: | Высота: | Размер: 37 KiB |
|
После Ширина: | Высота: | Размер: 16 KiB |
@ -0,0 +1,299 @@
|
|||||||
|
# Отчёт по теме 5
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## 2. Ветвление по условию – управляющая инструкция if
|
||||||
|
|
||||||
|
Условие задается в виде логического выражения, которое может принимать значение True или False. Блок инструкций может располагаться на нескольких строках. Отступы во всех строках блока должны быть одинаковыми по отношению к первому символу управляющей инструкции. Если имеется вложенная управляющая инструкция, то она вводится с таким же отступом, а все строки ее блоков – отступают по отношению к ее первому символу. Признак конца блока – отсут-ствие отступов в очередной строке или ввод пустой строки.
|
||||||
|
|
||||||
|
```py
|
||||||
|
porog = 10
|
||||||
|
rashod1 = 3
|
||||||
|
rashod2 = 5
|
||||||
|
if rashod1>=porog:
|
||||||
|
dohod = 12
|
||||||
|
... elif rashod2 == porog:
|
||||||
|
... dohod = 0
|
||||||
|
... else:
|
||||||
|
... 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
|
||||||
|
>>> porog
|
||||||
|
10
|
||||||
|
>>> dohod
|
||||||
|
2
|
||||||
|
>>> if porog>=5 : rashod1=6; rashod2=0
|
||||||
|
...
|
||||||
|
>>> porog
|
||||||
|
10
|
||||||
|
>>> rashod1
|
||||||
|
6
|
||||||
|
>>> rashod2
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Цикл по перечислению – управляющая инструкция for
|
||||||
|
|
||||||
|
### 3.1. Простой цикл
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> temperatura = 5
|
||||||
|
>>> for i in range(3,18,3):
|
||||||
|
... temperatura+=i
|
||||||
|
...
|
||||||
|
>>> temperatura
|
||||||
|
50
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2. Более сложный цикл
|
||||||
|
|
||||||
|
```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])
|
||||||
|
... else:break
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> sps
|
||||||
|
[2, 15, 14, 8, 2, 2, 2, 2]
|
||||||
|
```
|
||||||
|
|
||||||
|
Отличия в списках объясняются тем, что в первом случае при переборе значений из списка, список дополняется и добавленные элементы тоже перебираются
|
||||||
|
Во втором случае создаётся срез списка, который не изменяется в цикле, и именно по нему проходит 4 итерации
|
||||||
|
|
||||||
|
### 3.3. Пример
|
||||||
|
|
||||||
|
Создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сумма чисел не превышает 500, эта сумма должна быть отображена на экране
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import random as rn
|
||||||
|
>>> sps5=[]
|
||||||
|
>>> for i in range(10):
|
||||||
|
... sps5.append(rn.randint(1,100))
|
||||||
|
... ss=sum(sps5)
|
||||||
|
... if ss>500: break
|
||||||
|
... else:
|
||||||
|
... print(ss)
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> ss
|
||||||
|
505
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.4. Пример с символьной строкой
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> stroka='Это – автоматизированная система'
|
||||||
|
>>> stroka1=""
|
||||||
|
>>> for ss in stroka:
|
||||||
|
... stroka1+=" "+ss
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> stroka1
|
||||||
|
' Э т о – а в т о м а т и з и р о в а н н а я с и с т е м а'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.5. Запись цикла в строке
|
||||||
|
|
||||||
|
Cоздание списка с синусоидальным сигналом
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import math
|
||||||
|
>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
|
||||||
|
>>> import pylab
|
||||||
|
>>> x = list(range(100))
|
||||||
|
>>> pylab.plot(x,sps2)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x0000028BBFDA2990>]
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 4. Цикл «пока истинно условие» – управляющая инструкция while
|
||||||
|
|
||||||
|
### 4.1. Цикл со счетчиком
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> rashod=300
|
||||||
|
>>> while rashod:
|
||||||
|
... print("Расход=",rashod)
|
||||||
|
... rashod-=50
|
||||||
|
...
|
||||||
|
Расход= 300
|
||||||
|
Расход= 250
|
||||||
|
Расход= 200
|
||||||
|
Расход= 150
|
||||||
|
Расход= 100
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2. Пример с символьной строкой
|
||||||
|
|
||||||
|
```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
|
||||||
|
>>> x = list(range(len(stroka)))
|
||||||
|
>>> pylab.plot(x,sps2)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x0000028BBFEABD90>]
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 4.3. Определение, является ли число простым
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> chislo=267
|
||||||
|
>>> kandidat =chislo // 2
|
||||||
|
>>> while kandidat > 1:
|
||||||
|
... if chislo%kandidat == 0:
|
||||||
|
... print(chislo, ' имеет множитель ', kandidat)
|
||||||
|
... break
|
||||||
|
... kandidat -= 1
|
||||||
|
... else:
|
||||||
|
... print(chislo, ' является простым!')
|
||||||
|
...
|
||||||
|
...
|
||||||
|
267 имеет множитель 89
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
>>>for chislo in range(250,301):
|
||||||
|
... kandidat =chislo // 2
|
||||||
|
... while kandidat > 1:
|
||||||
|
... if chislo%kandidat == 0:
|
||||||
|
... print(chislo, ' имеет множитель ', kandidat)
|
||||||
|
... break
|
||||||
|
... kandidat -= 1
|
||||||
|
... else:
|
||||||
|
... 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
|
||||||
|
```
|
||||||
@ -0,0 +1,77 @@
|
|||||||
|
# Общее контрольное задание тема 5
|
||||||
|
|
||||||
|
Гордиевских Данил
|
||||||
|
|
||||||
|
## Пункт 1
|
||||||
|
|
||||||
|
Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
|
||||||
|
>>> text = "life is a series of choices"
|
||||||
|
>>> for i in text:
|
||||||
|
... if i==" ": continue
|
||||||
|
... print(str(alphabet.index(i)+1))
|
||||||
|
...
|
||||||
|
...
|
||||||
|
12
|
||||||
|
9
|
||||||
|
6
|
||||||
|
5
|
||||||
|
9
|
||||||
|
19
|
||||||
|
1
|
||||||
|
19
|
||||||
|
5
|
||||||
|
18
|
||||||
|
9
|
||||||
|
5
|
||||||
|
19
|
||||||
|
15
|
||||||
|
6
|
||||||
|
3
|
||||||
|
8
|
||||||
|
15
|
||||||
|
9
|
||||||
|
3
|
||||||
|
5
|
||||||
|
19
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 2
|
||||||
|
|
||||||
|
Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> stroka = "Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом)."
|
||||||
|
>>> finder = input("Введите значение: ")
|
||||||
|
Введите значение: либо
|
||||||
|
>>> if (finder in stroka):
|
||||||
|
... print("Это значение есть")
|
||||||
|
... else: print("Этого значения нет")
|
||||||
|
...
|
||||||
|
Это значение есть
|
||||||
|
>>> finder = input("Введите значение: ")
|
||||||
|
Введите значение: ПОАС
|
||||||
|
>>> if (finder in stroka):
|
||||||
|
... print("Это значение есть")
|
||||||
|
... else: print("Этого значения нет")
|
||||||
|
...
|
||||||
|
Этого значения нет
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3
|
||||||
|
|
||||||
|
Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его сред-ние баллы по двум сессиям.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> letofio = ["Девятова","Гордиевских","Креветов"]
|
||||||
|
>>> letoexam = [5,4,3]
|
||||||
|
>>> zimafio = ["Гордиевских","Креветов","Девятова"]
|
||||||
|
>>> zimaexams = [5,4,5]
|
||||||
|
>>> fami = input("Введите фамилию студента: ")
|
||||||
|
Введите фамилию студента: Креветов
|
||||||
|
>>> mark = (letoexam[letofio.index(fami)]+zimaexams[zimafio.index(fami)])/2
|
||||||
|
>>> print(mark)
|
||||||
|
3.5
|
||||||
|
```
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 5
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Условие
|
||||||
|
|
||||||
|
Напишите инструкции создания списка с 20 случайными нормально распределенными (математическое ожидание равно -50, дисперсия равна 64) числами. Из этого списка перепишите в другой список только те элементы, которые не превышают среднего значения.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> from random import *
|
||||||
|
>>> spis = []
|
||||||
|
>>> for i in range(20):
|
||||||
|
... spis.append(gauss(-50,64))
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> from statistics import *
|
||||||
|
>>> sred = mean(spis)
|
||||||
|
>>> spisnew = []
|
||||||
|
>>> for i in range(len(spis)):
|
||||||
|
... if spis[i]<=sred:
|
||||||
|
... spisnew.append(spis[i])
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> print(spis)
|
||||||
|
[-95.4106354528638, -68.57442120359156, -61.956283320774475, -74.17382575733697, -73.34835530918741, -13.894470679226565, -35.45403184867236, -31.498147683478503, 27.037644557152873, 55.22680246648059, -74.76545145503609, 11.556505860627482, -57.968278929697114, -47.538710192853785, -92.18502173055543, 97.12462411170492, 3.256591532214216, -40.06403905094467, -86.6051144137632, -20.11182186455578]
|
||||||
|
>>> print(spisnew)
|
||||||
|
[-95.4106354528638, -68.57442120359156, -61.956283320774475, -74.17382575733697, -73.34835530918741, -35.45403184867236, -74.76545145503609, -57.968278929697114, -47.538710192853785, -92.18502173055543, -40.06403905094467, -86.6051144137632]
|
||||||
|
>>> sred
|
||||||
|
-33.96732201821788
|
||||||
|
|
||||||
|
```
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
# Общее контрольное задание к теме 6
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следую-щие операции:
|
||||||
|
Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
|
||||||
|
Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
|
||||||
|
Записывается кортеж в бинарный файл.
|
||||||
|
Записывается в этот же файл список и закрывается файл.
|
||||||
|
Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
|
||||||
|
Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
|
||||||
|
Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде от-дельных списков со своими именами.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
[Задание](task.py)
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
import random
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
a=[]
|
||||||
|
for i in range(125):
|
||||||
|
a.append(str(random.randint(6,27)))
|
||||||
|
cort = tuple(a)
|
||||||
|
|
||||||
|
spis = ["Гордиевских","Девятова","Креветов","Ефимова"]
|
||||||
|
|
||||||
|
f = open("binfile.bin", "wb")
|
||||||
|
pickle.dump(cort, f)
|
||||||
|
pickle.dump(spis, f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
f = open("binfile.bin", "rb")
|
||||||
|
newcort = pickle.load(f)
|
||||||
|
newspis = pickle.load(f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
if (cort == newcort) and (spis == newspis):
|
||||||
|
print("Запись и чтение прошли успешно")
|
||||||
|
else:
|
||||||
|
print("На каком-то этапе произошла ошибка")
|
||||||
|
|
||||||
|
print(cort)
|
||||||
|
for i in range(0, len(cort), 5):
|
||||||
|
exec(f"plist{i//5} = list(cort[{i}:{i+5}]);print(plist{i//5})")
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
# Защита модуля 2, Вариант 20
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
1) Создайте кортеж с элементами - числами: -0.25, -0.20, -0.15,:,0.45,0.50.
|
||||||
|
2) Запишите элементы кортежа в текстовый файл по два элемента на строке с разделителем "," (запятая).
|
||||||
|
3) Удалите кортеж из памяти.
|
||||||
|
4) Прочитайте из созданного файла 7 первых элементов и сформируйте из них множество.
|
||||||
|
5) Создайте из множества два списка: первый - с первыми 3 элементами и второй - с остальными 4 элементами.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import os
|
||||||
|
>>> os.chdir(r"C:\Users\u202-13\Desktop\ПОАС\TEMA6")
|
||||||
|
>>> fp = open("text.txt", "w")
|
||||||
|
>>> sp = []
|
||||||
|
>>> for i in range(-25, 55, 5):
|
||||||
|
... sp.append(i/100)
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> cort = tuple(sp)
|
||||||
|
>>> for i in range(0, len(cort), 2):
|
||||||
|
... fp.write(str(cort[i]) + ", "+ str(cort[i+1])+"\n")
|
||||||
|
...
|
||||||
|
...
|
||||||
|
12
|
||||||
|
12
|
||||||
|
11
|
||||||
|
10
|
||||||
|
10
|
||||||
|
10
|
||||||
|
10
|
||||||
|
10
|
||||||
|
>>> fp.close()
|
||||||
|
>>> del cort
|
||||||
|
>>> fp=open('text.txt')
|
||||||
|
>>> sps1=[]
|
||||||
|
>>> for stroka in fp:
|
||||||
|
... stroka=stroka.rstrip('\n')
|
||||||
|
... sps1=sps1+stroka.split(',')
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> fp.close()
|
||||||
|
>>> sps1
|
||||||
|
['-0.25', ' -0.2', '-0.15', ' -0.1', '-0.05', ' 0.0', '0.05', ' 0.1', '0.15', ' 0.2', '0.25', ' 0.3', '0.35', ' 0.4', '0.45', ' 0.5']
|
||||||
|
>>> mn = sps1[:7]
|
||||||
|
>>> sp1 = mn[:3]
|
||||||
|
>>> sp2 = mn[3:7]
|
||||||
|
>>> sp1
|
||||||
|
['-0.25', ' -0.2', '-0.15']
|
||||||
|
>>> sp2
|
||||||
|
[' -0.1', '-0.05', ' 0.0', '0.05']
|
||||||
|
```
|
||||||
|
После Ширина: | Высота: | Размер: 8.4 KiB |
|
После Ширина: | Высота: | Размер: 6.6 KiB |
@ -0,0 +1,101 @@
|
|||||||
|
X Y
|
||||||
|
0.6857956149109027 0.17144890372772567
|
||||||
|
0.9462898296904173 0.3651591352183986
|
||||||
|
1.1875048283957854 0.5707455585127453
|
||||||
|
1.4045262222906436 0.7791907244572198
|
||||||
|
1.5929325305407531 0.9826261759781032
|
||||||
|
1.7488852611613968 1.1741909472739267
|
||||||
|
1.8692071144536306 1.3479449890688526
|
||||||
|
1.9514467156533182 1.498820420714969
|
||||||
|
1.993928557963668 1.6225974550271438
|
||||||
|
1.9957871384579535 1.7158948758848462
|
||||||
|
1.9569845913853061 1.7761673047599613
|
||||||
|
1.8783114596277994 1.801703343476921
|
||||||
|
1.7613705885915596 1.7916201547555806
|
||||||
|
1.6085444706693701 1.745851233734028
|
||||||
|
1.4229467055816887 1.6651251016959432
|
||||||
|
1.2083585655177917 1.5509334676514053
|
||||||
|
0.9691519574658317 1.405488090105012
|
||||||
|
0.7102003522571565 1.2316661556430482
|
||||||
|
0.4367794950101486 1.0329444904848233
|
||||||
|
0.1544599198472869 0.8133233478254392
|
||||||
|
-0.1310065412654169 0.5772408755527252
|
||||||
|
-0.4138039433467995 0.329479670827844
|
||||||
|
-0.6881707194341071 0.07506707326235623
|
||||||
|
-0.9485170637471333 -0.18082896099001616
|
||||||
|
-1.1895388154794926 -0.43300642461238525
|
||||||
|
-1.4063255230079892 -0.6763361992112862
|
||||||
|
-1.5944604868761643 -0.9058672711275058
|
||||||
|
-1.7501107433283989 -1.116928139177729
|
||||||
|
-1.8701051551168981 -1.3052223931625213
|
||||||
|
-1.9519990186001612 -1.4669165495219314
|
||||||
|
-1.9941238708615385 -1.5987183798568332
|
||||||
|
-1.9956214821036073 -1.6979441554185268
|
||||||
|
-1.9564613407750173 -1.7625734517576495
|
||||||
|
-1.8774412751969445 -1.7912904076174732
|
||||||
|
-1.7601711990244597 -1.7835106054692198
|
||||||
|
-1.6070403117043117 -1.739393032027993
|
||||||
|
-1.4211684221699186 -1.6598368795634744
|
||||||
|
-1.206342387479247 -1.5464632565424175
|
||||||
|
-0.9669389613616545 -1.4015821827472266
|
||||||
|
-0.7078356245172404 -1.2281455431897301
|
||||||
|
-0.4343112133656951 -1.0296869607337213
|
||||||
|
-0.15193837178280983 -0.8102498134959935
|
||||||
|
0.13352998304311092 -0.5743048643612174
|
||||||
|
0.4162778675493755 -0.3266591813835692
|
||||||
|
0.6905447236185105 -0.07235820513304927
|
||||||
|
0.9507427811887152 0.18341704144739185
|
||||||
|
1.191570900570458 0.4354555062281584
|
||||||
|
1.4081225751051951 0.6786222734474175
|
||||||
|
1.595985893776254 0.9079631785296267
|
||||||
|
1.7513334271857646 1.1188057406936611
|
||||||
|
1.871000205607518 1.3068543569221254
|
||||||
|
1.9525482004315637 1.468277817799485
|
||||||
|
1.9943159952891567 1.5997873621719028
|
||||||
|
1.9954526348844288 1.6987036803500344
|
||||||
|
1.955934961914334 1.7630115007411093
|
||||||
|
1.8765680888634773 1.7914006477717013
|
||||||
|
1.7589689950617298 1.7832927345942085
|
||||||
|
1.6055335831896365 1.7388529467430653
|
||||||
|
1.4193878664052093 1.6589866766586012
|
||||||
|
1.2043242805801755 1.5453210776389947
|
||||||
|
0.964724419186966 1.4001719130259875
|
||||||
|
0.7054697649956605 1.2264963760184058
|
||||||
|
0.4318422372867545 1.027832841335493
|
||||||
|
0.14941658077906955 0.8082287761963871
|
||||||
|
-0.13605321131532275 0.5721582793184598
|
||||||
|
-0.4187511261515769 0.3244309279509506
|
||||||
|
-0.692917623668242 0.07009379004615243
|
||||||
|
-0.9529669784563898 -0.18567140207948313
|
||||||
|
-1.1936010804195147 -0.437653821664491
|
||||||
|
-1.4099173757088976 -0.6807197101755926
|
||||||
|
-1.5975087488020008 -0.9099169698321946
|
||||||
|
-1.7525533107785047 -1.1205760550687722
|
||||||
|
-1.8718922644943639 -1.3084051074251701
|
||||||
|
-1.9530942602694217 -1.469577395636233
|
||||||
|
-1.9945049309393286 -1.6008092794620068
|
||||||
|
-1.995280597070394 -1.6994271088641035
|
||||||
|
-1.9554054556449019 -1.7634216955593032
|
||||||
|
-1.8756919020235652 -1.7914892471753685
|
||||||
|
-1.7577639786256143 -1.78305793003793
|
||||||
|
-1.6040242875345 -1.7382995194120725
|
||||||
|
-1.4176050411345522 -1.6581258998426924
|
||||||
|
-1.2023042480473982 -1.5441704868938688
|
||||||
|
-0.9625083344826699 -1.398754948791069
|
||||||
|
-0.7031027774752642 -1.2248419059621178
|
||||||
|
-0.42937257072105733 -1.0259745721518527
|
||||||
|
-0.14689455086824513 -0.8062045668309509
|
||||||
|
0.13857622204758316 -0.5700093696113174
|
||||||
|
0.4212237151988264 -0.3222010984087815
|
||||||
|
0.6952894157891905 -0.06782846985928853
|
||||||
|
0.9551896519938152 0.18792606060398742
|
||||||
|
1.1956293517805443 0.43985188339812664
|
||||||
|
1.4117099219493288 0.6828163930359272
|
||||||
|
1.5990290495184591 0.9118695571565603
|
||||||
|
1.7537703921561092 1.1223447659064476
|
||||||
|
1.8727813303510932 1.309953907017609
|
||||||
|
1.9536371972406208 1.470874729573362
|
||||||
|
1.9946906775099587 1.6018287165575111
|
||||||
|
1.9951053689365787 1.700147879652278
|
||||||
|
1.9548728228133652 1.7638291154425498
|
||||||
|
1.8748127160781716 1.7915750156014552
|
||||||
@ -0,0 +1,421 @@
|
|||||||
|
# Отчёт по теле 7
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Пункт 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
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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)
|
||||||
|
>>> print(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]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.5. Функция, реализующая модель некоторого устройства
|
||||||
|
|
||||||
|
```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)
|
||||||
|
...
|
||||||
|
|
||||||
|
spsy
|
||||||
|
[0.0, 0.047619047619047616, 0.09297052154195011, 0.13616240146852393, 0.177297525208118, 0.21647383353154095, 0.25378460336337233, 0.2893186698698784, 0.3231606379713128, 0.35539108378220263, 0.38608674645924057, 0.4153207109135625, 0.4431625818224405, 0.46967864935470527, 0.4949320470044812, 0.5189829019090297, 0.5418884780085997, 0.5637033123891426, 0.5844793451325168, 0.6042660429833493, 0.6231105171269993, 0.6410576353590469, 0.6581501289133781, 0.6744286942032173, 0.6899320897173498, 0.7046972283022379, 0.7187592650497504, 0.7321516809997624, 0.7449063628569166, 0.7570536789113491, 0.768622551344142, 0.7796405250896592, 0.7901338334187231, 0.800127460398784, 0.8096452003797943, 0.8187097146474231, 0.8273425853784983, 0.8355643670271411, 0.8433946352639439, 0.8508520335847084, 0.8579543176997223, 0.8647183978092594, 0.8711603788659613, 0.8772955989199631, 0.88313866563806, 0.8887034910838667, 0.8940033248417778, 0.899050785563598, 0.9038578910129503, 0.9084360866790003, 0.9127962730276193, 0.9169488314548756, 0.9209036490046435, 0.9246701419091843, 0.9282572780087468, 0.9316735981035684, 0.9349272362891128, 0.9380259393229645, 0.94097708506949, 0.9437877000661808, 0.9464644762535056, 0.9490137869081006, 0.9514417018172386, 0.9537540017307035, 0.9559561921244795, 0.958053516309028, 0.96005096791336, 0.9619533027746285, 0.963765050261551, 0.9654905240586201, 0.9671338324367811, 0.9686988880350297, 0.9701894171762188, 0.971608968739256, 0.9729609226088152, 0.9742484977226811, 0.9754747597358867, 0.976642628319892, 0.9777548841141828, 0.9788141753468407, 0.9798230241398483, 0.9807838325141413, 0.981698888108706, 0.982570369627339, 0.9834003520260372, 0.9841908114533686, 0.9849436299555892, 0.9856605999577039, 0.9863434285311466, 0.9869937414582349, 0.9876130871030808, 0.9882029400981722, 0.988764704855402, 0.9892997189099068, 0.9898092561046732, 0.9902945296234982, 0.9907566948795221, 0.9911968522662116, 0.9916160497773444, 0.9920152855022327, 0.9923955100021263]
|
||||||
|
>>> from pylab import *
|
||||||
|
>>> plot(sps, spsy)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x10ca10550>]
|
||||||
|
>>> show()
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Пункт 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__
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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)
|
||||||
|
>>> print(zz)
|
||||||
|
-2.3318122278318336
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2. Обязательные и необязательные аргументы
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
|
||||||
|
... """Вычисление логистической функции"""
|
||||||
|
... import math
|
||||||
|
... return b/(1+math.exp(-a))
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> logistfun(0.7)
|
||||||
|
0.6681877721681662
|
||||||
|
>>> logistfun(0.7,2)
|
||||||
|
1.3363755443363323
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3. Возможность обращения к функции с произвольным (непозиционным) расположением аргументов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> logistfun(b=0.5,a=0.8)
|
||||||
|
0.34498724056380625
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> b1234=[b1,b2,b3,b4]
|
||||||
|
>>> qq=slozh(*b1234)
|
||||||
|
>>> print(qq)
|
||||||
|
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.5. Пример со значениями аргументов функции, содержащимися в словаре
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> dic4={"a1":1,"a2":2,"a3":3,"a4":4}
|
||||||
|
>>> qqq=slozh(**dic4)
|
||||||
|
>>> print(qqq)
|
||||||
|
10
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.6. Смешанные ссылки
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> e1=(-1,6);dd2={'a3':3,'a4':9}
|
||||||
|
>>> qqqq=slozh(*e1,**dd2)
|
||||||
|
>>> print(qqqq)
|
||||||
|
17
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.7. Переменное число аргументов у функции
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> def func4(*kort7):
|
||||||
|
... """Произвольное число аргументов в составе кортежа"""
|
||||||
|
... smm=0
|
||||||
|
... for elt in kort7:
|
||||||
|
... smm+=elt
|
||||||
|
... return smm
|
||||||
|
...
|
||||||
|
>>> func4(-1,2)
|
||||||
|
1
|
||||||
|
>>> func4(-1,2,0,3,6)
|
||||||
|
10
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.8. Комбинация аргументов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> def func4(a,b=7,*kort7):
|
||||||
|
... """Кортеж - сборка аргументов - должен быть последним!"""
|
||||||
|
... smm=0
|
||||||
|
... for elt in kort7:
|
||||||
|
... smm+=elt
|
||||||
|
... return a*smm+b
|
||||||
|
...
|
||||||
|
>>> func4(-1,2,0,3,6)
|
||||||
|
-7
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.9. Изменение значений объектов, используемых в качестве аргументов функции
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> func4(-1,2,0,3,6)
|
||||||
|
-7
|
||||||
|
>>> 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]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 5. Специальные типы пользовательских функций
|
||||||
|
|
||||||
|
### 5.1. Анонимные функции
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> 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)
|
||||||
|
>>> alp
|
||||||
|
<generator object func5 at 0x000001BD5FCACAC0>
|
||||||
|
>>> type(alp)
|
||||||
|
<class 'generator'>
|
||||||
|
>>> alp=func5(7,3)
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
1
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
7
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 6. Локализация объектов в функциях
|
||||||
|
|
||||||
|
### 6.1. Примеры на локализацию объектов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> def func7(arg):
|
||||||
|
... loc1=15
|
||||||
|
... glb=8
|
||||||
|
... return loc1*arg
|
||||||
|
...
|
||||||
|
>>> res = func7(glb)
|
||||||
|
>>> print(res)
|
||||||
|
150
|
||||||
|
>>> print(glb)
|
||||||
|
10
|
||||||
|
>>> def func8(arg):
|
||||||
|
... loc1=15
|
||||||
|
... print(glb)
|
||||||
|
... glb=8
|
||||||
|
... return loc1*arg
|
||||||
|
...
|
||||||
|
>>> res=func8(glb)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#114>", line 1, in <module>
|
||||||
|
res=func8(glb)
|
||||||
|
File "<pyshell#113>", 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
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.2. Выявление локализации объекта с помощью функций
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> globals().keys()
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'inerz', 'sravnenie', 'logistfun', 'slozh', 'fnkt', 'v', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||||
|
>>> globals().values()
|
||||||
|
dict_values(['__main__', None, None, <class '_frozen_importlib.BuiltinImporter'>, None, {}, <module 'builtins' (built-in)>, <function inerz at 0x000001BD5FCDDC60>, <function sravnenie at 0x000001BD5FCDDBC0>, <function logistfun at 0x000001BD5FCDE160>, <function slozh at 0x000001BD5FCDDDA0>, <function sravnenie at 0x000001BD5FCDDBC0>, 16, 8, <function func at 0x000001BD5FCDDEE0>, <function fun_arg at 0x000001BD5FCDE020>, -2.3318122278318336, [1, 2], [-1, -2], [0, 2], [-1, -1], [[1, 2], [-1, -2], [0, 2], [-1, -1]], [1, 2, -1, -2, 0, 2, -1, -1], {'a1': 1, 'a2': 2, 'a3': 3, 'a4': 4}, 10, (-1, 6), {'a3': 3, 'a4': 9}, 17, <function func4 at 0x000001BD5FCF0AE0>, 90, <function func3 at 0x000001BD5FCDEF20>, [1, 99, 3, 4], <function func2 at 0x000001BD5FCF09A0>, <function <lambda> at 0x000001BD5FCF0E00>, <module 'math' (built-in)>, <function <lambda> at 0x000001BD5FCF0B80>, <function <lambda> at 0x000001BD5FCF0C20>, <function func5 at 0x000001BD5FCF0F40>, 7, <generator object func5 at 0x000001BD5FCAC740>, 8, <function func7 at 0x000001BD5FCF0CC0>, 165, <function func8 at 0x000001BD5FCF1080>])
|
||||||
|
>>> locals().keys()
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'inerz', 'sravnenie', 'logistfun', 'slozh', 'fnkt', 'v', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||||
|
>>> globals().keys()==locals().keys()
|
||||||
|
True
|
||||||
|
>>> 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__', 'inerz', 'sravnenie', 'logistfun', 'slozh', 'fnkt', 'v', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||||
|
dict_keys(['arg', 'loc1', 'glb'])
|
||||||
|
>>> 'glb' in globals().keys()
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.3. Локализация объектов при использовании вложенных функций
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||||
|
k1,T,k2,Xm,A,F,N=8,5,3,10,2,0.5,1000
|
||||||
|
>>> 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])
|
||||||
|
>>> vhod=[]
|
||||||
|
>>> for i in range(N):
|
||||||
|
... vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> vhod
|
||||||
|
## Огромное страшное полотно текста
|
||||||
|
|
||||||
|
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,0 +1,52 @@
|
|||||||
|
# Общее контрольное задание по теме 7
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Задание 1
|
||||||
|
|
||||||
|
Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т
|
||||||
|
|
||||||
|
```py
|
||||||
|
from math import *
|
||||||
|
def scary(t, T):
|
||||||
|
y = exp(t-T)
|
||||||
|
return y
|
||||||
|
|
||||||
|
yt = scary(5,2)
|
||||||
|
print(yt)
|
||||||
|
20.085536923187668
|
||||||
|
```
|
||||||
|
|
||||||
|
## Задание 2
|
||||||
|
|
||||||
|
Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
|
||||||
|
|
||||||
|
```py
|
||||||
|
from pylab import *
|
||||||
|
from random import *
|
||||||
|
|
||||||
|
def what(sps, n):
|
||||||
|
hist(sps, bins = n)
|
||||||
|
show()
|
||||||
|
|
||||||
|
|
||||||
|
a = []
|
||||||
|
for j in range(1000):
|
||||||
|
a.append(gauss(0,1))
|
||||||
|
|
||||||
|
what(a, 10)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Задание 3
|
||||||
|
|
||||||
|
Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
|
||||||
|
Y=b1+b2*X
|
||||||
|
и имеющую аргументы b1, b2 и X.
|
||||||
|
|
||||||
|
```py
|
||||||
|
yt = lambda b1, b2, x: b1+b2*x
|
||||||
|
print(yt(1, 2, 5))
|
||||||
|
11
|
||||||
|
```
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 7
|
||||||
|
|
||||||
|
Гордиевских ДанилА-03-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
||||||
|
|
||||||
|
```python
|
||||||
|
import os
|
||||||
|
from math import *
|
||||||
|
|
||||||
|
os.chdir(r"C:\Users\u202-09\Desktop\Новая папка\1\TEMA7")
|
||||||
|
f = open("output.txt","w")
|
||||||
|
|
||||||
|
t = 3
|
||||||
|
yt = 0
|
||||||
|
out = []
|
||||||
|
inp = []
|
||||||
|
|
||||||
|
for i in range(100):
|
||||||
|
inp.append(2*sin(i/7+0.35))
|
||||||
|
out.append(fun(inp[i],yt,t))
|
||||||
|
yt = out[i]
|
||||||
|
|
||||||
|
f.write("X\tY\n")
|
||||||
|
for i in range(len(out)):
|
||||||
|
f.write(str(inp[i])+"\t"+str(out[i])+"\n")
|
||||||
|
|
||||||
|
```
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
import MM2
|
||||||
|
print('y=',MM2.vyhod)
|
||||||
@ -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):
|
||||||
|
ytt = 0
|
||||||
|
if xtt<gran and xtt>(-gran):
|
||||||
|
ytt=0
|
||||||
|
elif xtt>=gran:
|
||||||
|
ytt=xtt-gran
|
||||||
|
elif xtt<=(-gran):
|
||||||
|
ytt=xtt+gran
|
||||||
|
return ytt
|
||||||
@ -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)
|
||||||
@ -0,0 +1,300 @@
|
|||||||
|
# Отчёт по теме 8
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Настройка окружения
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import os,sys,importlib
|
||||||
|
>>> os.chdir(r"/Users/technetium/Yandex.Disk.localized/5 семестр/ПОАС/python-labs/TEMA8")
|
||||||
|
>>> os.getcwd()
|
||||||
|
'/Users/technetium/Yandex.Disk.localized/5 семестр/ПОАС/python-labs/TEMA8'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 2
|
||||||
|
|
||||||
|
### Пункт 2.1. Запуск модуля на исполнение путём его импорта
|
||||||
|
|
||||||
|
Создан файл mod1.py со следующим содержимым
|
||||||
|
|
||||||
|
```py
|
||||||
|
perm1=input('Mod1:Введите значение = ')
|
||||||
|
print('Mod1:Значение perm1=',perm1)
|
||||||
|
```
|
||||||
|
|
||||||
|
Результат вызова функции
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import Mod1
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
>>> Mod1.perm1
|
||||||
|
'5'
|
||||||
|
```
|
||||||
|
|
||||||
|
Попытка повторного вызова функции
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import Mod1
|
||||||
|
>>> importlib.reload(Mod1)
|
||||||
|
Mod1:Введите значение = 3
|
||||||
|
Mod1:Значение perm1= 3
|
||||||
|
<module 'Mod1' from '/Users/technetium/Yandex.Disk.localized/5 семестр/ПОАС/python-labs/TEMA8/Mod1.py'>
|
||||||
|
>>> Mod1.perm1
|
||||||
|
'3'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules
|
||||||
|
|
||||||
|
```>>> print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', '__future__', '__main__', '_abc', '_ast', '_codecs', '_collections', '_collections_abc', '_colorize', '_curses', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_imp', '_io', '_opcode', '_opcode_metadata', '_operator', '_pyrepl', '_pyrepl.base_eventqueue', '_pyrepl.commands', '_pyrepl.completing_reader', '_pyrepl.console', '_pyrepl.curses', '_pyrepl.fancy_termios', '_pyrepl.historical_reader', '_pyrepl.input', '_pyrepl.keymap', '_pyrepl.main', '_pyrepl.reader', '_pyrepl.readline', '_pyrepl.simple_interact', '_pyrepl.trace', '_pyrepl.types', '_pyrepl.unix_console', '_pyrepl.unix_eventqueue', '_pyrepl.utils', '_signal', '_sitebuiltins', '_sre', '_stat', '_struct', '_suggestions', '_thread', '_tokenize', '_warnings', '_weakref', '_weakrefset', 'abc', 'ast', 'atexit', 'builtins', 'code', 'codecs', 'codeop', 'collections', 'collections.abc', 'contextlib', 'copy', 'copyreg', 'dataclasses', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fcntl', 'functools', 'genericpath', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'opcode', 'operator', 'os', 'os.path', 'platform', 'posix', 'posixpath', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'readline', 'reprlib', 'rlcompleter', 'runpy', 'select', 'signal', 'site', 'stat', 'struct', 'sys', 'termios', 'textwrap', 'time', 'token', 'tokenize', 'traceback', 'types', 'unicodedata', 'warnings', 'weakref', 'zipimport']
|
||||||
|
|
||||||
|
>>> sys.modules.pop('Mod1')
|
||||||
|
<module 'Mod1' from '/Users/technetium/Yandex.Disk.localized/5 семестр/ПОАС/python-labs/TEMA8/Mod1.py'>
|
||||||
|
>>> import Mod1
|
||||||
|
Mod1:Введите значение = 9
|
||||||
|
Mod1:Значение perm1= 9
|
||||||
|
>>> Mod1.perm1
|
||||||
|
'9'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.3. Запуск модуля с помощью exec()
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 8
|
||||||
|
Mod1:Значение perm1= 8
|
||||||
|
>>> perm1
|
||||||
|
'8'
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 888
|
||||||
|
Mod1:Значение perm1= 888
|
||||||
|
>>> perm1
|
||||||
|
'888'
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 7777
|
||||||
|
Mod1:Значение perm1= 7777
|
||||||
|
>>> perm1
|
||||||
|
'7777'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.4. Использование инструкции from … import …
|
||||||
|
|
||||||
|
Пример 1
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> from Mod1 import perm1
|
||||||
|
>>> perm1
|
||||||
|
'9'
|
||||||
|
```
|
||||||
|
|
||||||
|
Пример 2
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> from Mod2 import beta
|
||||||
|
>>> g = beta(2);g
|
||||||
|
****BETA****
|
||||||
|
535.4916555247646
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', 'Mod2', '__future__', '__main__', '_abc', '_ast', '_codecs', '_collections', '_collections_abc', '_colorize', '_curses', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_imp', '_io', '_opcode', '_opcode_metadata', '_operator', '_pyrepl', '_pyrepl.base_eventqueue', '_pyrepl.commands', '_pyrepl.completing_reader', '_pyrepl.console', '_pyrepl.curses', '_pyrepl.fancy_termios', '_pyrepl.historical_reader', '_pyrepl.input', '_pyrepl.keymap', '_pyrepl.main', '_pyrepl.reader', '_pyrepl.readline', '_pyrepl.simple_interact', '_pyrepl.trace', '_pyrepl.types', '_pyrepl.unix_console', '_pyrepl.unix_eventqueue', '_pyrepl.utils', '_signal', '_sitebuiltins', '_sre', '_stat', '_struct', '_suggestions', '_thread', '_tokenize', '_warnings', '_weakref', '_weakrefset', 'abc', 'ast', 'atexit', 'builtins', 'code', 'codecs', 'codeop', 'collections', 'collections.abc', 'contextlib', 'copy', 'copyreg', 'dataclasses', 'dis', 'encodings', 'encodings.aliases', 'encodings.utf_8', 'enum', 'errno', 'fcntl', 'functools', 'genericpath', 'importlib', 'importlib._abc', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'opcode', 'operator', 'os', 'os.path', 'platform', 'posix', 'posixpath', 're', 're._casefix', 're._compiler', 're._constants', 're._parser', 'readline', 'reprlib', 'rlcompleter', 'runpy', 'select', 'signal', 'site', 'stat', 'struct', 'sys', 'termios', 'textwrap', 'time', 'token', 'tokenize', 'traceback', 'types', 'unicodedata', 'warnings', 'weakref', 'zipimport']
|
||||||
|
>>> alpha()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<python-input-25>", line 1, in <module>
|
||||||
|
alpha()
|
||||||
|
^^^^^
|
||||||
|
NameError: name 'alpha' is not defined
|
||||||
|
>>> from Mod2 import alpha as al
|
||||||
|
>>> al()
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=5
|
||||||
|
'5'
|
||||||
|
>>> del al,beta
|
||||||
|
>>> from Mod2 import alpha as al, beta as bt
|
||||||
|
>>> del al,bt
|
||||||
|
>>> from Mod2 import *
|
||||||
|
>>> tt=alpha()
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=0.12
|
||||||
|
>>> uu = beta(float(tt))
|
||||||
|
****BETA****
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3. Многомодульные программы
|
||||||
|
|
||||||
|
### Пункт 3.1. Простая многомодульная программа
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import Mod0
|
||||||
|
Mod1:Введите значение = 13
|
||||||
|
Mod1:Значение perm1= 13
|
||||||
|
perm1= 13
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=22
|
||||||
|
tt= 22
|
||||||
|
****BETA****
|
||||||
|
qq= 1.038197035676497e+30
|
||||||
|
>>> Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
|
||||||
|
'13'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 3.2. Сложная многомодульная программа
|
||||||
|
|
||||||
|
[Содержимое файла mm0](MM0.py)
|
||||||
|
|
||||||
|
[Содержимое файла mm1](MM1.py)
|
||||||
|
|
||||||
|
[Содержимое файла mm3](MM2.py)
|
||||||
|
|
||||||
|
Проверка программы
|
||||||
|
|
||||||
|
```py
|
||||||
|
k1,T,k2,Xm,A,F,N=9,6,4,11,3,0.5,150
|
||||||
|
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, ... , 9.174885290878997e+22, -2.3735104205090632e+23, 2.945671256147081e+23, 4.958412951209005e+22, -1.1163182444540476e+24]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 3.3. Действие объектов в модулях
|
||||||
|
|
||||||
|
Обращение в функции alpha к функции beta:
|
||||||
|
|
||||||
|
```py
|
||||||
|
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)
|
||||||
|
```
|
||||||
|
|
||||||
|
```py
|
||||||
|
Mod1: Введите значение = 8
|
||||||
|
Mod1: Значение perm1 = 8
|
||||||
|
perm1 = 8
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=4
|
||||||
|
tt = 4
|
||||||
|
qq = 286751.31313665316
|
||||||
|
```
|
||||||
|
|
||||||
|
Обращение в функции beta к функции alpha:
|
||||||
|
|
||||||
|
```py
|
||||||
|
def alpha():
|
||||||
|
print('****ALPHA****')
|
||||||
|
t=input('Значение t=')
|
||||||
|
return t
|
||||||
|
|
||||||
|
def beta(q):
|
||||||
|
import math
|
||||||
|
expi = int(alpha())*math.pi
|
||||||
|
return math.exp(expi)
|
||||||
|
```
|
||||||
|
|
||||||
|
```py
|
||||||
|
Mod1: Введите значение = 8
|
||||||
|
Mod1: Значение perm1 = 8
|
||||||
|
perm1 = 8
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=4
|
||||||
|
tt = 4
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=4
|
||||||
|
qq = 286751.31313665316
|
||||||
|
```
|
||||||
|
|
||||||
|
Попробуйте отобразить на экране в модуле Mod0 значения объектов t и expi
|
||||||
|
|
||||||
|
Модифицированный mod0.py
|
||||||
|
|
||||||
|
```py
|
||||||
|
#Модуль Mod0
|
||||||
|
import math
|
||||||
|
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 = ", tt)
|
||||||
|
print("expi = ", math.log(qq))
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод
|
||||||
|
|
||||||
|
```py
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
perm1= 5
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
tt= 3
|
||||||
|
****BETA****
|
||||||
|
qq= 12391.647807916694
|
||||||
|
t = 3
|
||||||
|
expi = 9.42477796076938
|
||||||
|
```
|
||||||
|
|
||||||
|
Попробуйте в модуле Mod0 увеличить в 3 раза значение объекта perm1 и отобразить его после это-го на экране
|
||||||
|
|
||||||
|
Модифицированный Mod0.py
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
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 = ", tt)
|
||||||
|
print("expi = ", math.log(qq))
|
||||||
|
print('3 * perm1=',3*int(Mod1.perm1))
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод
|
||||||
|
|
||||||
|
```py
|
||||||
|
Mod1:Введите значение = 2
|
||||||
|
Mod1:Значение perm1= 2
|
||||||
|
perm1= 2
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=2
|
||||||
|
tt= 2
|
||||||
|
****BETA****
|
||||||
|
qq= 535.4916555247646
|
||||||
|
t = 2
|
||||||
|
expi = 6.283185307179586
|
||||||
|
3 * perm1= 6
|
||||||
|
```
|
||||||
|
|
||||||
|
Попробуйте в командной строке (в главном модуле) увеличить в 2 раза значения объектов perm1, tt, qq
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import Mod0
|
||||||
|
Mod1:Введите значение = 3
|
||||||
|
Mod1:Значение perm1= 3
|
||||||
|
perm1= 3
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
tt= 3
|
||||||
|
****BETA****
|
||||||
|
qq= 12391.647807916694
|
||||||
|
t = 3
|
||||||
|
expi = 9.42477796076938
|
||||||
|
3 * perm1= 9
|
||||||
|
>>> print("2*perm1 = ", 2*int(Mod0.Mod1.perm1))
|
||||||
|
2*perm1 = 6
|
||||||
|
>>> print("2*tt = ", 2*int(Mod0.tt))
|
||||||
|
2*tt = 6
|
||||||
|
>>> print("2*qq = ", 2*int(Mod0.qq))
|
||||||
|
2*qq = 24782
|
||||||
|
```
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
1,2,3,4,5,6
|
||||||
|
я,помню,чудное,мгновенье
|
||||||
|
for,i,in,range,5
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
# Общее контрольное задание по теме 8
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте программу, состоящую из трех модулей:
|
||||||
|
|
||||||
|
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу.
|
||||||
|
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
|
||||||
|
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
[Содержимое модуля 1](task1.py)
|
||||||
|
|
||||||
|
[Содержимое модуля 2](task2.py)
|
||||||
|
|
||||||
|
[Содержимое модуля 3](task3.py)
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
def readtextdata(nam):
|
||||||
|
f = open(nam)
|
||||||
|
aa = f.read()
|
||||||
|
aa = aa.replace("\n", " ")
|
||||||
|
aa = aa.split(" ")
|
||||||
|
aa = [int(item) for item in aa]
|
||||||
|
return aa
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
def correl(list1, list2):
|
||||||
|
df = pd.DataFrame({
|
||||||
|
'col1': list1,
|
||||||
|
'col2': list2
|
||||||
|
})
|
||||||
|
correlation = df['col1'].corr(df['col2'])
|
||||||
|
return correlation
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
from task1 import *
|
||||||
|
from task2 import *
|
||||||
|
|
||||||
|
name1 = input("Введите имя первого файла: ")
|
||||||
|
name2 = input("Введите имя второго файла: ")
|
||||||
|
|
||||||
|
arr1 = readtextdata(name1)
|
||||||
|
arr2 = readtextdata(name2)
|
||||||
|
|
||||||
|
print(round(correl(arr1, arr2), 3))
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
# Индивидуальное задание по модулю 8
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию с аргументом – именем текстового файла с записанным в него объектом – совокупностью строк, чисел, списков и т.д. В каждой строке данные разделяются запятыми. Функция должна считывать объект из файла, формировать и возвращать список, в котором каждый элемент – это список элементов из соответствующей строки файла. Сформированный список должен возвращаться в качестве результата функции. Проверить функцию на примере нерегулярной числовой матрицы.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
|
||||||
|
[Содержимое модуля 1](test1.py)
|
||||||
|
|
||||||
|
[Содержимое модуля 2](test2.py)
|
||||||
|
|
||||||
|
Содержимое файла:
|
||||||
|
|
||||||
|
```py
|
||||||
|
1,2,3,4,5,6
|
||||||
|
я,помню,чудное,мгновенье
|
||||||
|
for,i,in,range,5
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод:
|
||||||
|
|
||||||
|
```py
|
||||||
|
[['1', '2', '3', '4', '5', '6'], ['я', 'помню', 'чудное', 'мгновенье'], ['for', 'i', 'in', 'range', '5']]
|
||||||
|
```
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
def scary_function(filename):
|
||||||
|
f = open(filename, "r", encoding='utf-8')
|
||||||
|
res = []
|
||||||
|
result = []
|
||||||
|
res.append(f.readlines())
|
||||||
|
for i in res[0]:
|
||||||
|
result.append(i.replace('\n', '').split(','))
|
||||||
|
|
||||||
|
return result
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
from test1 import *
|
||||||
|
|
||||||
|
print(scary_function('scary_file.txt'))
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
1 3 5 66
|
||||||
|
7 5 55 44 32 2
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
1 3 5 66
|
||||||
|
7 0 44 44 20 2
|
||||||
|
После Ширина: | Высота: | Размер: 14 KiB |
|
После Ширина: | Высота: | Размер: 16 KiB |
|
После Ширина: | Высота: | Размер: 23 KiB |
|
После Ширина: | Высота: | Размер: 24 KiB |
@ -0,0 +1,5 @@
|
|||||||
|
import pylab
|
||||||
|
import M2
|
||||||
|
|
||||||
|
pylab.plot(M2.SS3)
|
||||||
|
pylab.show()
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
def fun(name, TAU, K):
|
||||||
|
sps2 = []
|
||||||
|
f = open(name, "r")
|
||||||
|
sps1 = f.readlines()
|
||||||
|
for i in range(len(sps1)):
|
||||||
|
sps1[i] = float(sps1[i].replace("\n", ""))
|
||||||
|
if i < TAU:
|
||||||
|
sps2.append(0)
|
||||||
|
else:
|
||||||
|
sps2.append(K * sps1[i-TAU])
|
||||||
|
return([sps1,sps2])
|
||||||
|
|
||||||
|
|
||||||
|
def fun2(SS1, SS2, TT):
|
||||||
|
D = 0
|
||||||
|
N = len(SS1)
|
||||||
|
SR1 = sum(SS1)/len(SS1)
|
||||||
|
SR2 = sum(SS2)/len(SS2)
|
||||||
|
for i in range(TT, len(SS1)):
|
||||||
|
D+=(SS1[i]-SR1)*(SS2[i-TT]-SR2)
|
||||||
|
for i in range(len(SS1)):
|
||||||
|
D+=(SS1[i]-SR1)*(SS2[i-TT]-SR2)
|
||||||
|
for i in range(len(SS1)):
|
||||||
|
D+=(SS1[N-1]-SR1)*(SS2[N-1-TT]-SR2)
|
||||||
|
return(D)
|
||||||
|
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
import random
|
||||||
|
import M1
|
||||||
|
while True:
|
||||||
|
name = input("Введите название текстового файла: ")
|
||||||
|
if os.path.exists(name):
|
||||||
|
print("Файл сущетсвует")
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print("Файл НЕ сущетсвует, повторите PopITку")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
TAU = int(input("Введите значение TAU >= 0: "))
|
||||||
|
if TAU >= 0:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print("Сказали же, TAU больше нуля! Мне казалось, что все это поняли")
|
||||||
|
|
||||||
|
SS3 = []
|
||||||
|
k = random.randint(2,7)
|
||||||
|
|
||||||
|
res = M1.fun(name, TAU, k)
|
||||||
|
|
||||||
|
for TT in range(TAU+5):
|
||||||
|
SS3.append(M1.fun2(res[0], res[1], TT))
|
||||||
|
|
||||||
|
pickle.dump(SS3, open("Res11.bin", "wb"))
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
class Class1:
|
||||||
|
def zad_zn(self,znach):
|
||||||
|
self.data=znach
|
||||||
|
def otobrazh(self):
|
||||||
|
print(self.data)
|
||||||
|
|
||||||
|
|
||||||
|
class Class2(Class1):
|
||||||
|
def otobrazh(self):
|
||||||
|
print('значение=',self.data)
|
||||||
|
|
||||||
|
def otobrazh(objekt):
|
||||||
|
print('значение объекта=',objekt)
|
||||||
@ -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])
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
-0.809
|
||||||
|
0.203
|
||||||
|
1.281
|
||||||
|
0.287
|
||||||
|
-0.181
|
||||||
|
0.297
|
||||||
|
0.616
|
||||||
|
-2.017
|
||||||
|
1.034
|
||||||
|
0.166
|
||||||
|
0.062
|
||||||
|
0.121
|
||||||
|
0.077
|
||||||
|
-0.716
|
||||||
|
0.184
|
||||||
|
-0.03
|
||||||
|
-0.846
|
||||||
|
0.052
|
||||||
|
0.51
|
||||||
|
-2.679
|
||||||
|
0.115
|
||||||
|
1.64
|
||||||
|
1.424
|
||||||
|
-0.635
|
||||||
|
-0.134
|
||||||
|
-0.308
|
||||||
|
0.809
|
||||||
|
-1.251
|
||||||
|
-0.188
|
||||||
|
-2.35
|
||||||
|
-0.221
|
||||||
|
-0.329
|
||||||
|
0.184
|
||||||
|
-0.666
|
||||||
|
-0.276
|
||||||
|
-0.593
|
||||||
|
1.266
|
||||||
|
0.56
|
||||||
|
0.96
|
||||||
|
0.47
|
||||||
|
-0.862
|
||||||
|
-0.103
|
||||||
|
0.981
|
||||||
|
0.638
|
||||||
|
0.344
|
||||||
|
0.555
|
||||||
|
-0.137
|
||||||
|
0.337
|
||||||
|
0.561
|
||||||
|
-1.075
|
||||||
@ -0,0 +1,263 @@
|
|||||||
|
# Отчёт по теме 9
|
||||||
|
|
||||||
|
Гордиевских Данил А-03-23
|
||||||
|
|
||||||
|
## Пункт 2
|
||||||
|
|
||||||
|
### Пункт 2.1. Создание автономного класса
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class1:
|
||||||
|
... def zad_zn(self,znach):
|
||||||
|
... self.data=znach
|
||||||
|
... def otobrazh(self):
|
||||||
|
... print(self.data)
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> z1=Class1()
|
||||||
|
>>> z2=Class1()
|
||||||
|
>>> z1.zad_zn('экз.класса 1')
|
||||||
|
>>> z2.zad_zn(-632.453)
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
экз.класса 1
|
||||||
|
>>> z2.otobrazh()
|
||||||
|
-632.453
|
||||||
|
>>> z1.data='Новое значение атрибута у экз.1'
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
Новое значение атрибута у экз.1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт 2.2. Создание класса-наследника
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class2(Class1):
|
||||||
|
... def otobrazh(self):
|
||||||
|
... print('значение=',self.data)
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> z3=Class2()
|
||||||
|
>>> dir(z3)
|
||||||
|
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_zn']
|
||||||
|
>>> z3.zad_zn('Совсем новое')
|
||||||
|
>>> z3.otobrazh()
|
||||||
|
значение= Совсем новое
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
Новое значение атрибута у экз.1
|
||||||
|
>>> del z1,z2,z3
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 3
|
||||||
|
|
||||||
|
Использование классов, содержащихся в модулях
|
||||||
|
|
||||||
|
Содержимое файла Mod3.py
|
||||||
|
|
||||||
|
```py
|
||||||
|
class Class1:
|
||||||
|
def zad_zn(self,znach):
|
||||||
|
self.data=znach
|
||||||
|
def otobrazh(self):
|
||||||
|
print(self.data)
|
||||||
|
|
||||||
|
|
||||||
|
class Class2(Class1):
|
||||||
|
def otobrazh(self):
|
||||||
|
print('значение=',self.data)
|
||||||
|
|
||||||
|
|
||||||
|
def otobrazh(objekt):
|
||||||
|
print('значение объекта=',objekt)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> from Mod3 import Class1
|
||||||
|
>>> z4 = Class1()
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#36>", line 1, in <module>
|
||||||
|
z4.otobrazh()
|
||||||
|
File "C:\Users\u202-14\Desktop\poas\TEMA9\Mod3.py", line 5, in otobrazh
|
||||||
|
print(self.data)
|
||||||
|
AttributeError: 'Class1' object has no attribute 'data'
|
||||||
|
>>> from Mod3 import Class1
|
||||||
|
>>> z4=Class1()
|
||||||
|
>>> z4.data='значение данного data у экз.4'
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
значение данного data у экз.4
|
||||||
|
>>> del z4
|
||||||
|
>>> import Mod3
|
||||||
|
>>> z4=Mod3.Class2()
|
||||||
|
>>> z4.zad_zn('Класс из модуля')
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
значение= Класс из модуля
|
||||||
|
>>> Mod3.otobrazh('Объект')
|
||||||
|
значение объекта= Объект
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 4. Использование специальных методов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class3(Class2):
|
||||||
|
... 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
|
||||||
|
...
|
||||||
|
...
|
||||||
|
>>> z5=Class3('abc')
|
||||||
|
>>> z5.otobrazh()
|
||||||
|
значение= abc
|
||||||
|
>>> z6=z5+'def'
|
||||||
|
>>> z6.otobrazh()
|
||||||
|
значение= abcdef
|
||||||
|
>>> z6.zad_dr_zn(3)
|
||||||
|
>>> z6.otobrazh()
|
||||||
|
значение= abcdefabcdefabcdef
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 5. Присоединение атрибутов к классу
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> dir(Class3)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||||
|
>>> Class3.fio='Иванов И.И.'
|
||||||
|
>>> dir(Class3)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||||
|
>>> z7=Class3(123)
|
||||||
|
>>> dir(z7)==dir(Class3)
|
||||||
|
False
|
||||||
|
>>> dir(z7)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||||
|
>>> z7.rozden='1987'
|
||||||
|
>>> dir(z7)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'data', 'fio', 'otobrazh', 'rozden', 'zad_dr_zn', 'zad_zn']
|
||||||
|
>>> dir(Class3)
|
||||||
|
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'fio', 'otobrazh', 'zad_dr_zn', 'zad_zn']
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 6. Выявление родительских классов
|
||||||
|
|
||||||
|
```py
|
||||||
|
Class3.__bases__
|
||||||
|
(<class '__main__.Class2'>,)
|
||||||
|
Class2.__bases__
|
||||||
|
(<class '__main__.Class1'>,)
|
||||||
|
Class1.__bases__
|
||||||
|
(<class 'object'>,)
|
||||||
|
object.__bases__
|
||||||
|
()
|
||||||
|
Class3.__mro__
|
||||||
|
(<class '__main__.Class3'>, <class '__main__.Class2'>, <class '__main__.Class1'>, <class 'object'>)
|
||||||
|
ZeroDivisionError.__mro__
|
||||||
|
(<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 7. Создание свойства класса
|
||||||
|
|
||||||
|
```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)
|
||||||
|
|
||||||
|
|
||||||
|
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#123>", line 1, in <module>
|
||||||
|
exempl.svojstvo
|
||||||
|
File "<pyshell#117>", line 5, in chten
|
||||||
|
return sam.__prm
|
||||||
|
AttributeError: 'Class4' object has no attribute '_Class4__prm'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пункт 8. пример представления в виде класса модели системы автоматического регулирования (САР), состоящей из последовательного соединения усилителя и двух инерционных звеньев, охваченных отрицательной обратной связью с усилителем.
|
||||||
|
|
||||||
|
Содержимое модуля SAU.py
|
||||||
|
|
||||||
|
```py
|
||||||
|
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])
|
||||||
|
```
|
||||||
|
|
||||||
|
Содержимое файла starter.py
|
||||||
|
|
||||||
|
```py
|
||||||
|
prm=[2.5,4,1.3,0.8]
|
||||||
|
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()
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод:
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
prm=[2.5,4,1.3,0.8]
|
||||||
|
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()
|
||||||
@ -0,0 +1,116 @@
|
|||||||
|
# Защита модуля 3
|
||||||
|
|
||||||
|
Гордиевских Данил, А-03-23
|
||||||
|
|
||||||
|
## Вариант 3 задание
|
||||||
|
|
||||||
|
1) Создайте модуль М1, содержащий две функции:
|
||||||
|
|
||||||
|
- функция 1: аргументы - имя текстового файла, содержащего некоторое число отсчетов сигнала, целочисленный параметр TAU и числовой параметр К; в функции считывается сигнал из файла в список SPS1 и формируется второй список SPS2, элементы которого определяются по правилу: первые (TAU-1) элементов равны 0, а последующие определяются по формуле: SPS2[i]=K*SPS1[i-TAU]; оба списка возвращаются в качестве результатов работы функции;
|
||||||
|
|
||||||
|
- функция 2: аргументы - два числовых списка SS1 и SS2, а также целочисленный параметр ТТ; в функции рассчитывается и возвращается значение
|
||||||
|
|
||||||
|
D= (SS1[TT]-SR1)*(SS2[0] - SR2)+ (SS1[TT+1]-SR1)*(SS2[1] - SR2)+:+
|
||||||
|
|
||||||
|
(SS1[i]-SR1)*(SS2[i-TT] - SR2)+:+ (SS1[N]-SR1)*(SS2[N-TT] - SR2),
|
||||||
|
|
||||||
|
где N - длина списка SS1, SR1, SR2 - средние значения соответствующих списков.
|
||||||
|
|
||||||
|
2) Создайте еще один модуль М2, в котором должны выполняться операции:
|
||||||
|
|
||||||
|
- запрашивается и вводится имя текстового файла с данными; проверяется наличие файла и при отсутствии - повторение запроса;
|
||||||
|
|
||||||
|
- запрашивается значение параметра TAU и проверяется TAU >=0;
|
||||||
|
|
||||||
|
- вызывается функция 1 с указанными именем файла и параметром TAU, и случайным значением К из диапазона значений от 2 до 7; отображаются рассчитанные списки;
|
||||||
|
|
||||||
|
- вызывается функция 2 в цикле со значениями TT от 0 до TAU+5; результаты записываются в список SS3;
|
||||||
|
|
||||||
|
- список SS3 записывается в текстовый файл с именем Res11.bin.
|
||||||
|
|
||||||
|
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика список SPS3.
|
||||||
|
|
||||||
|
4) Подготовьте файл с исходными данными - 50 отсчетов случайного нормально распределенного с некоторыми параметрами сигнала. Проведите по программе расчеты со значениями TAU, равными 0, 5 и 10.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
|
||||||
|
### Текст модуля M0
|
||||||
|
|
||||||
|
```py
|
||||||
|
import pylab
|
||||||
|
import M2
|
||||||
|
|
||||||
|
pylab.plot(M2.SS3)
|
||||||
|
pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Текст модуля M1
|
||||||
|
|
||||||
|
```py
|
||||||
|
def fun(name, TAU, K):
|
||||||
|
sps2 = []
|
||||||
|
f = open(name, "r")
|
||||||
|
sps1 = f.readlines()
|
||||||
|
for i in range(len(sps1)):
|
||||||
|
sps1[i] = float(sps1[i].replace("\n", ""))
|
||||||
|
if i < TAU:
|
||||||
|
sps2.append(0)
|
||||||
|
else:
|
||||||
|
sps2.append(K * sps1[i-TAU])
|
||||||
|
return([sps1,sps2])
|
||||||
|
|
||||||
|
|
||||||
|
def fun2(SS1, SS2, TT):
|
||||||
|
D = 0
|
||||||
|
N = len(SS1)
|
||||||
|
SR1 = sum(SS1)/len(SS1)
|
||||||
|
SR2 = sum(SS2)/len(SS2)
|
||||||
|
for i in range(TT, len(SS1)):
|
||||||
|
D+=(SS1[i]-SR1)*(SS2[i-TT]-SR2)
|
||||||
|
for i in range(len(SS1)):
|
||||||
|
D+=(SS1[i]-SR1)*(SS2[i-TT]-SR2)
|
||||||
|
for i in range(len(SS1)):
|
||||||
|
D+=(SS1[N-1]-SR1)*(SS2[N-1-TT]-SR2)
|
||||||
|
return(D)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Текст модуля M2
|
||||||
|
|
||||||
|
```py
|
||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
import random
|
||||||
|
import M1
|
||||||
|
while True:
|
||||||
|
name = input("Введите название текстового файла: ")
|
||||||
|
if os.path.exists(name):
|
||||||
|
print("Файл сущетсвует")
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print("Файл НЕ сущетсвует, повторите PopITку")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
TAU = int(input("Введите значение TAU >= 0: "))
|
||||||
|
if TAU >= 0:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print("Сказали же, TAU больше нуля! Мне казалось, что все это поняли")
|
||||||
|
|
||||||
|
SS3 = []
|
||||||
|
k = random.randint(2,7)
|
||||||
|
|
||||||
|
res = M1.fun(name, TAU, k)
|
||||||
|
|
||||||
|
for TT in range(TAU+5):
|
||||||
|
SS3.append(M1.fun2(res[0], res[1], TT))
|
||||||
|
|
||||||
|
pickle.dump(SS3, open("Res11.bin", "wb"))
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вывод
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||