Сравнить коммиты
64 Коммитов
| Автор | SHA1 | Дата |
|---|---|---|
|
|
2f5ad95d89 | 3 дней назад |
|
|
cac2f4e015 | 3 дней назад |
|
|
705ac6b6f4 | 3 дней назад |
|
|
146d4afe05 | 3 дней назад |
|
|
ab2420af42 | 3 дней назад |
|
|
c2ac0e7c1f | 3 дней назад |
|
|
020d5eee13 | 3 дней назад |
|
|
719b887029 | 4 дней назад |
|
|
6bad29193a | 5 дней назад |
|
|
0283bcfe26 | 5 дней назад |
|
|
2502587199 | 5 дней назад |
|
|
c42e3a9f92 | 5 дней назад |
|
|
c3ca705250 | 2 недель назад |
|
|
9cf6b160e1 | 2 недель назад |
|
|
92a96b6b46 | 2 недель назад |
|
|
1a37b6390a | 2 недель назад |
|
|
d2624961f3 | 2 недель назад |
|
|
bec8fdfe0d | 2 недель назад |
|
|
dfb63b2895 | 3 недель назад |
|
|
330df83e0b | 3 недель назад |
|
|
f242b1ef9c | 3 недель назад |
|
|
906aeb67c3 | 1 месяц назад |
|
|
1be7f5aa76 | 1 месяц назад |
|
|
040faf6242 | 1 месяц назад |
|
|
116920e3c5 | 1 месяц назад |
|
|
e6b7309bc6 | 1 месяц назад |
|
|
6817878ebd | 1 месяц назад |
|
|
545fcbc623 | 1 месяц назад |
|
|
af01755cc9 | 1 месяц назад |
|
|
bf4918a638 | 1 месяц назад |
|
|
73b0cb0858 | 1 месяц назад |
|
|
180ca3e2d7 | 1 месяц назад |
|
|
e31314925d | 2 месяцев назад |
|
|
f0c4e5834d | 2 месяцев назад |
|
|
8eeec64553 | 2 месяцев назад |
|
|
61add6cbe4 | 2 месяцев назад |
|
|
4103666c30 | 2 месяцев назад |
|
|
15578754ba | 2 месяцев назад |
|
|
5a4421bf33 | 2 месяцев назад |
|
|
86306314fd | 2 месяцев назад |
|
|
b2b611eb63 | 2 месяцев назад |
|
|
2ee8aa2899 | 2 месяцев назад |
|
|
fa90ac00b2 | 2 месяцев назад |
|
|
5e908a0f12 | 2 месяцев назад |
|
|
5942877cd9 | 2 месяцев назад |
|
|
112ca055da | 2 месяцев назад |
|
|
be107f40c8 | 2 месяцев назад |
|
|
e34e01b1e9 | 2 месяцев назад |
|
|
5ec523cfd4 | 2 месяцев назад |
|
|
249d1dd95d | 2 месяцев назад |
|
|
4123c770c8 | 2 месяцев назад |
|
|
fbb7d44706 | 2 месяцев назад |
|
|
5e199363b2 | 2 месяцев назад |
|
|
e2752e97c9 | 2 месяцев назад |
|
|
40da83b905 | 2 месяцев назад |
|
|
1d82fffef6 | 2 месяцев назад |
|
|
69140eab84 | 3 месяцев назад |
|
|
17841b48b2 | 3 месяцев назад |
|
|
3eee856b82 | 3 месяцев назад |
|
|
ee7055033d | 3 месяцев назад |
|
|
092d7820f2 | 3 месяцев назад |
|
|
be2feb4df8 | 3 месяцев назад |
|
|
e91ec0837f | 3 месяцев назад |
|
|
82f210a62b | 3 месяцев назад |
@ -0,0 +1,6 @@
|
||||
#This is a very profound comment
|
||||
#Программа по Теме 1 Савин С.А.
|
||||
print('Hello')
|
||||
h = input('Your name is -')
|
||||
import os
|
||||
os.chdir(r'C:\Users\u207-05\python-labs\TEMA1')
|
||||
|
После Ширина: | Высота: | Размер: 39 KiB |
|
После Ширина: | Высота: | Размер: 42 KiB |
@ -0,0 +1,11 @@
|
||||
# Общее контрольное задание по теме 1
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Вопрос 3
|
||||
|
||||
Что означает название интерактивной оболочки IDLE?
|
||||
|
||||
## Ответ
|
||||
|
||||
Integrated Development and Learning Environment (Интегрированная среда разработки и обучения)
|
||||
@ -0,0 +1,531 @@
|
||||
# Отчет по Теме 2
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Пункт 2. Изучение простых объектов
|
||||
|
||||
Переменным f1 и f2 были присвоены значения (целые числа).
|
||||
```py
|
||||
>>> import os
|
||||
>>> os.chdir ('C:\\Users\\somas\\python-labs\\TEMA2')
|
||||
>>> f1 = 16; f2 = 3
|
||||
>>> f1, f2
|
||||
(16, 3)
|
||||
>>> f1;f2
|
||||
16
|
||||
3
|
||||
```
|
||||
|
||||
Проверяем, какие объекты есть в среде python, а также выводим атрибуты для переменной f1.
|
||||
```py
|
||||
>>> dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
|
||||
>>> dir(f1)
|
||||
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__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_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
|
||||
```
|
||||
Выводим класс переменной f2 и удаляем обе переменные с проверкой удаления.
|
||||
|
||||
```py
|
||||
>>> type (f2)
|
||||
<class 'int'>
|
||||
>>> del f1,f2
|
||||
>>> f1,f2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#10>", line 1, in <module>
|
||||
f1,f2
|
||||
NameError: name 'f1' is not defined
|
||||
>>> f2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#11>", line 1, in <module>
|
||||
f2
|
||||
NameError: name 'f2' is not defined
|
||||
```
|
||||
|
||||
## Пункт 3. Правила именования объектов
|
||||
Создал несколько переменных разных типов, а также с неверным названием.
|
||||
```py
|
||||
>>> ggl = 1.6
|
||||
>>> hhl = 'Строка'
|
||||
>>> 73sr = 3
|
||||
SyntaxError: invalid syntax
|
||||
>>> and = 7
|
||||
SyntaxError: invalid syntax
|
||||
```
|
||||
## Пункт 4. Просмотр ключевых слов
|
||||
|
||||
Был выведен и сохранен в переменной keylist список ключевых слов.
|
||||
```py
|
||||
>>> keyword.kwlist
|
||||
['False', 'None', 'True', '__peg_parser__', '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']
|
||||
>>> keylist = keyword.kwlist
|
||||
>>> keylist
|
||||
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
```
|
||||
|
||||
## Пункт 5. Просмотр встроенных идентификаторов
|
||||
|
||||
Получен список встроенных идентификаторов
|
||||
|
||||
```py
|
||||
>>> import builtins
|
||||
>>> dir(builtins)
|
||||
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', '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', 'all', '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 - модуль от числа
|
||||
max/min - вывод максимального/минимального числа для либо списка либо для нескольких перечисленных переменных
|
||||
len - выводит кол-во объектов в контейнере
|
||||
pow - возводит число в степень
|
||||
round - округляет число
|
||||
sum - дает сумму всех элементов в контейнере
|
||||
sorted - сортирует по возрастанию элементы в контейнере
|
||||
zip - "сшивает" значения из одной последовательности значений с соответвтвующими значениями из другой
|
||||
|
||||
```py
|
||||
>>> x = -3
|
||||
>>> abs(x)
|
||||
3
|
||||
>>> pow(x,2)
|
||||
9
|
||||
>>> x = 1.576
|
||||
>>> round(x)
|
||||
2
|
||||
>>> x = 1.50
|
||||
>>> round(x)
|
||||
2
|
||||
```
|
||||
|
||||
## Пункт 6. Значимость регистра
|
||||
|
||||
При присваивании имен переменным важен также регистр букв.
|
||||
|
||||
```py
|
||||
>>> x = 1.576
|
||||
>>> round(x)
|
||||
2
|
||||
>>> x = 1.50
|
||||
>>> round(x)
|
||||
2
|
||||
```
|
||||
|
||||
## Пункт 7. Изучение простых базовых типов.
|
||||
|
||||
## 7.1. Логический тип
|
||||
|
||||
```py
|
||||
>>> bb1 = True; bb2 = False
|
||||
>>> bb1,bb2
|
||||
(True, False)
|
||||
>>> type(bb1)
|
||||
<class 'bool'>
|
||||
```
|
||||
|
||||
## 7.2. Другие простые типы
|
||||
|
||||
Изучены некоторые другие типы числовых переменных
|
||||
|
||||
```py
|
||||
>>> ii1 = -1234567890
|
||||
>>> type(ii1)
|
||||
<class 'int'>
|
||||
>>> ff1 = -8.9876e-12
|
||||
>>> type(ff1)
|
||||
<class 'float'>
|
||||
>>> dv1 = 0b1101010
|
||||
>>> type(dv1)
|
||||
<class 'int'>
|
||||
>>> vsm1 = 0o52765
|
||||
>>> shest1 = 0x7109af6
|
||||
>>> ccl = 2-3j
|
||||
>>> a = 3.67; b = -0.45
|
||||
>>> cc2 = complex(a,b)
|
||||
>>> cc2
|
||||
(3.67-0.45j)
|
||||
>>> type(cc2)
|
||||
<class 'complex'>
|
||||
```
|
||||
|
||||
## 7.3. Строка
|
||||
|
||||
Также изучили разные способы вывода простой строки с помощью "экранированных последовательностей"
|
||||
|
||||
```py
|
||||
>>> ss1 = 'this is a string'
|
||||
>>> print(ss1)
|
||||
this is a string
|
||||
>>> ss1a = "this is a \" string \", \n \t printed on two lines"
|
||||
>>> print(ss1a)
|
||||
this is a " string ",
|
||||
printed on two lines
|
||||
>>> ss1b = "my name is: \n Savin S.A."
|
||||
>>> print(ss1b)
|
||||
my name is:
|
||||
Savin S.A.
|
||||
```
|
||||
|
||||
Также вывели многострочное предложение с помощью тройных кавычек
|
||||
|
||||
```py
|
||||
>>> mnogo="""Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||
>>> print(mnogo)
|
||||
Нетрудно заметить , что в результате операции
|
||||
над числами разных типов получается число,
|
||||
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||
```
|
||||
|
||||
Изучил действия со сторокой - вывд определенных букв по индексу в строке, а так же разрезание строки(с шагами 1 и 2)
|
||||
|
||||
```py
|
||||
>>> ss1[0]
|
||||
't'
|
||||
>>> ss1[8]
|
||||
'a'
|
||||
>>> ss1[-2]
|
||||
'n'
|
||||
>>> ss1[6:9]
|
||||
's a'
|
||||
>>> ss1[13:]
|
||||
'ing'
|
||||
>>> ss1[5:-8]
|
||||
'is '
|
||||
>>> ss1[3:17:2]
|
||||
'si tig'
|
||||
>>> ss1[17:3:-2]
|
||||
'git i'
|
||||
>>> ss1[-4:3:-2]
|
||||
'rsas '
|
||||
```
|
||||
(Изначальная строка - this is a string)
|
||||
|
||||
При изменении строки случается ошибка - так как строка неизменяема. Однако при переопределении можно внести изменения.
|
||||
|
||||
```py
|
||||
>>> ss1[4] = '='
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#88>", line 1, in <module>
|
||||
ss1[4] = '='
|
||||
TypeError: 'str' object does not support item assignment
|
||||
>>> ss1 = ss1[:4] + '+' + ss1[5:]
|
||||
>>> ss1
|
||||
'this+is a string'
|
||||
```
|
||||
|
||||
Самостоятельно поработал со строкой ss1b - двухстрочное предложение. А также удалил старые значения x,y, заменив на другие.
|
||||
Проверил их тип.
|
||||
|
||||
```py
|
||||
>>> ss1b[4:17:2]
|
||||
'aei:\nSv'
|
||||
>>> ss1b[16:]
|
||||
'vin S.A.'
|
||||
>>> ss1b[14:]
|
||||
'Savin S.A.'
|
||||
>>> del x
|
||||
>>> del y
|
||||
>>> x = True
|
||||
>>> y = 14-5j
|
||||
>>> type(x);type(y)
|
||||
<class 'bool'>
|
||||
<class 'complex'>
|
||||
```
|
||||
|
||||
## Пункт 8. Изучение более сложных типов.
|
||||
|
||||
## 8.1. Список
|
||||
|
||||
Работа со списками - можно задать любые значение и типы. Список - упорядоченная коллекция объектов.
|
||||
```py
|
||||
>>> spis1 = [111,'spisok', 5-9j]
|
||||
>>> spis1
|
||||
[111, 'spisok', (5-9j)]
|
||||
>>> stup=[0,0,1,1,1,1,1,1,1]
|
||||
>>> stup
|
||||
[0, 0, 1, 1, 1, 1, 1, 1, 1]
|
||||
>>> spis = [1,2,3,4,
|
||||
5,6,7,8,
|
||||
9,10]
|
||||
>>> spis
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
```
|
||||
Также по индексу можно сослаться на определенные элементы. Или перечислить с некоторым шагом.
|
||||
|
||||
```py
|
||||
>>> spis[-1]
|
||||
10
|
||||
>>> stup[-8::2]
|
||||
[0, 1, 1, 1]
|
||||
>>> spis[-9::2]
|
||||
[2, 4, 6, 8, 10]
|
||||
```
|
||||
|
||||
Списки можно изменять, меняя элементы и переписывая их.
|
||||
|
||||
```py
|
||||
>>> spis1[1] = 'Список'
|
||||
>>> spis1
|
||||
[111, 'Список', (5-9j)]
|
||||
```
|
||||
|
||||
len(...) возвращает длину списка(количестево элементов в контейнере)
|
||||
spis1.append(элемент) добавляет элемент в конец списка
|
||||
spis1+[элемент] - добавляет элемент на вывод 1 раз. Не вписывает этот элемент в список
|
||||
spis1.pop(индекс элемента) - удаляет элемент с указанным индексом
|
||||
spis1.reverse - переворачивает список
|
||||
spis1.insert(индекс, элемент) - вставляет элемент после элемента с указанным индексом
|
||||
spis1.extend(список) - присоединяет в конец другой список
|
||||
spis1.remove(элемент) - удаляет первый встреченный элемент равный указанному
|
||||
spis1.sort() - сортирует список в порядке возрастания
|
||||
spis1.copy() - создает поверхностную копию(shallow copy)
|
||||
spis1.index(элемент) - возвращает индекс первого соответсвующего элемента
|
||||
spis1.clear() - очищает список
|
||||
spis1.count(элемент) - считает кол-во соответствующих элементов
|
||||
|
||||
```py
|
||||
>>> len(spis)
|
||||
10
|
||||
>>> len(spis1)
|
||||
3
|
||||
>>> help(spis1.append)
|
||||
Help on built-in function append:
|
||||
|
||||
append(object, /) method of builtins.list instance
|
||||
Append object to the end of the list.
|
||||
|
||||
>>> spis1.append('New item')
|
||||
>>> spis1
|
||||
[111, 'Список', (5-9j), 'New item']
|
||||
>>> spis1+['Newest item']
|
||||
[111, 'Список', (5-9j), 'New item', 'Newest item']
|
||||
>>> spis1
|
||||
[111, 'Список', (5-9j), 'New item']
|
||||
>>> spis1.append(ss1b)
|
||||
>>> spis1
|
||||
[111, 'Список', (5-9j), 'New item', 'my name is: \n Savin S.A.']
|
||||
>>> spis1.pop(1)
|
||||
'Список'
|
||||
>>> spis1
|
||||
[111, (5-9j), 'New item', 'my name is: \n Savin S.A.']
|
||||
>>> spis1.reverse
|
||||
<built-in method reverse of list object at 0x000001D8904F0C80>
|
||||
>>> spis1
|
||||
[111, (5-9j), 'New item', 'my name is: \n Savin S.A.']
|
||||
>>> spis1.reverse()
|
||||
>>> spis1
|
||||
['my name is: \n Savin S.A.', 'New item', (5-9j), 111]
|
||||
>>> spis1.insert(2, 2+ 2j)
|
||||
>>> spis1
|
||||
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111]
|
||||
>>> spis1.extend(spis)
|
||||
>>> spis1
|
||||
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
>>> spis1.append('New item')
|
||||
>>> spis1
|
||||
['my name is: \n Savin S.A.', 'New item', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item']
|
||||
>>> spis1.remove('New item')
|
||||
>>> spis1
|
||||
['my name is: \n Savin S.A.', (2+2j), (5-9j), 111, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'New item']
|
||||
>>> spis1.count(1)
|
||||
1
|
||||
>>> spis1.index(10)
|
||||
13
|
||||
>>> spis.clear()
|
||||
>>> spis1.clear()
|
||||
>>> spis1
|
||||
[]
|
||||
>>> spis
|
||||
[]
|
||||
```
|
||||
|
||||
Далее создаем вложенные списки. Здесь я также попробовал применить spis2.copy() и проверить как работает поверхностная копия.
|
||||
В итоге сделан вывод - изменения в копии не вносятся только на первом уровне. Если поменять вложенный список, то он поменяется и для оригинала.
|
||||
Тут же я самостоятельно изменил вложенный элемент при помощи append. После изменил значения элемента во вложенном списке.
|
||||
|
||||
```py
|
||||
>>> spis1 = (1,2,3)
|
||||
>>> spis1 = [1,2,3]
|
||||
>>> spis1
|
||||
[1, 2, 3]
|
||||
>>> spis2 = [spis1,[4,5,6,7]]
|
||||
>>> spis2
|
||||
[[1, 2, 3], [4, 5, 6, 7]]
|
||||
>>> copytest = spis2.copy()
|
||||
>>> copytest
|
||||
[[1, 2, 3], [4, 5, 6, 7]]
|
||||
>>> spis2
|
||||
[[1, 2, 3], [4, 5, 6, 7]]
|
||||
>>> copytest.append(3)
|
||||
>>> copytest
|
||||
[[1, 2, 3], [4, 5, 6, 7], 3]
|
||||
>>> spis2
|
||||
[[1, 2, 3], [4, 5, 6, 7]]
|
||||
>>> copytest
|
||||
[[1, 2, 3], [4, 5, 6, 7], 3]
|
||||
>>> copytest[1].append(2)
|
||||
>>> copytest
|
||||
[[1, 2, 3], [4, 5, 6, 7, 2], 3]
|
||||
>>> spis2
|
||||
[[1, 2, 3], [4, 5, 6, 7, 2]]
|
||||
>>> spis2
|
||||
[[1, 2, 3], [4, 5, 6, 7, 2]]
|
||||
>>> spis2[0] = 78
|
||||
>>> spis2
|
||||
[78, [4, 5, 6, 7, 2]]
|
||||
```
|
||||
|
||||
## 8.2. Кортеж
|
||||
|
||||
Работа с кортежами - их нельзя изменять, но можно переопределять, таким образом внося изменения.
|
||||
|
||||
```py
|
||||
>>> kort1 = (222,'Kortezh', 77+8j)
|
||||
>>> kort1
|
||||
(222, 'Kortezh', (77+8j))
|
||||
>>> kort1 = kort1 + (1,2)
|
||||
>>> kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2)
|
||||
>>> kort1 = kort1 + (ss1b,)
|
||||
>>> kort1
|
||||
(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.')
|
||||
>>> kort2 = kort1[:2] + kort1[3:]
|
||||
>>> kort2
|
||||
(222, 'Kortezh', 1, 2, 'my name is: \n Savin S.A.')
|
||||
>>> kort2.index(2)
|
||||
3
|
||||
>>> kort2.count(222)
|
||||
1
|
||||
>>> kort2[2] = 90
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#227>", line 1, in <module>
|
||||
kort2[2] = 90
|
||||
TypeError: 'tuple' object does not support item assignment
|
||||
```
|
||||
|
||||
## 8.3. Словарь
|
||||
|
||||
Работа со словарями. Ключи - неизменяемы.
|
||||
|
||||
```py
|
||||
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||
>>> dic1['Orel']
|
||||
56
|
||||
>>> dic1['Pskov'] = 78
|
||||
>>> dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||
>>> sorted(dic1.keys())
|
||||
['Orel', 'Pskov', 'Saratov', 'Vologda']
|
||||
>>> sorted(dic1.values())
|
||||
[45, 56, 78, 145]
|
||||
>>> dic1
|
||||
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||
>>> dic2={1:'mean', 2:'standart deviation', 3:'correlation'}
|
||||
>>> dic2
|
||||
{1: 'mean', 2: 'standart deviation', 3: 'correlation'}
|
||||
>>> dic3={'statistics':dic2, 'POAS':['base','elementary','programming']}
|
||||
>>> dic3
|
||||
{'statistics': {1: 'mean', 2: 'standart deviation', 3: 'correlation'}, 'POAS': ['base', 'elementary', 'programming']}
|
||||
>>> dic3['statistics'][2]
|
||||
'standart deviation'
|
||||
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
|
||||
>>> dic4
|
||||
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'my name is: \n Savin S.A.'}
|
||||
>>> dic5 = dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||
>>> dic5
|
||||
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'my name is: \n Savin S.A.'}
|
||||
```
|
||||
|
||||
Свой словарь состоит из 5 элементов, потому что мы "сшили" два контейнера, длина определилась по минимальному кол-ву.
|
||||
|
||||
```py
|
||||
>>> testkort = ('B','S','M','H','D','A','R')
|
||||
>>> testlist = ['bow','sword','mace','helbard','dirk']
|
||||
>>> dictest=dict(zip(testkort,testlist))
|
||||
>>> dictest
|
||||
{'B': 'bow', 'S': 'sword', 'M': 'mace', 'H': 'helbard', 'D': 'dirk'}
|
||||
```
|
||||
## 8.4. Множество
|
||||
|
||||
Множества могут состоять только из неповторяющихся неизменяемых элементов - при создании множества со списком выведет ошибку.
|
||||
|
||||
```py
|
||||
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
|
||||
>>> mnoz1
|
||||
{'линия связи', 'датчик', 'микропроцессор', 'двигатель'}
|
||||
>>> len(mnoz1)
|
||||
4
|
||||
>>> 'датчик' in mnoz1
|
||||
True
|
||||
>>> mnoz1.add('htkt')
|
||||
>>> mnoz1.remove('htkt')
|
||||
>>> mnoz1.add('реле')
|
||||
>>> mnoz1
|
||||
{'датчик', 'двигатель', 'микропроцессор', 'линия связи', 'реле'}
|
||||
>>> mnoz1.remove('линия связи')
|
||||
>>> mnoz1
|
||||
{'датчик', 'двигатель', 'микропроцессор', 'реле'}
|
||||
>>> mnoz2 = {'дерево', 15, 78, [6,7,8]}
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#268>", line 1, in <module>
|
||||
mnoz2 = {'дерево', 15, 78, [6,7,8]}
|
||||
TypeError: unhashable type: 'list'
|
||||
>>> kortmnoz = (7,8,7,8)
|
||||
>>> mnoz2 = {'дерево', 16, 19, kortmnoz}
|
||||
>>> mnoz2
|
||||
{16, (7, 8, 7, 8), 19, 'дерево'}
|
||||
>>> mnoz2.add(kort1)
|
||||
>>> mnoz2
|
||||
{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19, 'дерево'}
|
||||
>>> mnoz2.remove('дерево')
|
||||
>>> mnoz2
|
||||
{(222, 'Kortezh', (77+8j), 1, 2, 'my name is: \n Savin S.A.'), 16, (7, 8, 7, 8), 19}
|
||||
>>> len(mnoz2)
|
||||
4
|
||||
```
|
||||
|
||||
# Общее контрольное задаие по теме 2
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
1) Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
|
||||
2) Создать переменную со значением, совпадающим с первой буквой из familia.
|
||||
3) Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
|
||||
4) Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
|
||||
5) Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
|
||||
6) Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
|
||||
7) Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
|
||||
8) Создайте словарь dict_bas, в котором ключами являются русские названия типов переменных, использованных в предыдущих операторах, а значениями – ранее созданные переменные, соответствующие этим типам.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>> familia = 'Savin'
|
||||
>>> familia
|
||||
'Savin'
|
||||
>>> bukva = familia[0]
|
||||
>>> bukva
|
||||
'S'
|
||||
>>> sp_kv = keyword.kwlist
|
||||
>>> sp_kv
|
||||
['False', 'None', 'True', '__peg_parser__', '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_kv.remove('nonlocal')
|
||||
>>> sp_kv
|
||||
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||
>>> kort_nam = ('Семён', 'Ярослав', 'Миша')
|
||||
>>> type(kort_nam)
|
||||
<class 'tuple'>
|
||||
>>> kort_nam.count('Дима')
|
||||
0
|
||||
>>> dict_bas = {'Строка': [familia,bukva], 'Список': sp_kv, 'Кортеж': kort_nam}
|
||||
>>> dict_bas
|
||||
{'Строка': ['Savin', 'S'], 'Список': ['False', 'None', 'True', '__peg_parser__', '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'], 'Кортеж': ('Семён', 'Ярослав', 'Миша')}
|
||||
|
||||
```
|
||||
|
||||
Для работы со строкой использовал ссылку по индексу, отпечатал первую букву.
|
||||
Для работы со списком присвоил значению sp_kv keyword.kwlist - это уже список, поэтому без []
|
||||
В кортеж не записано имен "Дима", kort_nam.count('Дима') выводит 0
|
||||
Внес в словарь две строки, перед эти объединив их в список - одному ключу одно значение.
|
||||
@ -0,0 +1,61 @@
|
||||
# Общее контрольное задание по Теме 3
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||
|
||||
Преобразовать восьмеричное значение 45 в целое число.
|
||||
|
||||
Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
|
||||
|
||||
Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
|
||||
|
||||
Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
|
||||
|
||||
Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
|
||||
|
||||
Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
|
||||
|
||||
Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>> x = "45"
|
||||
>>> x = int(x,8)
|
||||
>>> x
|
||||
37
|
||||
>>> D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||
>>> Dk = list(D.keys())
|
||||
>>> Dk
|
||||
['усиление', 'запаздывание', 'постоянная времени']
|
||||
>>> Dv = list(D.values())
|
||||
>>> Dv
|
||||
[23, 12, 78]
|
||||
>>> kort = tuple(Dk+Dv)
|
||||
>>> kort
|
||||
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||
>>> ((1768//24.8)%3)**2.4
|
||||
5.278031643091577
|
||||
>>> ((~(13&27))^14)<<2
|
||||
-32
|
||||
>>> spis = ["колебат","колебат","колебат","колебат"]
|
||||
>>> 'аткол' in (spis[1] + spis[2])
|
||||
True
|
||||
>>> dir(D)
|
||||
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
|
||||
>>> type(D.keys())
|
||||
<class 'dict_keys'>
|
||||
>>> type(D.values())
|
||||
<class 'dict_values'>
|
||||
>>> stroka = 'Создать объект - символьную строку с текстом данного предложения'
|
||||
>>> stroka1 = stroka.split()
|
||||
>>> stroka1
|
||||
['Создать', 'объект', '-', 'символьную', 'строку', 'с', 'текстом', 'данного', 'предложения']
|
||||
>>> stroka1[2] = ','
|
||||
>>> del stroka1[7]
|
||||
>>> stroka1
|
||||
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения']
|
||||
```
|
||||
@ -0,0 +1,598 @@
|
||||
# Отчет по Теме 3
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Пункт 2. Преобразование простых типов объектов.
|
||||
|
||||
## 2.1 Преобразование в логический тип
|
||||
|
||||
```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)
|
||||
>>> tt2 = int("-76")
|
||||
>>> tt3 = int("B",16)
|
||||
>>> tt4 = int("71",8)
|
||||
>>> tt5 = int("98.76")
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#12>", line 1, in <module>
|
||||
tt5 = int("98.76")
|
||||
ValueError: invalid literal for int() with base 10: '98.76'
|
||||
>>> tt1
|
||||
198
|
||||
>>> tt2
|
||||
-76
|
||||
>>> tt3
|
||||
11
|
||||
>>> tt4
|
||||
57
|
||||
```
|
||||
|
||||
## 2.3 Преобразование в вещественное число
|
||||
|
||||
```py
|
||||
flt1 = float(789)
|
||||
>>> flt2 = float(-6.78e2)
|
||||
>>> flt3 = float ("Infinity")
|
||||
>>> flt4 = float("-inf")
|
||||
>>> flt1
|
||||
789.0
|
||||
>>> flt2
|
||||
-678.0
|
||||
>>> flt3
|
||||
inf
|
||||
>>> flt4
|
||||
-inf
|
||||
```
|
||||
|
||||
## Пункт 3. Преобразование более сложных базовых типов объектов.
|
||||
|
||||
## 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
|
||||
'23.6'
|
||||
>>> strk2
|
||||
'True'
|
||||
>>> strk3
|
||||
"['A', 'B', 'C']"
|
||||
>>> strk4
|
||||
"('A', 'B', 'C')"
|
||||
>>> strk5
|
||||
"{'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
|
||||
[124, 236, -15, 908]
|
||||
>>> spis3
|
||||
['A', 'B', 'C']
|
||||
```
|
||||
|
||||
## 3.3. Преобразование в кортеж
|
||||
|
||||
```py
|
||||
>>> kort7=tuple('Строка символов')
|
||||
>>> kort8 = tuple(spis2)
|
||||
>>> kort9 = tuple({"A":1, "B":2, "C":9})
|
||||
>>> kort7
|
||||
('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в')
|
||||
>>> kort8
|
||||
(124, 236, -15, 908)
|
||||
>>> kort9
|
||||
('A', 'B', 'C')
|
||||
```
|
||||
|
||||
## 3.4 Удаление объектов
|
||||
|
||||
```py
|
||||
>>> del strk5,kort8
|
||||
>>> strk5
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#49>", line 1, in <module>
|
||||
strk5
|
||||
NameError: name 'strk5' is not defined
|
||||
>>> kort8
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#50>", line 1, in <module>
|
||||
kort8
|
||||
NameError: name 'kort8' is not defined
|
||||
```
|
||||
|
||||
## Пункт 4. Арифметические операции.
|
||||
|
||||
## 4.1. Сложение и вычитание
|
||||
```py
|
||||
>>> 12+7+90
|
||||
109
|
||||
>>> 5.689e-1 - 0.456
|
||||
0.11289999999999994
|
||||
>>> 23.6+54
|
||||
77.6
|
||||
>>> 14-56.7+89
|
||||
46.3
|
||||
```
|
||||
|
||||
## 4.2. Умножение
|
||||
```py
|
||||
>>> -6.7*12
|
||||
-80.4
|
||||
```
|
||||
|
||||
## 4.3. Деление
|
||||
```py
|
||||
>>> -234.5/6
|
||||
-39.083333333333336
|
||||
>>> a=178/45
|
||||
>>> a
|
||||
3.9555555555555557
|
||||
```
|
||||
|
||||
## 4.4. Деление с округлением вниз
|
||||
```py
|
||||
>>> b=178//45
|
||||
>>> c=-24.6//12.1
|
||||
>>> b
|
||||
3
|
||||
>>> c
|
||||
-3.0
|
||||
```
|
||||
|
||||
## 4.5. Получение остатка от деления
|
||||
```py
|
||||
>>> 146%33
|
||||
14
|
||||
>>> 148%33
|
||||
16
|
||||
>>> 12.6%3.8
|
||||
1.2000000000000002
|
||||
>>> 11%3.8
|
||||
3.4000000000000004
|
||||
>>> 4.0%1.0
|
||||
0.0
|
||||
```
|
||||
|
||||
## 4.6. Возведение в степень
|
||||
```py
|
||||
>>> 14**3
|
||||
2744
|
||||
>>> e=2.7**3.6
|
||||
>>> e
|
||||
35.719843790663525
|
||||
>>> 2**4.5
|
||||
22.627416997969522
|
||||
>>> g = 14 - 8j
|
||||
>>> g**2
|
||||
(132-224j)
|
||||
>>> g%2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#79>", line 1, in <module>
|
||||
g%2
|
||||
TypeError: can't mod complex numbers.
|
||||
>>> g//2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#80>", line 1, in <module>
|
||||
g//2
|
||||
TypeError: can't take floor of complex number.
|
||||
>>> g/2
|
||||
(7-4j)
|
||||
>>> g*5
|
||||
(70-40j)
|
||||
```
|
||||
|
||||
## Пункт 5. Операции с двоичными представлениями целых чисел.
|
||||
|
||||
## 5.1. Двоичная инверсия
|
||||
|
||||
```py
|
||||
>>> dv1 = 9
|
||||
>>> dv2 = ~dv1
|
||||
>>> bin(dv2)
|
||||
'-0b1010'
|
||||
```
|
||||
|
||||
## 5.2. Двоичное "И"
|
||||
|
||||
```py
|
||||
>>> bin(7&9)
|
||||
'0b1'
|
||||
>>> bin(7&8)
|
||||
'0b0'
|
||||
```
|
||||
|
||||
## 5.3. Двоичное "ИЛИ"
|
||||
|
||||
```py
|
||||
>>> a = bin(7|9)
|
||||
>>> b = bin(7|8)
|
||||
>>> a
|
||||
'0b1111'
|
||||
>>> b
|
||||
'0b1111'
|
||||
```
|
||||
|
||||
## 5.4. Двоичное "исключающее ИЛИ"
|
||||
|
||||
```py
|
||||
>>> c = bin(14^5)
|
||||
>>> c
|
||||
'0b1011'
|
||||
```
|
||||
|
||||
## 5.5. Сдвиг двоичного представления
|
||||
|
||||
```py
|
||||
>>> h = 14
|
||||
>>> bin(h)
|
||||
'0b1110'
|
||||
>>> g = h<<2
|
||||
>>> g
|
||||
56
|
||||
>>> bin(g)
|
||||
'0b111000'
|
||||
>>> g1 = h>>1
|
||||
>>> g2 = h>>2
|
||||
>>> bin(g1), bin(g2)
|
||||
('0b111', '0b11')
|
||||
```
|
||||
|
||||
## Пункт 6. Операции при работе с последовательностями.
|
||||
|
||||
## 6.1. Объединние последовательностей.
|
||||
|
||||
```py
|
||||
'Система '+'регулирования'
|
||||
'Система регулирования'
|
||||
>>> ['abc','de','fg']+['hi','jkl']
|
||||
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||
>>> ('abc','de','fg')+('hi','jkl')
|
||||
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||
```
|
||||
|
||||
## 6.2. Повторение последовательностей
|
||||
|
||||
```py
|
||||
>>> 'ля-'*5
|
||||
'ля-ля-ля-ля-ля-'
|
||||
>>> ['ку','-']*3
|
||||
['ку', '-', 'ку', '-', 'ку', '-']
|
||||
>>> ('кис','-')*4
|
||||
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
|
||||
>>> signal1=[0]*3+[1]*99
|
||||
>>> signal2=(0,)*3+(1,)*5+(0,)*7
|
||||
>>> signal1
|
||||
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
>>> signal2
|
||||
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
|
||||
```
|
||||
|
||||
## 6.3. Проверка наличия заданного элемента.
|
||||
|
||||
```py
|
||||
stroka='Система автоматического управления'
|
||||
>>> 'автомат' in stroka
|
||||
True
|
||||
>>> 'ку' in ['ку','-']*3
|
||||
True
|
||||
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
|
||||
False
|
||||
```
|
||||
|
||||
## 6.4. Подстановка значений в строку
|
||||
|
||||
```py
|
||||
>>> stroka='Температура = %g %s %g'
|
||||
>>> stroka
|
||||
'Температура = %g %s %g'
|
||||
>>> stroka % (16, "меньше", 25)
|
||||
'Температура = 16 меньше 25'
|
||||
stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
||||
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
||||
'Температура = 16 меньше 25'
|
||||
```
|
||||
|
||||
## Пункт 7. Оператор присваивания
|
||||
|
||||
## 7.1. Обычное присваивание значения.
|
||||
|
||||
```py
|
||||
zz = -12
|
||||
```
|
||||
|
||||
## 7.2. Увеличение/уменьшение на заданную величину.
|
||||
|
||||
```py
|
||||
>>> zz+=5
|
||||
>>> zz
|
||||
-7
|
||||
>>> zz-=3
|
||||
>>> zz
|
||||
-10
|
||||
>>> stroka = "система"
|
||||
>>> stroka += " регулирования"
|
||||
>>> stroka
|
||||
'система регулирования'
|
||||
```
|
||||
|
||||
## 7.3. Умножение/деление на заданную величину.
|
||||
|
||||
```py
|
||||
>>> zz
|
||||
-10
|
||||
>>> zz/=2
|
||||
>>> zz
|
||||
-5.0
|
||||
>>> zz*=5
|
||||
>>> zz
|
||||
-25.0
|
||||
```
|
||||
|
||||
## 7.4. Деление с округлением, вычисление остатка и возведение в степень.
|
||||
|
||||
```py
|
||||
>> zz+=2.7
|
||||
>>> zz
|
||||
-2.3
|
||||
>>> zz//=2
|
||||
>>> zz
|
||||
-2.0
|
||||
>>> zz+=8.5
|
||||
>>> zz
|
||||
6.5
|
||||
>>> zz%=4
|
||||
>>> zz
|
||||
2.5
|
||||
>>> zz**=2
|
||||
>>> zz
|
||||
6.25
|
||||
```
|
||||
|
||||
## 7.5. Множественное присваивание
|
||||
|
||||
```py
|
||||
>>> w=v=10
|
||||
>>> n1,n2,n3=(11,-3,'all')
|
||||
>>> w
|
||||
10
|
||||
>>> v
|
||||
10
|
||||
>>> n1
|
||||
11
|
||||
>>> n2
|
||||
-3
|
||||
>>> n3
|
||||
'all'
|
||||
>>> n1,n2,n3 = [11,-3,'all']
|
||||
>>> n1
|
||||
11
|
||||
>>> n2
|
||||
-3
|
||||
>>> n3
|
||||
'all'
|
||||
>>> n1,n2,n3 = {11,-4,'al'}
|
||||
>>> n1
|
||||
11
|
||||
>>> n2
|
||||
-4
|
||||
>>> n3
|
||||
'al'
|
||||
>>> testdict
|
||||
{'a': 'test1', 'b': 14, 'c': 'test3'}
|
||||
>>> n1,n2,n3 = testdict["a"], testdict["b"], testdict["c"]
|
||||
>>> n1
|
||||
'test1'
|
||||
>>> n2
|
||||
14
|
||||
>>> n3
|
||||
'test3'
|
||||
>>> strka = "ФБВГД"
|
||||
>>> n1,n2,n3 = strka[1],strka[3], strka[4]
|
||||
>>> n1
|
||||
'Б'
|
||||
>>> n2
|
||||
'Г'
|
||||
>>> n3
|
||||
'Д'
|
||||
```
|
||||
|
||||
## Пункт 8. Логические операции.
|
||||
|
||||
## 8.1. Операции сравнения.
|
||||
|
||||
```py
|
||||
>>> w==v
|
||||
True
|
||||
>>> w<=v
|
||||
True
|
||||
>>> w>=v
|
||||
True
|
||||
>>> w>v
|
||||
False
|
||||
>>> w<v
|
||||
False
|
||||
>>> w
|
||||
10
|
||||
>>> v
|
||||
10
|
||||
```
|
||||
## 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':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
|
||||
>>> 'UII' 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
|
||||
>>> (a==b) or ("AVTI" in dct1["Institut"])
|
||||
True
|
||||
>>> not ("book" in mnoz1) and("Moskow" in dic1)
|
||||
False
|
||||
```
|
||||
|
||||
## 8.4. Проверка ссылок переменных на один и тот же объект
|
||||
|
||||
```py
|
||||
>>> w=v=10
|
||||
>>> w is v
|
||||
True
|
||||
>>> w1=['A','B']
|
||||
>>> v1=['A','B']
|
||||
>>> w1 is v1
|
||||
False
|
||||
>>> w1=v1=['A','B']
|
||||
>>> w1 is v1
|
||||
True
|
||||
```
|
||||
|
||||
## Пункт 9. Операции с объектами, выполняемые с помощью методов.
|
||||
|
||||
## 9.1. Методы для работы со строками.
|
||||
|
||||
```py
|
||||
>>> stroka='Микропроцессорная система управления'
|
||||
>>> dir(stroka)
|
||||
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
|
||||
>>> stroka.find('пр')
|
||||
5
|
||||
>>> stroka.count("с")
|
||||
4
|
||||
>>> stroka.replace(' у',' автоматического у')
|
||||
'Микропроцессорная система автоматического управления'
|
||||
>>> spis22=stroka.split(' ')
|
||||
>>> spis22
|
||||
['Микропроцессорная', 'система', 'управления']
|
||||
>>> stroka.upper()
|
||||
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
|
||||
>>> stroka3 = "".join(spis22)
|
||||
>>> stroka3
|
||||
'Микропроцессорнаясистемауправления'
|
||||
>>> stroka3.partition("c")
|
||||
('Микропроцессорнаясистемауправления', '', '')
|
||||
>>> stroka3.partition("с")
|
||||
('Микропроце', 'с', 'сорнаясистемауправления')
|
||||
>>> stroka3.rpartition("с")
|
||||
('Микропроцессорнаяси', 'с', 'темауправления')
|
||||
>>> help(format)
|
||||
Help on built-in function format in module builtins:
|
||||
|
||||
format(value, format_spec='', /)
|
||||
Return value.__format__(format_spec)
|
||||
|
||||
format_spec defaults to the empty string.
|
||||
See the Format Specification Mini-Language section of help('FORMATTING') for
|
||||
details.
|
||||
|
||||
>>> 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 = [1,2,3,4,5,'a','b','c']
|
||||
>>> spsk.pop(2)
|
||||
3
|
||||
>>> spsk.append('c')
|
||||
>>> spsk
|
||||
[1, 2, 4, 5, 'a', 'b', 'c', 'c']
|
||||
>>> spsk.insert(2,'a')
|
||||
>>> spsk
|
||||
[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c']
|
||||
>>> spsk.count('a')
|
||||
2
|
||||
>>> spsk
|
||||
[1, 2, 'a', 4, 5, 'a', 'b', 'c', 'c']
|
||||
>>> dir(spsk)
|
||||
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
|
||||
```
|
||||
|
||||
## 9.3. Методы работы с кортежами
|
||||
|
||||
```py
|
||||
>>> kort = (1,2,3,4,5,'a','c')
|
||||
>>> dir(kort)
|
||||
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
|
||||
>>> kort.count(a)
|
||||
0
|
||||
>>> kort.count('a')
|
||||
1
|
||||
>>> len(kort)
|
||||
7
|
||||
```
|
||||
|
||||
## 9.4. Методы работы с множествами и словарями
|
||||
|
||||
```py
|
||||
>>> slova = {"A": 123, "B":456}
|
||||
>>> dir(slova)
|
||||
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
|
||||
>>> slova.keys()
|
||||
dict_keys(['A', 'B'])
|
||||
>>> slova.items
|
||||
<built-in method items of dict object at 0x0000022F4A053F00>
|
||||
>>> mnoz = {1,2,3,4,5,6}
|
||||
>>> dir(mnoz)
|
||||
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
|
||||
>>> mnoz.pop()
|
||||
1
|
||||
>>> mnoz
|
||||
{2, 3, 4, 5, 6}
|
||||
```
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,94 @@
|
||||
# Тест по теме 3
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Вариант 26.
|
||||
|
||||
## Вопрос 1. Можно ли с помощью оболочки IDLE создавать загрузочные (ЕХЕ,СОМ) программы?
|
||||
В самом IDLE нельзя создавать загрузочные файлы, только скрипты, после чего можно преобразовать в сторонних программах.
|
||||
|
||||
## Вопрос 2.
|
||||
|
||||
Задание: Создайте объект-множество с 8 элементами - статистическими терминами ("среднее значение",:). Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
mnozstat = {"среднее значение", "медиана", "дисперсия", "корелляция", "стандартное отклонение", "выборка", "математическое ожидание"}
|
||||
mnozstat
|
||||
{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
|
||||
type(mnozstat)
|
||||
<class 'set'>
|
||||
dir(mnozstat)
|
||||
['__and__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
|
||||
```
|
||||
|
||||
## Вопрос 3.
|
||||
|
||||
Задание: Напишите инструкцию удаления из множества одного из терминов, например, "среднее значение". Добавьте вместо него термин "математическое ожидание". Отобразите на экране получившийся объект.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
mnozstat
|
||||
{'медиана', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
|
||||
mnozstat.remove("медиана")
|
||||
mnozstat
|
||||
{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
|
||||
mnozstat.add("математическое ожидание")
|
||||
mnozstat
|
||||
{'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
|
||||
mnozstat.add("матожидание")
|
||||
mnozstat
|
||||
{'матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение'}
|
||||
```
|
||||
|
||||
При добавлении "Математическое ожидание" множество не изменилось, т.к. множество содержит неповторяющиеся объекты.
|
||||
Доавил вместо этого "матожидание".
|
||||
|
||||
## Вопрос 4.
|
||||
|
||||
Задание: Преобразуйте множество в список. Отобразите полученный объект. Добавьте в конец списка значение "гетероскедастичность". Напишите инструкцию вывода из этого значения в списке символов, начиная с 7-го и до 13-го.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
liststat = list(mnozstat)
|
||||
liststat
|
||||
['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение']
|
||||
liststat.append("гетероскедастичность")
|
||||
liststat
|
||||
['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность']
|
||||
liststat[-1]
|
||||
'гетероскедастичность'
|
||||
stringtest=liststat[-1]
|
||||
stringtest
|
||||
'гетероскедастичность'
|
||||
stringtest[6:13]
|
||||
'скедаст'
|
||||
```
|
||||
|
||||
Два способа - первый не использует дополнительную переменную.
|
||||
|
||||
## Вопрос 5.
|
||||
|
||||
Задание: Создайте на основе множества словарь, в котором ключи - термины из множества, а значения - код термина (например, число - порядковый номер).
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
slovtest1 = dict(zip(liststat,["M1","M2","M3","M4","M5","M6","M7","M8"]))
|
||||
slovtest1
|
||||
{'матожидание': 'M1', 'выборка': 'M2', 'стандартное отклонение': 'M3', 'корелляция': 'M4', 'дисперсия': 'M5', 'математическое ожидание': 'M6', 'среднее значение': 'M7', 'гетероскедастичность': 'M8'}
|
||||
slovtest.keys()
|
||||
dict_keys(['матожидание'])
|
||||
slovtest1.keys()
|
||||
dict_keys(['матожидание', 'выборка', 'стандартное отклонение', 'корелляция', 'дисперсия', 'математическое ожидание', 'среднее значение', 'гетероскедастичность'])
|
||||
slovtest1.values()
|
||||
dict_values(['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8'])
|
||||
slovtest2 = dict(zip(mnozstat,[1,2,3,4,5,6,7,8]))
|
||||
slovtest2
|
||||
{'матожидание': 1, 'выборка': 2, 'стандартное отклонение': 3, 'корелляция': 4, 'дисперсия': 5, 'математическое ожидание': 6, 'среднее значение': 7}
|
||||
```
|
||||
|
||||
Через dict(zip()) можно "сшить" и два списка, и список со множеством, чтобысоздать словарь.
|
||||
|
После Ширина: | Высота: | Размер: 20 KiB |
|
После Ширина: | Высота: | Размер: 24 KiB |
|
После Ширина: | Высота: | Размер: 18 KiB |
|
После Ширина: | Высота: | Размер: 11 KiB |
|
После Ширина: | Высота: | Размер: 11 KiB |
|
После Ширина: | Высота: | Размер: 14 KiB |
@ -0,0 +1,344 @@
|
||||
# Отчёт по теме 4
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Пункт 2. Стандартные функции из модуля builtins.
|
||||
|
||||
## Пункт 2.1. Округление
|
||||
|
||||
```py
|
||||
Help on built-in function round in module builtins:
|
||||
|
||||
round(number, ndigits=None)
|
||||
Round a number to a given precision in decimal digits.
|
||||
|
||||
The return value is an integer if ndigits is omitted or None. Otherwise
|
||||
the return value has the same type as the number. ndigits may be negative.
|
||||
|
||||
>>> round(123.456,1)
|
||||
123.5
|
||||
>>> round(123.456,0)
|
||||
123.0
|
||||
>>> round(123.456)
|
||||
123
|
||||
```
|
||||
|
||||
## Пункт 2.2. Создание последовательности
|
||||
|
||||
```py
|
||||
>>> gg = range(76,123,9)
|
||||
>>> gg
|
||||
range(76, 123, 9)
|
||||
>>> list(gg)
|
||||
[76, 85, 94, 103, 112, 121]
|
||||
>>> range(23)
|
||||
range(0, 23) #шаг по умолчанию 1, от 0 до 22.
|
||||
>>>
|
||||
```
|
||||
|
||||
## Пункт 2.3. Zip
|
||||
|
||||
```py
|
||||
>>> qq = ["Савин", "Мамакин", "Капитонов", "Симанков"]
|
||||
>>> ff = zip(gg,qq)
|
||||
>>> tuple(ff)
|
||||
((76, 'Савин'), (85, 'Мамакин'), (94, 'Капитонов'), (103, 'Симанков'))
|
||||
>>> ff[1]
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#11>", line 1, in <module>
|
||||
ff[1]
|
||||
TypeError: 'zip' object is not subscriptable #нельзя обращаться по индексу
|
||||
```
|
||||
|
||||
## Пункт 2.4. Eval
|
||||
|
||||
```py
|
||||
>>> fff=float(input('коэффициент усиления='))
|
||||
коэффициент усиления=13
|
||||
>>> dan = eval('5*fff-156')
|
||||
>>> dan
|
||||
-91.0
|
||||
```
|
||||
|
||||
## Пункт 2.5. Exec
|
||||
|
||||
```py
|
||||
>>> exec(input('введите инструкции:'))
|
||||
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||
>>> gg
|
||||
221.456
|
||||
>>>
|
||||
```
|
||||
|
||||
## Пункт 2.6. Другие встроенные функции
|
||||
|
||||
```py
|
||||
>>> hi = 6
|
||||
>>> hello = pow(hi,2)
|
||||
>>> hello
|
||||
36
|
||||
>>> help(divmod)
|
||||
Help on built-in function divmod in module builtins:
|
||||
|
||||
divmod(x, y, /)
|
||||
Return the tuple (x//y, x%y). Invariant: div*y + mod == x.
|
||||
>>> divmod(40, 13)
|
||||
(3, 1)
|
||||
>>> list(map(len,qq))
|
||||
[5, 7, 9, 8]
|
||||
```
|
||||
|
||||
## Пункт 3. Модуль Math.
|
||||
|
||||
```py
|
||||
>>> import math
|
||||
>>> dir(math)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', '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', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
|
||||
>>> help(math.factorial)
|
||||
Help on built-in function factorial in module math:
|
||||
|
||||
factorial(x, /)
|
||||
Find x!.
|
||||
|
||||
Raise a ValueError if x is negative or non-integral.
|
||||
|
||||
>>> math.factorial(5)
|
||||
120
|
||||
>>> math.sin(1565)
|
||||
0.46785173260407253
|
||||
>>> math.log10(200)
|
||||
2.3010299956639813
|
||||
>>> math.sqrt(36)
|
||||
6.0
|
||||
>>> math.sin(2*math.pi/7 + math.exp(0.23))
|
||||
0.8334902641414562
|
||||
```
|
||||
|
||||
## Пункт 4. Модуль cmath
|
||||
|
||||
```py
|
||||
>>> import cmath
|
||||
>>> dir(cmath)
|
||||
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cos', 'cosh', 'e', 'exp', 'inf', 'infj', 'isclose', 'isfinite', 'isinf', 'isnan', 'log', 'log10', 'nan', 'nanj', 'phase', 'pi', 'polar', 'rect', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau']
|
||||
>>> cmath.sqrt(1.2-0.5j)
|
||||
(1.118033988749895-0.22360679774997896j)
|
||||
>>> cmath.phase(1-0.5j)
|
||||
-0.4636476090008061
|
||||
>>>
|
||||
```
|
||||
|
||||
## Пункт 5. Модуль random.
|
||||
|
||||
```py
|
||||
>>> help(random.seed)
|
||||
Help on method seed in module random:
|
||||
|
||||
seed(a=None, version=2) method of random.Random instance
|
||||
Initialize internal state from a seed.
|
||||
|
||||
The only supported seed types are None, int, float,
|
||||
str, bytes, and bytearray.
|
||||
|
||||
None or no argument seeds from current time or from an operating
|
||||
system specific randomness source if available.
|
||||
|
||||
If *a* is an int, all bits are used.
|
||||
|
||||
For version 2 (the default), all of the bits are used if *a* is a str,
|
||||
bytes, or bytearray. For version 1 (provided for reproducing random
|
||||
sequences from older versions of Python), the algorithm for str and
|
||||
bytes generates a narrower range of seeds.
|
||||
|
||||
>>> help(random.seed())
|
||||
Help on NoneType object:
|
||||
|
||||
class NoneType(object)
|
||||
| Methods defined here:
|
||||
|
|
||||
| __bool__(self, /)
|
||||
| True if self else False
|
||||
|
|
||||
| __repr__(self, /)
|
||||
| Return repr(self).
|
||||
|
|
||||
| ----------------------------------------------------------------------
|
||||
| Static methods defined here:
|
||||
|
|
||||
| __new__(*args, **kwargs) from builtins.type
|
||||
| Create and return a new object. See help(type) for accurate signature.
|
||||
|
||||
>>> random.seed()
|
||||
>>> random.random()
|
||||
0.23882613686570964
|
||||
>>> random.uniform(0,1)
|
||||
0.3999614707805891
|
||||
>>> random.randint(0,100)
|
||||
6
|
||||
>>> random.gauss(2, 10)
|
||||
5.707349953271636
|
||||
>>> random.choice([1,2,3,4,5])
|
||||
2
|
||||
>>> sp = [1,2,3,4,5,6,7,8,9,10,11]
|
||||
>>> random.shuffle(sp)
|
||||
>>> sp
|
||||
[11, 7, 5, 3, 2, 10, 9, 8, 1, 6, 4]
|
||||
>>> random.sample(sp,3)
|
||||
[5, 10, 3]
|
||||
>>> random.betavariate(0.7,0.7)
|
||||
0.7563022719328397
|
||||
>>> random.gammavariate(0.89,0.89)
|
||||
0.5554159983098497
|
||||
>>> sp1=[random.random(), random.gauss(0.5,0.5), random.betavariate(0.5,0.5), random.gammavariate(0.5, 0.5)]
|
||||
>>> sp1
|
||||
[0.3367662138533899, 0.25139981537793343, 0.6382522055172093, 0.7493560082921834]
|
||||
```
|
||||
|
||||
## Пункт 6. Модуль time.
|
||||
|
||||
```py
|
||||
>>> import time
|
||||
>>> dir(time)
|
||||
['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'monotonic_ns', 'perf_counter', 'perf_counter_ns', 'process_time', 'process_time_ns', 'sleep', 'strftime', 'strptime', 'struct_time', 'thread_time', 'thread_time_ns', 'time', 'time_ns', 'timezone', 'tzname']
|
||||
>>> c1=time.time()
|
||||
>>> c2 = time.time() - c1
|
||||
>>> c2
|
||||
8.849342107772827
|
||||
>>> data = time.gmtime()
|
||||
>>> data.tm_mon
|
||||
10
|
||||
>>> data1 = time.localtime()
|
||||
>>> data1.tm_year
|
||||
2025
|
||||
>>> time.asctime(data)
|
||||
'Mon Oct 13 01:26:52 2025'
|
||||
>>> time.ctime(123461273)
|
||||
'Fri Nov 30 01:47:53 1973'
|
||||
>>> time.mktime(data1)
|
||||
1760318835.0
|
||||
>>> time.localtime(c1)
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=26, tm_sec=23, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||
>>> time.localtime()
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=28, tm_sec=59, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||
>>>
|
||||
```
|
||||
|
||||
## Пункт 7. Модуль Pylab
|
||||
|
||||
```py
|
||||
>>> import pylab
|
||||
>>> x = list(range(-3,55,4))
|
||||
>>> t = list(range(15))
|
||||
>>> pylab.plot(t,x)
|
||||
[<matplotlib.lines.Line2D object at 0x0000020E0362C670>]
|
||||
>>> pylab.title('Первый график')
|
||||
Text(0.5, 1.0, 'Первый график')
|
||||
>>> pylab.xlabel("Время")
|
||||
Text(0.5, 0, 'Время')
|
||||
>>> pylab.ylabel("Сигнал")
|
||||
Text(0, 0.5, 'Сигнал')
|
||||
>>> pylab.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> X1 = [12,6,8,10,7]
|
||||
>>> X2 = [5,7,9,11,13]
|
||||
>>> pylab.plot(X1)
|
||||
[<matplotlib.lines.Line2D object at 0x0000020E01DF7E20>]
|
||||
>>> pylab.plot(X2)
|
||||
[<matplotlib.lines.Line2D object at 0x0000020E01E05100>]
|
||||
>>> pylab.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> pylab.show()
|
||||
>>> region=["Центр", "Урал", "Сибирь", "Юг"]
|
||||
>>> naselen = [65,12,23,17]
|
||||
>>> pylab.pie(naselen,labels = region)
|
||||
([<matplotlib.patches.Wedge object at 0x0000020E01FCA910>, <matplotlib.patches.Wedge object at 0x0000020E01FCA850>, <matplotlib.patches.Wedge object at 0x0000020E01FE2250>, <matplotlib.patches.Wedge object at 0x0000020E01FE26D0>], [Text(-0.191013134139045, 1.0832885038559115, 'Центр'), Text(-0.861328292412156, -0.6841882582231001, 'Урал'), Text(0.04429273995539947, -1.0991078896938387, 'Сибирь'), Text(0.9873750693480946, -0.48486129194837324, 'Юг')])
|
||||
>>> pylab.show()
|
||||
|
||||
```
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> pylab.hist(X2,5)
|
||||
(array([1., 1., 1., 1., 1.]), array([ 5. , 6.6, 8.2, 9.8, 11.4, 13. ]), <BarContainer object of 5 artists>)
|
||||
>>> pylab.show()
|
||||
>>> pylab.hist(X1,3)
|
||||
(array([2., 1., 2.]), array([ 6., 8., 10., 12.]), <BarContainer object of 3 artists>)
|
||||
>>> pylab.show()
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
```py
|
||||
>>> pylab.bar(X1,X2)
|
||||
<BarContainer object of 5 artists>
|
||||
>>> pylab.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
## Пункт 8. Модуль statistics
|
||||
|
||||
```py
|
||||
>>> import statistics as stat
|
||||
>>> dir(stat)
|
||||
['Counter', 'Decimal', 'Fraction', 'NormalDist', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_normal_dist_inv_cdf', '_ss', '_sum', 'bisect_left', 'bisect_right', 'erf', 'exp', 'fabs', 'fmean', 'fsum', 'geometric_mean', 'groupby', 'harmonic_mean', 'hypot', 'itemgetter', 'log', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'multimode', 'numbers', 'pstdev', 'pvariance', 'quantiles', 'random', 'sqrt', 'stdev', 'tau', 'variance']
|
||||
>>> stattest = [1,2,65,7,4,32,1,15,45]
|
||||
>>> stat.median(stattest)
|
||||
7
|
||||
>>> stat.mode(stattest)
|
||||
1
|
||||
>>> stat.mean(stattest)
|
||||
19.11111111111111
|
||||
>>> stat.quantiles(stattest)
|
||||
[1.5, 7.0, 38.5]
|
||||
>>>
|
||||
```
|
||||
|
||||
## Общее контрольное задание
|
||||
|
||||
## Задание
|
||||
|
||||
Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия:
|
||||
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
|
||||
|
||||
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||
|
||||
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
|
||||
|
||||
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
|
||||
|
||||
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
|
||||
|
||||
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
|
||||
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>> divmod(((round(cmath.phase(0.2+0.8j),2))*20),3)
|
||||
(8.0, 2.6000000000000014)
|
||||
>>> tt = time.localtime()
|
||||
>>> str(tt.tm_hour) + ":" + str(tt.tm_min)
|
||||
'4:48'
|
||||
>>> days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||
>>> random.sample(days,3)
|
||||
['Wed', 'Tue', 'Thu']
|
||||
>>> random.choice(range(14,32,3))
|
||||
17
|
||||
>>> round(random.gauss(15,4))
|
||||
16
|
||||
>>> random.sample(['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'], round(random.gauss(15,4)))
|
||||
['c', 't', 'n', 'q', 'p', 'x', 'o', 'y', 'v', 'a', 'i', 'r', 'd']
|
||||
>>> (time.time() - time.mktime(tt))/60
|
||||
5.181675366560618
|
||||
>>>
|
||||
```
|
||||
@ -0,0 +1,27 @@
|
||||
## Индивидуальное задание по Теме 4.
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Вариант 13. Задание
|
||||
|
||||
Зафиксируйте текущее Московское время и запишите его в переменную. Создайте список с элементами, равномерно размещенными в диапазоне от 0 до 240 с шагом, равным значению часа в текущем времени. Подсчитайте число элементов в списке. Сделайте задержку исполнения программы на 7 сек. Выведите на экран сообщение: «Число элементов =<значение>».
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
data1 = time.localtime()
|
||||
data1
|
||||
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=13, tm_hour=14, tm_min=5, tm_sec=20, tm_wday=0, tm_yday=286, tm_isdst=0)
|
||||
data1
|
||||
hour = data1.tm_hour
|
||||
hour
|
||||
14
|
||||
rangetest = range(0,241,hour)
|
||||
rangetest
|
||||
range(0, 241, 14)
|
||||
rangelist = list(rangetest)
|
||||
rangelist
|
||||
[0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, 196, 210, 224, 238]
|
||||
time.sleep(7); print('число элементов = ', len(rangelist))
|
||||
число элементов = 18
|
||||
```
|
||||
|
После Ширина: | Высота: | Размер: 103 KiB |
|
После Ширина: | Высота: | Размер: 17 KiB |
@ -0,0 +1,32 @@
|
||||
# Индивидуальное задание по теме 5
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Создайте словарь с 30 элементами, состоящими из ключей – целых чисел от 0 до 29, и значений – случайных, равномерно распределенных чисел в интервале значений от -10 до +7. Рассчитайте сумму неотрицательных значений из словаря и отобразите её в виде строки: «Сумма неотрицательных значений словаря= XXX»
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>> import random
|
||||
>>> dic = {}
|
||||
>>> for i in range(30):
|
||||
... dic[i] = random.uniform(-10,7)
|
||||
...
|
||||
...
|
||||
>>> dic
|
||||
{0: 2.702699921460894, 1: -9.313799222713357, 2: 1.745150913860483, 3: 2.2713258625881334, 4: -4.204720276118, 5: -9.86298962222136, 6: 1.6909669546619206, 7: 6.653028615635439, 8: -0.602447489888629, 9: -0.22554068075154987, 10: 6.635735241625408, 11: 6.9674957633743055, 12: 1.302255015488445, 13: -7.544626666322164, 14: 4.920064297002757, 15: -1.1750801046722401, 16: 0.533269283762408, 17: 1.3690999434519036, 18: -9.961061355462801, 19: -7.606628471809557, 20: -9.407647840692164, 21: -9.48331386837302, 22: 0.4328807007084503, 23: -5.682208298228706, 24: -3.3609835072871173, 25: 6.440617938001598, 26: 1.4526538850069457, 27: 1.5744886145201402, 28: -1.6853041418731678, 29: -5.310800997844408}
|
||||
|
||||
>>> summap = 0
|
||||
>>> for key in dic:
|
||||
... if dic[key] >= 0:
|
||||
... summap += dic[key]
|
||||
...
|
||||
...
|
||||
>>> summap
|
||||
46.691732951149234
|
||||
|
||||
>>> print('Сумма неотрицательных значений словаря = ' , summap)
|
||||
Сумма неотрицательных значений словаря = 46.691732951149234
|
||||
```
|
||||
@ -0,0 +1,316 @@
|
||||
# Отчёт по теме 5.
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Пункт 2.
|
||||
|
||||
Изучено ветвление по условию. Разные способы и формы использования конструкций с if, elif, else.
|
||||
|
||||
```py
|
||||
>>> porog = 10
|
||||
>>> rashod1 = 15
|
||||
>>> rashod = 20
|
||||
>>> if rashod>=porog:
|
||||
dohod = 12
|
||||
elif rashod2 == porog:
|
||||
dohod = 0
|
||||
else: dohod=-8
|
||||
|
||||
>>> dohod
|
||||
12
|
||||
|
||||
>>> if rashod1>=3 and rashod2 ==4:
|
||||
dohod = rashod1
|
||||
if rashod2==porog or rashod1<rashod2:
|
||||
dohod=porog
|
||||
|
||||
|
||||
>>> dohod
|
||||
12
|
||||
|
||||
>>> if porog ==3:
|
||||
dohod =1
|
||||
elif porog == 4:
|
||||
dohod=2
|
||||
elif porog ==5:
|
||||
dohod=3
|
||||
else:
|
||||
dohod=0
|
||||
|
||||
>>> dohod
|
||||
0
|
||||
|
||||
>>> if porog>=5:rashod1=6;rashod2 =0
|
||||
|
||||
>>>
|
||||
>>> 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
|
||||
>>> 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]
|
||||
```
|
||||
|
||||
Разница в том, что цикл for в первом случае каждый раз работает с увеличивающимся списком, и заканчивается только когда случится break.
|
||||
Второй цикл закончится после четырех итераций - по длине неполной копии (shallow copy) изначального списка.
|
||||
|
||||
## Пункт 3.3.
|
||||
|
||||
```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)
|
||||
|
||||
|
||||
471
|
||||
|
||||
>>> for i in range(10):
|
||||
sps5.append(rn.randint(1,100))
|
||||
ss=sum(sps5)
|
||||
if ss>500:break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
|
||||
>>> ss
|
||||
544
|
||||
|
||||
>>> for i in range(10):
|
||||
sps5.append(rn.randint(1,100))
|
||||
ss=sum(sps5)
|
||||
if ss>500:
|
||||
print(ss); break
|
||||
else:
|
||||
print(ss)
|
||||
|
||||
|
||||
575
|
||||
```
|
||||
|
||||
ss не выводится, т.к. в случае превышения суммы 500, есть только break, но нет выполнения команды вывода ответа.
|
||||
В третьем вызове добавил выполнение команды print(ss), потом break.
|
||||
|
||||
## Пункт 3.4. Пример работы с символьной строкой.
|
||||
|
||||
```py
|
||||
>>> stroka
|
||||
'Это - автоматизированная системаЭто - автоматизированная система'
|
||||
>>> stroka = 'Это - автоматизированная система'
|
||||
>>> stroka1 = ''
|
||||
>>> for ss in stroka:
|
||||
stroka1+=''+ss
|
||||
|
||||
|
||||
>>> stroka1
|
||||
'Это - автоматизированная система'
|
||||
```
|
||||
|
||||
Пункт 3.5. Запись цикла в строке
|
||||
|
||||
```py
|
||||
>>> import math
|
||||
>>> sps2=[math.sin(i*math.pi/5+2) for i in range(100)]
|
||||
>>> import pylab
|
||||
>>> pylab.plot(sps2)
|
||||
[<matplotlib.lines.Line2D object at 0x000001BAE2E31670>]
|
||||
>>> pylab.show()
|
||||
```
|
||||
![Полученный график] (1.png)
|
||||
## Пункт 4. Цикл While
|
||||
|
||||
## Пункт 4.1. Цикл со счетчиком
|
||||
|
||||
```py
|
||||
>>> while rashod:
|
||||
print('Расход=', rashod)
|
||||
rashod-=50
|
||||
|
||||
|
||||
Расход= 300
|
||||
Расход= 250
|
||||
Расход= 200
|
||||
Расход= 150
|
||||
Расход= 100
|
||||
Расход= 50
|
||||
```
|
||||
Цикл while заканчивается тогда когда число rashod достигает 0, так как условие больше не соблюдается.
|
||||
|
||||
## Пункт 4.2. Пример с символьной строкой.
|
||||
|
||||
```py
|
||||
>>> stroka = 'Расчёт процесса в объекте регулирования'
|
||||
>>> i=0
|
||||
>>> sps2=[]
|
||||
>>> while i<len(stroka):
|
||||
r=1-2/(1+math.exp(0.1*i))
|
||||
sps2.append(r)
|
||||
print('Значение в момент', i, '=', r)
|
||||
i+=1
|
||||
|
||||
Значение в момент 0 = 0.0
|
||||
Значение в момент 1 = 0.049958374957880025
|
||||
Значение в момент 2 = 0.09966799462495568
|
||||
Значение в момент 3 = 0.14888503362331795
|
||||
Значение в момент 4 = 0.197375320224904
|
||||
Значение в момент 5 = 0.2449186624037092
|
||||
Значение в момент 6 = 0.2913126124515909
|
||||
Значение в момент 7 = 0.3363755443363322
|
||||
Значение в момент 8 = 0.3799489622552249
|
||||
Значение в момент 9 = 0.421899005250008
|
||||
Значение в момент 10 = 0.4621171572600098
|
||||
Значение в момент 11 = 0.5005202111902354
|
||||
Значение в момент 12 = 0.5370495669980353
|
||||
Значение в момент 13 = 0.5716699660851172
|
||||
Значение в момент 14 = 0.6043677771171636
|
||||
Значение в момент 15 = 0.6351489523872873
|
||||
Значение в момент 16 = 0.6640367702678489
|
||||
Значение в момент 17 = 0.6910694698329307
|
||||
Значение в момент 18 = 0.7162978701990245
|
||||
Значение в момент 19 = 0.7397830512740043
|
||||
Значение в момент 20 = 0.7615941559557649
|
||||
Значение в момент 21 = 0.7818063576087741
|
||||
Значение в момент 22 = 0.8004990217606297
|
||||
Значение в момент 23 = 0.8177540779702878
|
||||
Значение в момент 24 = 0.8336546070121553
|
||||
Значение в момент 25 = 0.8482836399575129
|
||||
Значение в момент 26 = 0.8617231593133063
|
||||
Значение в момент 27 = 0.874053287886007
|
||||
Значение в момент 28 = 0.8853516482022625
|
||||
Значение в момент 29 = 0.8956928738431645
|
||||
Значение в момент 30 = 0.9051482536448664
|
||||
Значение в момент 31 = 0.9137854901178277
|
||||
Значение в момент 32 = 0.9216685544064713
|
||||
Значение в момент 33 = 0.9288576214547277
|
||||
Значение в момент 34 = 0.935409070603099
|
||||
Значение в момент 35 = 0.9413755384972874
|
||||
Значение в момент 36 = 0.9468060128462683
|
||||
Значение в момент 37 = 0.9517459571646616
|
||||
Значение в момент 38 = 0.9562374581277391
|
||||
|
||||
>>> pylab.plot(sps2)
|
||||
[<matplotlib.lines.Line2D object at 0x000001BAE5165BB0>]
|
||||
>>> pylab.show()
|
||||
```
|
||||
![Полученный график] (2.png)
|
||||
|
||||
##4.3. Определение является ли число простым
|
||||
|
||||
```py
|
||||
>>> pylab.show()
|
||||
>>> chislo = 267
|
||||
>>> kandidat = chislo//2
|
||||
>>> while kandidat>1:
|
||||
if chislo%kandidat==0:
|
||||
print(chislo, ' имеет множитель ', kandidat)
|
||||
break
|
||||
kandidat -= 1
|
||||
else:
|
||||
print(chislo, 'является простым')
|
||||
|
||||
|
||||
267 имеет множитель 89
|
||||
|
||||
>>> for i in range(250,301):
|
||||
chislo = i
|
||||
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,112 @@
|
||||
# Общее контрольное задание по Теме 5
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Реализовать, записать в текстовый файл программы и результаты их выполнения при решении следующих задач:
|
||||
|
||||
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помо-щи) определите порядковый номер каждой буквы в английском алфавите.
|
||||
|
||||
• Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахожде-нии элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутству-ющим словом).
|
||||
|
||||
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
#Решение задачи 1
|
||||
>>> st = 'Traceback (most recent call last)'
|
||||
>>> bukv = ['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']
|
||||
>>> for i in st:
|
||||
if i.lower() in bukv:
|
||||
print (i , '-' (''.join(bukv)).find(i.lower()) + 1)
|
||||
|
||||
SyntaxError: 'str' object is not callable; perhaps you missed a comma?
|
||||
>>> for i in st:
|
||||
if i.lower() in bukv:
|
||||
print (i , '-', (''.join(bukv)).find(i.lower()) + 1)
|
||||
|
||||
|
||||
T - 20
|
||||
r - 18
|
||||
a - 1
|
||||
c - 3
|
||||
e - 5
|
||||
b - 2
|
||||
a - 1
|
||||
c - 3
|
||||
m - 13
|
||||
o - 15
|
||||
s - 19
|
||||
t - 20
|
||||
r - 18
|
||||
e - 5
|
||||
c - 3
|
||||
e - 5
|
||||
n - 14
|
||||
t - 20
|
||||
c - 3
|
||||
a - 1
|
||||
l - 12
|
||||
l - 12
|
||||
l - 12
|
||||
a - 1
|
||||
s - 19
|
||||
t - 20
|
||||
|
||||
#Решение задачи 2
|
||||
|
||||
>>> spis = 'Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахожде-нии элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).'
|
||||
>>> ch = True
|
||||
>>> while ch == True:
|
||||
check = input('Введите слово для поиска: ')
|
||||
for i in range (len(s)):
|
||||
if s[i] == check:
|
||||
print('есть!')
|
||||
ch = False
|
||||
break
|
||||
else:
|
||||
if i == len(s)-1:
|
||||
print('нет!')
|
||||
ch = False
|
||||
|
||||
|
||||
Введите слово для поиска: словами
|
||||
есть!
|
||||
>>> ch = True
|
||||
>>> while ch == True:
|
||||
check = input('Введите слово для поиска: ')
|
||||
for i in range (len(s)):
|
||||
if s[i] == check:
|
||||
print('есть!')
|
||||
ch = False
|
||||
break
|
||||
else:
|
||||
if i == len(s)-1:
|
||||
print('нет!')
|
||||
ch = False
|
||||
|
||||
|
||||
Введите слово для поиска: сло
|
||||
нет!
|
||||
|
||||
#Задание 3
|
||||
|
||||
>>> stud = ['Савин', 'Мамакин', 'Киреев', 'Капитонов']
|
||||
>>> l = [3.78, 4.3, 4.85, 4.43]
|
||||
>>> studz = ['Мамакин', 'Савин', "Капитонов", "Киреев"]
|
||||
>>> z = [4.6, 3.9, 4.52, 4.91]
|
||||
>>> checkf = input('Введите фамилию')
|
||||
Введите фамилиюСавин
|
||||
>>> for i in range(len(stud)):
|
||||
if stud[i] == checkf:
|
||||
print('Средний балл за лето - ', l[i])
|
||||
if studz[i] == checkf:
|
||||
print('Средний балл за зиму - ', z[i])
|
||||
|
||||
|
||||
Средний балл за лето - 3.78
|
||||
Средний балл за зиму - 3.9
|
||||
|
||||
```
|
||||
@ -0,0 +1 @@
|
||||
Запись строки в файл
|
||||
|
После Ширина: | Высота: | Размер: 7.9 KiB |
|
После Ширина: | Высота: | Размер: 6.6 KiB |
|
После Ширина: | Высота: | Размер: 4.8 KiB |
|
После Ширина: | Высота: | Размер: 3.7 KiB |
|
После Ширина: | Высота: | Размер: 3.8 KiB |
|
После Ширина: | Высота: | Размер: 32 KiB |
@ -0,0 +1,55 @@
|
||||
# Общее контрольное задание по теме 6
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следую-щие операции:
|
||||
|
||||
• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
|
||||
|
||||
• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
|
||||
|
||||
• Записывается кортеж в бинарный файл.
|
||||
|
||||
• Записывается в этот же файл список и закрывается файл.
|
||||
|
||||
• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
|
||||
|
||||
• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
|
||||
|
||||
• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде от-дельных списков со своими именами.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
import os
|
||||
import random
|
||||
import pickle
|
||||
os.chdir('C:\\Users\\somas\\python-labs\\TEMA6')
|
||||
random.seed()
|
||||
kor = tuple(str(random.randint(6,56)) for i in range(125))
|
||||
print(kor)
|
||||
famil = ['Савин', 'Мамакин', 'Криви', 'Капитонов', 'Киреев']
|
||||
fp = open('indbin.mnz', 'wb')
|
||||
pickle.dump(kor,fp)
|
||||
pickle.dump(famil, fp)
|
||||
fp.close()
|
||||
fp = open('indbin.mnz', 'rb')
|
||||
obj1 = pickle.load(fp)
|
||||
obj2 = pickle.load(fp)
|
||||
if obj1 == kor and obj2 == famil:
|
||||
print('Совпало')
|
||||
for i in range(0,len(kor), 5):
|
||||
exec(f'spis{i} = kor[i:i+5]')
|
||||
print(spis0)
|
||||
```
|
||||
|
||||
Результат работы модуля:
|
||||
|
||||
```py
|
||||
================================= RESTART: C:\Users\somas\python-labs\TEMA6\task.py ================================
|
||||
('7', '43', '21', '8', '44', '38', '24', '33', '17', '54', '23', '25', '39', '42', '33', '30', '37', '42', '25', '40', '11', '42', '48', '19', '22', '24', '16', '17', '53', '50', '41', '34', '56', '49', '22', '13', '50', '56', '50', '11', '27', '8', '30', '46', '36', '10', '25', '6', '32', '48', '22', '15', '31', '13', '18', '55', '41', '35', '6', '38', '7', '20', '13', '9', '48', '56', '6', '34', '22', '32', '49', '45', '34', '55', '37', '24', '31', '26', '51', '48', '7', '37', '18', '56', '9', '43', '55', '28', '56', '18', '13', '21', '37', '31', '12', '19', '24', '38', '20', '25', '24', '6', '40', '49', '52', '24', '16', '47', '46', '42', '26', '45', '6', '45', '54', '6', '27', '40', '50', '29', '28', '24', '30', '11', '43')
|
||||
Совпало
|
||||
('7', '43', '21', '8', '44')
|
||||
```
|
||||
@ -0,0 +1,80 @@
|
||||
# Тест по модулю 2
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание (Вариант 2)
|
||||
|
||||
1) Запросите у пользователя и введите две границы: XL и XU интервала значений некоторой переменной.
|
||||
|
||||
2) Создайте список с 59 случайными равномерно распределенными числами из заданного пользователем диапазона значений.
|
||||
|
||||
3) Разделите этот диапазон на 5 одинаковых непересекающихся интервалов и подсчитайте число элементов списка в каждом таком интервале. Отобразите результат на экране.
|
||||
|
||||
4) Для контроля рассчитайте сумму чисел элементов и отобразите по шаблону: "Общее число элементов в списке =ХХ".
|
||||
|
||||
5) Выведите список в текстовый файл по 4 числа на строке с разделением их запятыми.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
import os
|
||||
import random
|
||||
os.chdir ('C:\\Users\\u206-09\\Desktop\\python-labs\\TEMA6')
|
||||
XL = float(input("Нижняя граница"))
|
||||
Нижняя граница15
|
||||
XU = float(input('Верхняя граница'))
|
||||
Верхняя граница48
|
||||
rannum = [random.uniform(XL,XU) for i in range(59)]
|
||||
rannum
|
||||
[44.33429235528566, 31.820431363385882, 20.71109812778893, 18.375167238126423, 29.507081962303058, 28.39746206639243, 42.445363903985545, 38.45520256573554, 33.29746000380693, 32.04861929535236, 38.776674170573614, 24.526054455786053, 19.042823522968227, 46.19636662677563, 32.322393521553494, 36.72731850346737, 42.19758701932, 47.17300510987348, 35.40764757467959, 44.0228687502407, 37.42128632267817, 40.73000894105289, 36.188263215335496, 19.228399965731327, 32.509044599774654, 33.063795297569655, 16.51622853734086, 27.043696679512326, 38.76688110687924, 41.694563548299456, 18.090256790951102, 24.146622589551626, 46.022240775849156, 27.337873436434855, 25.818198487764242, 17.620887117317903, 41.7772634578061, 28.955963377133557, 20.732440239488263, 43.836130799227604, 36.38313005309695, 23.39900028180741, 18.487299665381805, 44.1365158534337, 28.29061567973843, 46.554219745084914, 27.41669047229879, 18.585108121517557, 33.24982188391494, 44.60821739112903, 18.526684849434446, 45.13480541690015, 26.40627485198803, 38.58591180454186, 21.99657237743291, 36.134907564652366, 33.973323777969625, 35.21691704933769, 29.653627985382343]
|
||||
interval = (XU-XL)/5
|
||||
for i in range(5):
|
||||
low = XL+i*interval
|
||||
up = XL+(i+1)*interval
|
||||
for j in rannum:
|
||||
if (j <= up and j >= low):
|
||||
k+=1
|
||||
print('Кол-во эл-тов в диапазоне ', low, ', ', up, ' - ', k)
|
||||
k = 0
|
||||
|
||||
|
||||
Кол-во эл-тов в диапазоне 15.0 , 21.6 - 11
|
||||
Кол-во эл-тов в диапазоне 21.6 , 28.2 - 9
|
||||
Кол-во эл-тов в диапазоне 28.2 , 34.8 - 13
|
||||
Кол-во эл-тов в диапазоне 34.8 , 41.4 - 12
|
||||
Кол-во эл-тов в диапазоне 41.4 , 48.0 - 14
|
||||
count = 0
|
||||
for i in rannum:
|
||||
count+=1
|
||||
|
||||
|
||||
print('Кол-во элементов в списке - ', count)
|
||||
Кол-во элементов в списке - 59
|
||||
|
||||
fp = open('modultest2.txt', 'w')
|
||||
|
||||
for i in range (0, len(rannum), 4):
|
||||
ch = rannum[i:i+4]
|
||||
line = ', '.join(map(str, ch))
|
||||
fp.write(line + '\n')
|
||||
|
||||
|
||||
77
|
||||
77
|
||||
77
|
||||
77
|
||||
71
|
||||
77
|
||||
78
|
||||
78
|
||||
79
|
||||
77
|
||||
75
|
||||
77
|
||||
76
|
||||
76
|
||||
58
|
||||
fp.close()
|
||||
```
|
||||

|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
44.33429235528566, 31.820431363385882, 20.71109812778893, 18.375167238126423
|
||||
29.507081962303058, 28.39746206639243, 42.445363903985545, 38.45520256573554
|
||||
33.29746000380693, 32.04861929535236, 38.776674170573614, 24.526054455786053
|
||||
19.042823522968227, 46.19636662677563, 32.322393521553494, 36.72731850346737
|
||||
42.19758701932, 47.17300510987348, 35.40764757467959, 44.0228687502407
|
||||
37.42128632267817, 40.73000894105289, 36.188263215335496, 19.228399965731327
|
||||
32.509044599774654, 33.063795297569655, 16.51622853734086, 27.043696679512326
|
||||
38.76688110687924, 41.694563548299456, 18.090256790951102, 24.146622589551626
|
||||
46.022240775849156, 27.337873436434855, 25.818198487764242, 17.620887117317903
|
||||
41.7772634578061, 28.955963377133557, 20.732440239488263, 43.836130799227604
|
||||
36.38313005309695, 23.39900028180741, 18.487299665381805, 44.1365158534337
|
||||
28.29061567973843, 46.554219745084914, 27.41669047229879, 18.585108121517557
|
||||
33.24982188391494, 44.60821739112903, 18.526684849434446, 45.13480541690015
|
||||
26.40627485198803, 38.58591180454186, 21.99657237743291, 36.134907564652366
|
||||
33.973323777969625, 35.21691704933769, 29.653627985382343
|
||||
@ -0,0 +1,282 @@
|
||||
#Отчет по теме 6
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Пункт 2.1. Эхо-вывод
|
||||
|
||||
```py
|
||||
>>> stroka = 'Автоматизированная система управления'
|
||||
>>> stroka
|
||||
'Автоматизированная система управления'
|
||||
```
|
||||
|
||||
## Пункт 2.2. Печать
|
||||
|
||||
```py
|
||||
>>> fff = 234.5; gg = 'Значение температуры = '
|
||||
>>> print(gg,fff)
|
||||
Значение температуры = 234.5
|
||||
>>> print(gg,fff, sep = '/')
|
||||
Значение температуры = /234.5
|
||||
>>> print(gg,fff,sep='/', end = '***'); print('___')
|
||||
Значение температуры = /234.5***___
|
||||
>>> print("""Здесь может выводиться
|
||||
большой текст,
|
||||
анимающий несколько строк""")
|
||||
Здесь может выводиться
|
||||
большой текст,
|
||||
анимающий несколько строк
|
||||
>>> print('Здесь моет находиться',)
|
||||
Здесь моет находиться
|
||||
>>> print('Здесь может находиться',
|
||||
"большой текст,",
|
||||
"занимающий несколько строк")
|
||||
Здесь может находиться большой текст, занимающий несколько строк
|
||||
```
|
||||
|
||||
## Пункт 2.3. Функция write
|
||||
|
||||
```py
|
||||
>>> import sys
|
||||
>>> sys.stdout.write('Функция write')
|
||||
Функция write13
|
||||
>>> sys.stdout.write('Функция write\n')
|
||||
Функция write
|
||||
14
|
||||
```
|
||||
|
||||
## Пункт 3. Ввод с клавиатуры
|
||||
|
||||
```py
|
||||
>>> psw = input('Введите пароль:')
|
||||
Введите пароль:12345
|
||||
>>> psw
|
||||
'12345'
|
||||
>>> while True:
|
||||
znach = float(input('Задайте коэф. усиления = '))
|
||||
if znach < 17.5 or znach > 23.8:
|
||||
print('Ошибка')
|
||||
else:
|
||||
break
|
||||
|
||||
|
||||
Задайте коэф. усиления = 50
|
||||
Ошибка
|
||||
Задайте коэф. усиления = 14
|
||||
Ошибка
|
||||
Задайте коэф. усиления = 21
|
||||
>>> znach
|
||||
21.0
|
||||
>>> import math
|
||||
>>> print(eval(input('введите выражение для расчёта = ')))
|
||||
введите выражение для расчёта = math.log10(23/(1+math.exp(-3.24)))
|
||||
1.34504378689765
|
||||
```
|
||||
|
||||
## Пункт 4.
|
||||
|
||||
## Пункт 4.1. Модуль os, работа с путями
|
||||
|
||||
```py
|
||||
>>> import os
|
||||
>>> os.chdir ('C:/Users/somas/python-labs/TEMA6')
|
||||
>>> os.getcwd()
|
||||
'C:\\Users\\somas\\python-labs\\TEMA6'
|
||||
>>> savin = os.getcwd()
|
||||
>>> savin
|
||||
'C:\\Users\\somas\\python-labs\\TEMA6'
|
||||
>>> print(savin)
|
||||
C:\Users\somas\python-labs\TEMA6
|
||||
>>> os.mkdir("C:/Users/somas/python-labs/TEMA6/TEST")
|
||||
>>> os.listdir("C:/Users/somas/python-labs/TEMA6")
|
||||
['.gitkeep', 'img1.png', 'report.md', 'TEST']
|
||||
>>> os.path.isdir("C:/Users/somas/python-labs/TEMA6")
|
||||
True
|
||||
>>> os.path.isdir("C:/Users/somas/python-labs/TEMA")
|
||||
False
|
||||
>>> os.rmdir("C:/Users/somas/python-labs/TEMA6/TEST")
|
||||
>>> os.listdir("C:/Users/somas/python-labs/TEMA6")
|
||||
['.gitkeep', 'img1.png', 'report.md']
|
||||
>>> head, tail = os.path.split(savin)
|
||||
>>> print(head)
|
||||
C:\Users\somas\python-labs
|
||||
>>> print(tail)
|
||||
TEMA6
|
||||
>>> os.path.exists("U:/Blasphemous 2")
|
||||
True
|
||||
>>> os.path.exists("U:/NONE")
|
||||
False
|
||||
```
|
||||
|
||||

|
||||
|
||||
## Пункт 4.2 - 4.4. Изучение процесса работы с файлом, изучение функций открытия и закрытия файла.
|
||||
|
||||
```py
|
||||
>>> drk = ("C:/Users/somas/python-labs/TEMA6")
|
||||
>>> fp = open(file=drk+'/zapis1.txt', mode = 'w')
|
||||
>>> dir(fp)
|
||||
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']
|
||||
>>> fp1 = open('zapis2.bin', mode='wb+')
|
||||
>>> fp.close()
|
||||
```
|
||||
|
||||
## Пункт 4.5. Запись данных в файл
|
||||
|
||||
```py
|
||||
>>> sps = list(range(1,13))
|
||||
>>> fp2 = open('zapis3.txt', 'w')
|
||||
>>> fp2.write(str(sps[:4]) + "\n")
|
||||
13
|
||||
>>> fp2.write(str(sps[4:8]) + "\n")
|
||||
13
|
||||
>>> fp2.write(str(sps[8:]) + "\n")
|
||||
16
|
||||
>>> fp2.close()
|
||||
>>> fp3.close()
|
||||
>>> fp3 = open('zapis4.txt', 'w')
|
||||
>>> for i in range(len(sps3)):
|
||||
stroka4=sps3[i][0] + ' ' + str(sps3[i][1])
|
||||
fp3.write(stroka4)
|
||||
|
||||
|
||||
11
|
||||
11
|
||||
12
|
||||
>>> fp3.close()
|
||||
>>> gh = open('zapis5.txt', 'w')
|
||||
>>> for r in sps3:
|
||||
gh.write(r[0] + ' ' + str(r[1]) + '\n')
|
||||
|
||||
|
||||
12
|
||||
12
|
||||
13
|
||||
>>> gh.close()
|
||||
>>> gh=open('zapis5.txt','w')
|
||||
>>> for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
|
||||
```
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Пункт 4.6. Способ чтения данных из файла
|
||||
|
||||
```py
|
||||
>>> fp = open('zapis3.txt')
|
||||
>>> for stroka in fp:
|
||||
stroka = stroka.rstrip('\n')
|
||||
stroka = stroka.replace('[', '')
|
||||
stroka = stroka.replace(']', '')
|
||||
sps1 = sps1+stroka.split(',')
|
||||
|
||||
|
||||
>>> fp.close()
|
||||
>>> sps1
|
||||
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
|
||||
>>> sps
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||
>>> sps2 = []
|
||||
>>> for i in sps1:
|
||||
sps2.append(int(i))
|
||||
|
||||
|
||||
>>> sps2
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||
```
|
||||
|
||||
## Пункт 4.7. Чтение данных через read
|
||||
|
||||
```py
|
||||
>>> fp = open('zapis3.txt')
|
||||
>>> stroka1=fp.read(12)
|
||||
>>> stroka2 = fp.read()
|
||||
>>> fp.close()
|
||||
>>> stroka1; stroka2
|
||||
'[1, 2, 3, 4]'
|
||||
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
|
||||
```
|
||||
|
||||
## Пункт 4.8. Чтение данных через readline и readlines
|
||||
|
||||
```py
|
||||
>>> strokatest = fp.readline()
|
||||
>>> strokatest
|
||||
'[1, 2, 3, 4]\n'
|
||||
>>> for line in fp:
|
||||
print(line.rstrip())
|
||||
|
||||
|
||||
[5, 6, 7, 8]
|
||||
[9, 10, 11, 12]
|
||||
>>> strokatest2 = fp.readlines()
|
||||
>>> strokatest2
|
||||
[]
|
||||
>>> fp.close()
|
||||
>>> fp = open('zapis3.txt')
|
||||
>>> strokatest2 = fp.readlines()
|
||||
>>> strokatest2
|
||||
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
|
||||
```
|
||||
|
||||
## Пункт 4.9. Изучение модуля pickle
|
||||
|
||||
```py
|
||||
>>> import pickle
|
||||
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
|
||||
>>> fp = open('zapis6.mnz', 'wb')
|
||||
>>> pickle.dump(mnoz1,fp)
|
||||
>>> fp.close()
|
||||
>>> fp = open('zapis6.mnz', 'rb')
|
||||
>>> mnoz2 = pickle.load(fp)
|
||||
>>> fp.close()
|
||||
>>> mnoz2
|
||||
{'iPhone', 'book', 'pen', 'table'}
|
||||
|
||||
>>> fp = open('zapis7.2ob', 'wb')
|
||||
>>> pickle.dump(mnoz1,fp)
|
||||
>>> pickle.dump(sps3,fp)
|
||||
>>> fp.close()
|
||||
>>> fp = open('zapis7.2ob', 'rb')
|
||||
>>> obj1 = pickle.load(fp)
|
||||
>>> obj2 = pickle.load(fp)
|
||||
>>> fp.close()
|
||||
>>> obj1
|
||||
{'iPhone', 'book', 'pen', 'table'}
|
||||
>>> obj2
|
||||
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
|
||||
```
|
||||
|
||||
## Пункт 5. Перенаправление потоков ввода и вывода данных
|
||||
|
||||
```py
|
||||
>>> import sys
|
||||
>>> vr_out=sys.stdout
|
||||
>>> fc = open('Stroka.txt', 'w')
|
||||
>>> sys.stdout = fc
|
||||
>>> print('Запись строки в файл')
|
||||
>>> sys.stdout=vr_out
|
||||
>>> print('Запись строки на экран')
|
||||
Запись строки на экран
|
||||
>>> fc.close()
|
||||
>>> tmp_in = sys.stdin
|
||||
>>> fd = open('Stroka.txt', 'r')
|
||||
>>> sys.stdin = fd
|
||||
>>> sys.stdin
|
||||
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
|
||||
>>> while True:
|
||||
try:
|
||||
line = input()
|
||||
print(line)
|
||||
except EOFError:
|
||||
break
|
||||
|
||||
|
||||
Запись строки в файл
|
||||
>>> fd.close()
|
||||
>>> sys.stdin=tmp_in
|
||||
```
|
||||
|
||||

|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
import os
|
||||
import random
|
||||
import pickle
|
||||
os.chdir('C:\\Users\\somas\\python-labs\\TEMA6')
|
||||
random.seed()
|
||||
kor = tuple(str(random.randint(6,56)) for i in range(125))
|
||||
print(kor)
|
||||
famil = ['Савин', 'Мамакин', 'Криви', 'Капитонов', 'Киреев']
|
||||
fp = open('indbin.mnz', 'wb')
|
||||
pickle.dump(kor,fp)
|
||||
pickle.dump(famil, fp)
|
||||
fp.close()
|
||||
fp = open('indbin.mnz', 'rb')
|
||||
obj1 = pickle.load(fp)
|
||||
obj2 = pickle.load(fp)
|
||||
if obj1 == kor and obj2 == famil:
|
||||
print('Совпало')
|
||||
for i in range(0,len(kor), 5):
|
||||
exec(f'spis{i} = kor[i:i+5]')
|
||||
print(spis0)
|
||||
@ -0,0 +1,3 @@
|
||||
[1, 2, 3, 4]
|
||||
[5, 6, 7, 8]
|
||||
[9, 10, 11, 12]
|
||||
@ -0,0 +1 @@
|
||||
Иванов И. 1Петров П. 2Сидоров С. 3
|
||||
@ -0,0 +1,3 @@
|
||||
Иванов И. 1
|
||||
Петров П. 2
|
||||
Сидоров С. 3
|
||||
@ -0,0 +1,62 @@
|
||||
# Индивидуальное задание к теме 7
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Вариант 9
|
||||
|
||||
## Задание
|
||||
|
||||
Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
import math
|
||||
def rasch(x,yT,T):
|
||||
"""Расчет выходного значения"""
|
||||
return (x + T*yT)/(T+1)
|
||||
|
||||
def generator(n, A, tau, phi):
|
||||
sign = []
|
||||
for i in range(n):
|
||||
t = i
|
||||
x = A*math.sin(2*math.pi*t/tau + phi)
|
||||
sign.append(x)
|
||||
return sign
|
||||
|
||||
def output(inputsign, T):
|
||||
outputsign = []
|
||||
yT = 0
|
||||
for x in inputsign:
|
||||
y = rasch(x,yT,T)
|
||||
outputsign.append(y)
|
||||
yT=y
|
||||
return outputsign
|
||||
|
||||
saving(inputsign,outputsign,'resultindtask.txt')
|
||||
def saving(inputsign, outputsign, filename):
|
||||
with open(filename, 'w', encoding = 'utf-8') as file:
|
||||
for i in range(len(inputsign)):
|
||||
file.write(f'{inputsign[i]:.6f}, {outputsign[i]:.6f}\n'
|
||||
|
||||
n = 100
|
||||
A = 2
|
||||
tau = 7
|
||||
phi = 0.35
|
||||
T=3
|
||||
|
||||
inputsign = generator(n,A,tau,phi)
|
||||
inputsign
|
||||
[0.6857956149109027, 1.8964488934073493, 1.6790374746606227, 0.19727659137173062, -1.4330375889291693, -1.9842452361268608, -1.0412757492945761, 0.6857956149109016, 1.896448893407349, 1.6790374746606234, 0.197276591371732, -1.4330375889291658, -1.984245236126861, -1.0412757492945734, 0.6857956149109011, 1.8964488934073476, 1.6790374746606236, 0.19727659137172895, -1.4330375889291704, -1.9842452361268605, -1.041275749294574, 0.685795614910904, 1.8964488934073476, 1.679037474660622, 0.19727659137172943, -1.43303758892917, -1.9842452361268597, -1.0412757492945743, 0.6857956149109036, 1.8964488934073496, 1.679037474660626, 0.19727659137172993, -1.4330375889291698, -1.9842452361268605, -1.0412757492945688, 0.685795614910903, 1.8964488934073493, 1.6790374746606225, 0.19727659137173043, -1.4330375889291695, -1.9842452361268608, -1.0412757492945752, 0.6857956149109026, 1.8964488934073493, 1.6790374746606305, 0.1972765913717309, -1.433037588929169, -1.9842452361268608, -1.0412757492945757, 0.6857956149109021, 1.8964488934073491, 1.6790374746606231, 0.19727659137171724, -1.4330375889291689, -1.9842452361268608, -1.0412757492945761, 0.6857956149109017, 1.896448893407349, 1.6790374746606234, 0.19727659137173187, -1.4330375889291584, -1.9842452361268608, -1.0412757492945766, 0.6857956149109012, 1.8964488934073487, 1.6790374746606236, 0.19727659137173237, -1.4330375889291682, -1.9842452361268592, -1.041275749294577, 0.6857956149109008, 1.8964488934073487, 1.6790374746606316, 0.19727659137176112, -1.4330375889291578, -1.9842452361268645, -1.0412757492945894, 0.6857956149109004, 1.896448893407344, 1.6790374746606243, 0.19727659137174747, -1.4330375889291476, -1.9842452361268628, -1.0412757492945777, 0.6857956149108865, 1.8964488934073482, 1.679037474660632, 0.19727659137176212, -1.4330375889291374, -1.9842452361268612, -1.0412757492945903, 0.6857956149108727, 1.8964488934073436, 1.67903747466064, 0.19727659137174847, -1.4330375889291667, -1.984245236126863, -1.0412757492946028, 0.6857956149108856, 1.896448893407348]
|
||||
|
||||
outputsign = output(inputsign,T)
|
||||
outputsign
|
||||
[0.17144890372772567, 0.6026989011476316, 0.8717835445258794, 0.7031568062373422, 0.16910820744571436, -0.36923015344742943, -0.5372415524092161, -0.23148226057918672, 0.3005005279174472, 0.6451347646032413, 0.533170221295364, 0.04161826873923152, -0.4648476074772916, -0.6089546429316121, -0.28526707847098376, 0.26016191449859905, 0.6148808045391052, 0.5104797512472612, 0.024600416203153286, -0.47761099687935016, -0.6185271849831562, -0.2924464850096411, 0.25477735959460607, 0.61084238836111, 0.5074509391137649, 0.0223288071030312, -0.4793147037044415, -0.6198049651019748, -0.29340482009875524, 0.25405860827777094, 0.6103033248734847, 0.507046641498046, 0.02202558389124204, -0.4795421211132836, -0.6199755281586049, -0.2935327423912279, 0.25396266655841643, 0.610231368583968, 0.5069926742809086, 0.021985108478389026, -0.47957247767292344, -0.6199982955783363, -0.2935498179560266, 0.2539498598848174, 0.6102217635787707, 0.5069854705270107, 0.021979705662965754, -0.4795765297844909, -0.6200013346620121, -0.29355209726878356, 0.2539481504002496, 0.6102204814653429, 0.5069845089419365, 0.021978984474160135, -0.4795770706760951, -0.6200017403307154, -0.29355240152031115, 0.2539479222116039, 0.6102203103238588, 0.5069843805858271, 0.021978888207080716, -0.4795771428764046, -0.6200017944809476, -0.2935524421329854, 0.2539478917520981, 0.6102202874792295, 0.5069843634523552, 0.021978875356974348, -0.47957715251398403, -0.6200018017091322, -0.29355244755412396, 0.2539478876862442, 0.610220284429841, 0.5069843611653211, 0.02197887364170137, -0.4795771538004401, -0.6200018026739774, -0.293552448277758, 0.2539478871435175, 0.6102202840227942, 0.5069843608600325, 0.021978873412737465, -0.4795771539721626, -0.6200018028027664, -0.29355244837435324, 0.25394788707107213, 0.6102202839684621, 0.5069843608192871, 0.02197887338218102, -0.47957715399507955, -0.6200018028199572, -0.2935524483872497, 0.2539478870613986, 0.610220283961209, 0.5069843608138438, 0.02197887337809118, -0.4795771539981474, -0.6200018028222611, -0.29355244838897443, 0.2539478870601062]
|
||||
|
||||
import os
|
||||
os.chdir('C:\\Users\\u206-09\\Desktop\\python-labs\\TEMA7')
|
||||
|
||||
saving(inputsign,outputsign,'resultindtask.txt')
|
||||
```
|
||||
|
||||
Был создан файл содержащий два столбца с входным и выходным сигналом в папке.
|
||||
|
После Ширина: | Высота: | Размер: 21 KiB |
|
После Ширина: | Высота: | Размер: 17 KiB |
@ -0,0 +1,537 @@
|
||||
# Отчет по Теме 7
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## 1. Подготовка к работе
|
||||
|
||||
```py
|
||||
>>> import os
|
||||
>>> os.chdir('C:\\Users\\somas\\python-labs\\TEMA7')
|
||||
>>>
|
||||
```
|
||||
|
||||
## 2.1 Создание пользовательской функции без аргументов
|
||||
|
||||
```py
|
||||
>>> def uspeh():
|
||||
"""Подтверждение успеха операции"""
|
||||
print('Выполнено успешно!')
|
||||
|
||||
|
||||
>>> uspeh()
|
||||
Выполнено успешно!
|
||||
>>> dir()
|
||||
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'uspeh']
|
||||
>>> 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
|
||||
>>> help(sravnenie)
|
||||
Help on function sravnenie in module __main__:
|
||||
|
||||
sravnenie(a, b)
|
||||
Сравнение a и b
|
||||
```
|
||||
|
||||
## 2.3. Функция с return
|
||||
|
||||
```py
|
||||
>>> def logistfun(b,a):
|
||||
"""Вычисление логистической функции"""
|
||||
import math
|
||||
return a/(1+math.exp(-b))
|
||||
|
||||
>>> v,w = 1,0.7; z=logistfun(w,v)
|
||||
>>> z
|
||||
0.6681877721681662
|
||||
>>>
|
||||
```
|
||||
|
||||
## 2.4. Сложение для разных типов аргументов
|
||||
|
||||
```py
|
||||
>>> def slozh(a1,a2,a3,a4):
|
||||
"""Сложение значений четырех аргументов"""
|
||||
return a1+a2+a3+a4
|
||||
|
||||
>>> slozh(1,2,3,4)
|
||||
10
|
||||
>>> slozh('1', '2', '3', '4')
|
||||
'1234'
|
||||
>>> b1=[1,2]; b2=[-1,-2]; b3=[0,2]; b4=[-1,-1]
|
||||
>>> q = slozh(b1,b2,b3,b4)
|
||||
>>> q
|
||||
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||
>>> b1 = (1,2); b2 = (3,4); b3=(5,6); b4=(7,8)
|
||||
>>> c = slozh(b1,b2,b3,b4)
|
||||
>>> c
|
||||
(1, 2, 3, 4, 5, 6, 7, 8)
|
||||
>>> b1 = {a:1}; b2 = {b:2}; b3 ={c:3}; b4 ={d:4}
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#42>", line 1, in <module>
|
||||
b1 = {a:1}; b2 = {b:2}; b3 ={c:3}; b4 ={d:4}
|
||||
NameError: name 'a' is not defined
|
||||
>>> b1 = {'a':1}; b2 = {'b':2}; b3 ={'c':3}; b4 ={'d':4}
|
||||
>>> s = slozh(b1,b2,b3,b4)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#44>", line 1, in <module>
|
||||
s = slozh(b1,b2,b3,b4)
|
||||
File "<pyshell#32>", line 3, in slozh
|
||||
return a1+a2+a3+a4
|
||||
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
|
||||
>>> b1 = {1,2}; b2 ={3,4}; b3={5,6}; b4={7,8}
|
||||
>>> m = slozh(b1,b2,b3,b4)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#46>", line 1, in <module>
|
||||
m = slozh(b1,b2,b3,b4)
|
||||
File "<pyshell#32>", line 3, in slozh
|
||||
return a1+a2+a3+a4
|
||||
TypeError: unsupported operand type(s) for +: 'set' and 'set'
|
||||
```
|
||||
|
||||
## 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]
|
||||
>>> import pylab
|
||||
>>> pylab.plot(spsy)
|
||||
[<matplotlib.lines.Line2D object at 0x0000019BBB4C4850>]
|
||||
>>> pylab.show
|
||||
<function show at 0x0000019BB8C8FD30>
|
||||
>>> pylab.show()
|
||||
```
|
||||

|
||||
|
||||
## 3.1. Получение списка атрибутов объекта-функции.
|
||||
|
||||
```py
|
||||
>>> dir(inerz)
|
||||
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
|
||||
>>> inerz.__doc__
|
||||
'Модель устройства с памятью:\n\tx - текущее значение вх. сигнала\n\tT - пост. времени\n\typred - предыдущее значение выхода устройства'
|
||||
>>> help(inerz)
|
||||
Help on function inerz in module __main__:
|
||||
|
||||
inerz(x, T, ypred)
|
||||
Модель устройства с памятью:
|
||||
x - текущее значение вх. сигнала
|
||||
T - пост. времени
|
||||
ypred - предыдущее значение выхода устройства
|
||||
```
|
||||
|
||||
## 3.2. Сохранение ссылки на объект-функцию в другой переменной
|
||||
|
||||
```py
|
||||
>>> fnkt=sravnenie
|
||||
>>> v=16
|
||||
>>> fnkt(v,23)
|
||||
16 меньше 23
|
||||
```
|
||||
|
||||
## 3.3. Возможность альтернативного определения функции в программе
|
||||
|
||||
```py
|
||||
>>> typ_fun = 8
|
||||
>>> if typ_fun==1:
|
||||
def func():
|
||||
print('Функция 1')
|
||||
else:
|
||||
def func():
|
||||
print('Функция 2')
|
||||
|
||||
|
||||
>>> func()
|
||||
Функция 2
|
||||
```
|
||||
|
||||
## 4.1. Использование функции как аргумента другой функции
|
||||
|
||||
```py
|
||||
>>> def fun_arg(fff,a,b,c):
|
||||
"""fff-имя функции, используемой
|
||||
в качестве аргумента функции fun_arg"""
|
||||
return a+fff(c,b)
|
||||
|
||||
>>> zz = fun_arg(logistfun, -3,1,0.7)
|
||||
>>> zz
|
||||
-2.3318122278318336
|
||||
```
|
||||
|
||||
## 4.2. Обязательные и необязательные аргументы
|
||||
|
||||
```py
|
||||
>>> def logistfun(a,b=1):
|
||||
"""Вычисление логистической функции"""
|
||||
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
|
||||
>>> b1=[1,2]; b2=[-1,-2]; b3=[0,2]; b4=[-1,-1]
|
||||
>>> b1234 = [b1,b2,b3,b4]
|
||||
>>> qq = slozh(*b1234)
|
||||
>>> qq
|
||||
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||
```
|
||||
|
||||
## 4.5. Пример со значениями аргументов функции, содержащимися в словаре
|
||||
|
||||
```py
|
||||
>>> dic4={"a1":1, "a2":2, "a3":3, "a4":4}
|
||||
>>> qqq=slozh(**dic4)
|
||||
>>> qqq
|
||||
10
|
||||
```
|
||||
|
||||
## 4.6. Смешанные ссылки
|
||||
|
||||
```py
|
||||
>>> el=(-1,6);dd2={'a3':3,'a4':9}
|
||||
>>> qqqq=slozh(*el,**dd2)
|
||||
>>> 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
|
||||
>>> func4(-1, 2, 1,2,3)
|
||||
-4
|
||||
>>> def func5(a,b=7, **slov7):
|
||||
"""Словарь - сборка аргументов - должен быть последним"""
|
||||
smm=0
|
||||
for elt in slov7.values():
|
||||
smm+=elt
|
||||
return a*smm+b
|
||||
|
||||
>>> func5(-1,2, aslov=0,bslov=3,cslov=6)
|
||||
-7
|
||||
```
|
||||
|
||||
## 4.9. Изменение значений объектов, используемых в качестве аргументов функции
|
||||
|
||||
```py
|
||||
>>> a=90
|
||||
>>> def func3(b):
|
||||
b=5*b+67
|
||||
|
||||
|
||||
>>> func3(a)
|
||||
>>> a
|
||||
90
|
||||
>>> sps1=[1,2,3,4]
|
||||
>>> def func2(sps):
|
||||
sps[1]=99
|
||||
|
||||
|
||||
>>> func2(sps1)
|
||||
>>> print(sps1)
|
||||
[1, 99, 3, 4]
|
||||
>>> kort1 = (1,2,3,4)
|
||||
>>> def func3(kort):
|
||||
kort[1]=99
|
||||
|
||||
|
||||
>>> func3(kort1)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#171>", line 1, in <module>
|
||||
func3(kort1)
|
||||
File "<pyshell#170>", line 2, in func3
|
||||
kort[1]=99
|
||||
TypeError: 'tuple' object does not support item assignment
|
||||
>>> kort1
|
||||
(1, 2, 3, 4)
|
||||
```
|
||||
|
||||
## 5.1. Специальные типы пользовательских функций. Анонимные функции
|
||||
|
||||
```py
|
||||
>>> import math
|
||||
>>> anfun1 = lambda: 1.5+math.log10(17.23)
|
||||
>>> anfun1()
|
||||
2.7362852774480286
|
||||
>>> anfun2 = lambda a,b: a+math.log10(b)
|
||||
>>> anfun2(17,234)
|
||||
19.369215857410143
|
||||
>>> anfun3=lambda a,b=234: a+math.log10(b)
|
||||
>>> anfun3(100)
|
||||
102.36921585741014
|
||||
>>>
|
||||
```
|
||||
|
||||
## 5.2. Функции-генераторы
|
||||
|
||||
```py
|
||||
>>> def func5(diap,shag):
|
||||
"""Итератор, возвращающий значения
|
||||
из диапазона от 1 до diap с шагом shag"""
|
||||
for j in range(1,diap+1, shag):
|
||||
yield j
|
||||
|
||||
|
||||
>>> for mm in func5(7,3):
|
||||
print(mm)
|
||||
|
||||
|
||||
1
|
||||
4
|
||||
7
|
||||
>>> alp = func5(7,3)
|
||||
>>> print(alp,__next__())
|
||||
>>> print(alp.__next__())
|
||||
1
|
||||
>>> print(alp.__next__())
|
||||
4
|
||||
>>> print(alp.__next__())
|
||||
7
|
||||
>>> print(alp.__next__())
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#26>", line 1, in <module>
|
||||
print(alp.__next__())
|
||||
StopIteration
|
||||
```
|
||||
|
||||
## 6.1. Примеры на локализацию объектов
|
||||
|
||||
### Пример 1.
|
||||
```py
|
||||
>>> glb=10
|
||||
>>> def func7(arg):
|
||||
loc1=15
|
||||
glb=8
|
||||
return loc1*arg
|
||||
|
||||
>>> res=func7(glb)
|
||||
>>> res
|
||||
150
|
||||
>>> glb
|
||||
10
|
||||
```
|
||||
|
||||
### Пример 2.
|
||||
|
||||
```py
|
||||
>>> def func8(arg):
|
||||
loc1 = 15
|
||||
print(glb)
|
||||
glb=8
|
||||
return(loc1*arg)
|
||||
|
||||
>>> res=func8(glb)
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#42>", line 1, in <module>
|
||||
res=func8(glb)
|
||||
File "<pyshell#41>", line 3, in func8
|
||||
print(glb)
|
||||
UnboundLocalError: local variable 'glb' referenced before assignment
|
||||
>>> def func8(arg):
|
||||
loc1 = 15
|
||||
glb=8
|
||||
print(glb)
|
||||
return(loc1*arg)
|
||||
|
||||
>>> res = func8(glb)
|
||||
8
|
||||
>>> res
|
||||
150
|
||||
>>>
|
||||
```
|
||||
|
||||
### Пример 3.
|
||||
|
||||
```py
|
||||
>>> glb = 11
|
||||
>>> def func7(arg):
|
||||
loc1=15
|
||||
global glb
|
||||
print(glb)
|
||||
glb = 8
|
||||
return loc1*arg
|
||||
|
||||
>>> res = func7(glb)
|
||||
11
|
||||
>>> glb
|
||||
8
|
||||
```
|
||||
|
||||
## 6.2. Выявление локализации
|
||||
|
||||
```py
|
||||
>>> globals().keys()
|
||||
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||
>>> locals().keys()
|
||||
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||
>>> def func8(arg):
|
||||
loc1 = 15
|
||||
glb=8
|
||||
print(globals().keys())
|
||||
print(locals().keys())
|
||||
return loc1*arg
|
||||
|
||||
>>> hh=func8(glb)
|
||||
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8'])
|
||||
dict_keys(['arg', 'loc1', 'glb'])
|
||||
>>> 'glb' in globals().keys()
|
||||
True
|
||||
```
|
||||
## 6.3. Локализация объектов при работе с вложенными функциями
|
||||
|
||||
```py
|
||||
>>> def func9(arg2,arg3):
|
||||
def func9_1(arg1):
|
||||
loc1=15
|
||||
glb1=8
|
||||
print('glob_func9_1:', globals().keys())
|
||||
print('loc1_func9_1:', locals().keys())
|
||||
return loc1*arg1
|
||||
loc1=5
|
||||
glb=func9_1(loc1)
|
||||
print('loc_func9:',locals().keys())
|
||||
print('glob_func9:',globals().keys())
|
||||
return arg2+arg3*glb
|
||||
|
||||
>>> kk=func9(10,1)
|
||||
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
||||
loc1_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
|
||||
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
|
||||
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
||||
>>> kk
|
||||
85
|
||||
```
|
||||
|
||||
## 6.4.
|
||||
|
||||
```py
|
||||
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||
k1,T,k2,Xm,A,F,N=5,20,2,1,10,0.02,50
|
||||
>>> T=float(znach[1])
|
||||
>>> k2 = float(znach[2])
|
||||
>>> k1=float(znach[0])
|
||||
>>> 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
|
||||
[0.0, 1.2533323356430426, 2.486898871648548, 3.6812455268467796, 4.817536741017153, 5.877852522924732, 6.845471059286887, 7.705132427757892, 8.443279255020151, 9.048270524660197, 9.510565162951535, 9.822872507286887, 9.980267284282716, 9.980267284282716, 9.822872507286887, 9.510565162951536, 9.048270524660195, 8.44327925502015, 7.705132427757892, 6.845471059286888, 5.877852522924733, 4.817536741017152, 3.6812455268467814, 2.486898871648548, 1.2533323356430408, 1.2246467991473533e-15, -1.2533323356430428, -2.486898871648546, -3.681245526846779, -4.817536741017154, -5.87785252292473, -6.845471059286884, -7.705132427757894, -8.443279255020153, -9.048270524660198, -9.510565162951535, -9.822872507286887, -9.980267284282716, -9.980267284282716, -9.822872507286887, -9.510565162951536, -9.048270524660198, -8.44327925502015, -7.705132427757896, -6.84547105928689, -5.877852522924734, -4.817536741017153, -3.6812455268467787, -2.486898871648545, -1.2533323356430466]
|
||||
>>> 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, 0.03263241167294595, 0.9745456461939759, 1.4445477037255587, 0.5534963485187296, -0.14317115231403954, -3.810424583957446, -5.935617950854518, -3.1454619295767294, 4.410078865544928, 17.906974115100144, 26.191694213352932, 16.564012161149634, -16.52439077227259, -67.59051021156763, -101.3214249457787, -69.9621783842152, 55.00346225455457, 246.14981490076363, 380.49988175932214, 278.83918136760593, -179.12097686946288, -894.831188510742, -1427.8203056594884, -1106.6971235336005, 553.0427518851675, 3227.436842271835, 5328.628272818676, 4345.723637601036, -1642.536200959916, -11619.299856185102, -19859.46237228057, -16988.531756411103, 4552.501490270824, 41710.04551030272, 73876.07518877511, 66108.68459616054, -11169.337014708513, -149332.61878005945, -274368.6364383781, -256250.17990633397, 20228.386522231223, 533135.2397813796, 1017335.790045514, 989751.144011423, 3441.7330011494814, -1897576.0088700322, -3766140.0629690504, -3810393.13835538]
|
||||
>>> import pylab
|
||||
>>> pylab.plot(vyhod)
|
||||
[<matplotlib.lines.Line2D object at 0x000001C8BDCE54C0>]
|
||||
>>> pylab.show()
|
||||
```
|
||||

|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
0.685796, 0.171449
|
||||
1.896449, 0.602699
|
||||
1.679037, 0.871784
|
||||
0.197277, 0.703157
|
||||
-1.433038, 0.169108
|
||||
-1.984245, -0.369230
|
||||
-1.041276, -0.537242
|
||||
0.685796, -0.231482
|
||||
1.896449, 0.300501
|
||||
1.679037, 0.645135
|
||||
0.197277, 0.533170
|
||||
-1.433038, 0.041618
|
||||
-1.984245, -0.464848
|
||||
-1.041276, -0.608955
|
||||
0.685796, -0.285267
|
||||
1.896449, 0.260162
|
||||
1.679037, 0.614881
|
||||
0.197277, 0.510480
|
||||
-1.433038, 0.024600
|
||||
-1.984245, -0.477611
|
||||
-1.041276, -0.618527
|
||||
0.685796, -0.292446
|
||||
1.896449, 0.254777
|
||||
1.679037, 0.610842
|
||||
0.197277, 0.507451
|
||||
-1.433038, 0.022329
|
||||
-1.984245, -0.479315
|
||||
-1.041276, -0.619805
|
||||
0.685796, -0.293405
|
||||
1.896449, 0.254059
|
||||
1.679037, 0.610303
|
||||
0.197277, 0.507047
|
||||
-1.433038, 0.022026
|
||||
-1.984245, -0.479542
|
||||
-1.041276, -0.619976
|
||||
0.685796, -0.293533
|
||||
1.896449, 0.253963
|
||||
1.679037, 0.610231
|
||||
0.197277, 0.506993
|
||||
-1.433038, 0.021985
|
||||
-1.984245, -0.479572
|
||||
-1.041276, -0.619998
|
||||
0.685796, -0.293550
|
||||
1.896449, 0.253950
|
||||
1.679037, 0.610222
|
||||
0.197277, 0.506985
|
||||
-1.433038, 0.021980
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620001
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506985
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506984
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506984
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506984
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506984
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506984
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
1.679037, 0.610220
|
||||
0.197277, 0.506984
|
||||
-1.433038, 0.021979
|
||||
-1.984245, -0.479577
|
||||
-1.041276, -0.620002
|
||||
0.685796, -0.293552
|
||||
1.896449, 0.253948
|
||||
@ -0,0 +1,57 @@
|
||||
# Общее контрольное задание по теме 7
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
• Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с за-держкой на заданное время Т.
|
||||
|
||||
• Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в ви-де таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращае-мый результат функции: список с числами элементов выборки в интервалах разбиения.
|
||||
|
||||
• Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
|
||||
Y=b1+b2*X и имеющую аргументы b1, b2 и X.
|
||||
|
||||
## Решение
|
||||
|
||||
```py
|
||||
>>> def delay(vhod, t):
|
||||
"""Функция задержки
|
||||
Входной сигнал - vhod
|
||||
Задержка - t"""
|
||||
return [0]*T + vhod
|
||||
|
||||
>>> sign = [1,2,3,4,5]
|
||||
>>> T = 9
|
||||
>>> t = 9
|
||||
>>> delay(sign,t)
|
||||
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5]
|
||||
>>> def hist(x, bins):
|
||||
low = min(x)
|
||||
high = max(x)
|
||||
inter = ((high-low)/bins)
|
||||
binsdata=[]
|
||||
for i in range(bins):
|
||||
lo = low+i*inter
|
||||
up = low + (i+1)*inter
|
||||
binsdata.append(len(list(filter(lambda j: lo<= j and up > j, x))))
|
||||
if i == bins-1:
|
||||
binsdata[i]+=1
|
||||
print("Интервал ", {i+1}, ' - от ', lo, ' до ', up, 'кол-во элементов - ', binsdata[i])
|
||||
return binsdata
|
||||
|
||||
>>> x = [random.gauss(150, 10) for i in range(100)]
|
||||
>>> analiz = hist(x,7)
|
||||
Интервал {1} - от 127.66589446294806 до 134.22890486557336 кол-во элементов - 2
|
||||
Интервал {2} - от 134.22890486557336 до 140.79191526819864 кол-во элементов - 9
|
||||
Интервал {3} - от 140.79191526819864 до 147.35492567082395 кол-во элементов - 10
|
||||
Интервал {4} - от 147.35492567082395 до 153.91793607344923 кол-во элементов - 37
|
||||
Интервал {5} - от 153.91793607344923 до 160.4809464760745 кол-во элементов - 23
|
||||
Интервал {6} - от 160.4809464760745 до 167.04395687869982 кол-во элементов - 14
|
||||
Интервал {7} - от 167.04395687869982 до 173.6069672813251 кол-во элементов - 5
|
||||
>>> print(analiz)
|
||||
[2, 9, 10, 37, 23, 14, 5]
|
||||
|
||||
>>> regr = lambda x, b1,b2: b1+b2*x
|
||||
>>> regr(12, 50, 1)
|
||||
62
|
||||
```
|
||||
@ -0,0 +1,2 @@
|
||||
import MM2
|
||||
print('y=', MM2.vyhod)
|
||||
@ -0,0 +1,19 @@
|
||||
def realdvig(xtt,kk1,TT,yti1,ytin1):
|
||||
yp=kk1*xtt
|
||||
yti1=yp+yti1
|
||||
ytin1=(yti1+TT*ytin1)/(TT+1)
|
||||
return [yti1,ytin1]
|
||||
|
||||
def tahogen(xtt,kk2,yti2):
|
||||
yp=kk2*xtt
|
||||
yti2=yp+yti2
|
||||
return yti2
|
||||
|
||||
def nechus(xtt,gran):
|
||||
if xtt<gran and xtt>(-gran):
|
||||
ytt=0
|
||||
elif xtt>=gran:
|
||||
ytt=xtt-gran
|
||||
elif xtt<=(-gran):
|
||||
ytt=xtt+gran
|
||||
return ytt
|
||||
@ -0,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,25 @@
|
||||
import math
|
||||
def correlation(numbers1, numbers2):
|
||||
if not numbers1 or not numbers2:
|
||||
print('пусто')
|
||||
return(0)
|
||||
|
||||
n = min(len(numbers1), len(numbers2))
|
||||
|
||||
x = numbers1[:n]
|
||||
y = numbers2[:n]
|
||||
|
||||
meanx = sum(x)/n
|
||||
meany = sum(y)/n
|
||||
|
||||
sum1 = 0
|
||||
sum2 = 0
|
||||
sum3 = 0
|
||||
|
||||
for i in range (n):
|
||||
sum1 += ((x[i] - meanx)*(y[i] - meany))
|
||||
sum2 += ((x[i] - meanx)**2)
|
||||
sum3 += ((y[i] - meany)**2)
|
||||
print(sum1,sum2,sum3)
|
||||
return (sum1/math.sqrt(sum2*sum3))
|
||||
|
||||
|
После Ширина: | Высота: | Размер: 5.1 KiB |
|
После Ширина: | Высота: | Размер: 9.0 KiB |
|
После Ширина: | Высота: | Размер: 8.6 KiB |
|
После Ширина: | Высота: | Размер: 13 KiB |
@ -0,0 +1,98 @@
|
||||
# Индивидуальное задание по теме 8
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
||||
|
||||
## Решение
|
||||
|
||||
Содержимое модуля с калькулятором:
|
||||
|
||||
```py
|
||||
def calc(x,yT,T):
|
||||
y =(x+T*yT)/(1+T)
|
||||
return y
|
||||
```
|
||||
|
||||
Содержимое главного модуля:
|
||||
|
||||
```py
|
||||
import math
|
||||
from indtask1 import calc
|
||||
|
||||
def generator(num=100):
|
||||
A = 2
|
||||
T =7
|
||||
phase = 0.35
|
||||
|
||||
xval = []
|
||||
for i in range(num):
|
||||
val =A*math.sin(2*math.pi*i/T + phase)
|
||||
xval.append(val)
|
||||
|
||||
return xval
|
||||
|
||||
def output(xval,T):
|
||||
yval = []
|
||||
yn = calc(xval[0],0,T)
|
||||
yval.append(yn)
|
||||
|
||||
for i in range(1,len(xval)):
|
||||
yn = calc(xval[i], yval[i-1], T)
|
||||
yval.append(yn)
|
||||
|
||||
return(yval)
|
||||
|
||||
def writer(xval,yval,filename='result.txt'):
|
||||
with open(filename, 'w', encoding = 'utf-8') as file:
|
||||
for i in range(len(xval)):
|
||||
file.write(f'{xval[i]}\t{yval[i]}\n')
|
||||
|
||||
print('Сохранено в result.txt')
|
||||
|
||||
|
||||
def main():
|
||||
num =100
|
||||
T = 3
|
||||
print('Вход:')
|
||||
xval =generator(num)
|
||||
print(xval)
|
||||
print('Выход:')
|
||||
yval= output(xval,T)
|
||||
print(yval)
|
||||
|
||||
writer(xval,yval)
|
||||
|
||||
print('Первые пять:')
|
||||
for i in range(5):
|
||||
print(f'{i}\t{xval[i]}\t{yval[i]}\n')
|
||||
```
|
||||
|
||||
Результаты работы в консоли:
|
||||
|
||||
```py
|
||||
======================== RESTART: C:/Users/u206-07/Desktop/python-labs/TEMA8/taskmain.py =======================
|
||||
main()
|
||||
Вход:
|
||||
[0.6857956149109027, 1.8964488934073493, 1.6790374746606227, 0.19727659137173062, -1.4330375889291693, -1.9842452361268608, -1.0412757492945761, 0.6857956149109016, 1.896448893407349, 1.6790374746606234, 0.197276591371732, -1.4330375889291658, -1.984245236126861, -1.0412757492945734, 0.6857956149109011, 1.8964488934073476, 1.6790374746606236, 0.19727659137172895, -1.4330375889291704, -1.9842452361268605, -1.041275749294574, 0.685795614910904, 1.8964488934073476, 1.679037474660622, 0.19727659137172943, -1.43303758892917, -1.9842452361268597, -1.0412757492945743, 0.6857956149109036, 1.8964488934073496, 1.679037474660626, 0.19727659137172993, -1.4330375889291698, -1.9842452361268605, -1.0412757492945688, 0.685795614910903, 1.8964488934073493, 1.6790374746606225, 0.19727659137173043, -1.4330375889291695, -1.9842452361268608, -1.0412757492945752, 0.6857956149109026, 1.8964488934073493, 1.6790374746606305, 0.1972765913717309, -1.433037588929169, -1.9842452361268608, -1.0412757492945757, 0.6857956149109021, 1.8964488934073491, 1.6790374746606231, 0.19727659137171724, -1.4330375889291689, -1.9842452361268608, -1.0412757492945761, 0.6857956149109017, 1.896448893407349, 1.6790374746606234, 0.19727659137173187, -1.4330375889291584, -1.9842452361268608, -1.0412757492945766, 0.6857956149109012, 1.8964488934073487, 1.6790374746606236, 0.19727659137173237, -1.4330375889291682, -1.9842452361268592, -1.041275749294577, 0.6857956149109008, 1.8964488934073487, 1.6790374746606316, 0.19727659137176112, -1.4330375889291578, -1.9842452361268645, -1.0412757492945894, 0.6857956149109004, 1.896448893407344, 1.6790374746606243, 0.19727659137174747, -1.4330375889291476, -1.9842452361268628, -1.0412757492945777, 0.6857956149108865, 1.8964488934073482, 1.679037474660632, 0.19727659137176212, -1.4330375889291374, -1.9842452361268612, -1.0412757492945903, 0.6857956149108727, 1.8964488934073436, 1.67903747466064, 0.19727659137174847, -1.4330375889291667, -1.984245236126863, -1.0412757492946028, 0.6857956149108856, 1.896448893407348]
|
||||
Выход:
|
||||
[0.17144890372772567, 0.6026989011476316, 0.8717835445258794, 0.7031568062373422, 0.16910820744571436, -0.36923015344742943, -0.5372415524092161, -0.23148226057918672, 0.3005005279174472, 0.6451347646032413, 0.533170221295364, 0.04161826873923152, -0.4648476074772916, -0.6089546429316121, -0.28526707847098376, 0.26016191449859905, 0.6148808045391052, 0.5104797512472612, 0.024600416203153286, -0.47761099687935016, -0.6185271849831562, -0.2924464850096411, 0.25477735959460607, 0.61084238836111, 0.5074509391137649, 0.0223288071030312, -0.4793147037044415, -0.6198049651019748, -0.29340482009875524, 0.25405860827777094, 0.6103033248734847, 0.507046641498046, 0.02202558389124204, -0.4795421211132836, -0.6199755281586049, -0.2935327423912279, 0.25396266655841643, 0.610231368583968, 0.5069926742809086, 0.021985108478389026, -0.47957247767292344, -0.6199982955783363, -0.2935498179560266, 0.2539498598848174, 0.6102217635787707, 0.5069854705270107, 0.021979705662965754, -0.4795765297844909, -0.6200013346620121, -0.29355209726878356, 0.2539481504002496, 0.6102204814653429, 0.5069845089419365, 0.021978984474160135, -0.4795770706760951, -0.6200017403307154, -0.29355240152031115, 0.2539479222116039, 0.6102203103238588, 0.5069843805858271, 0.021978888207080716, -0.4795771428764046, -0.6200017944809476, -0.2935524421329854, 0.2539478917520981, 0.6102202874792295, 0.5069843634523552, 0.021978875356974348, -0.47957715251398403, -0.6200018017091322, -0.29355244755412396, 0.2539478876862442, 0.610220284429841, 0.5069843611653211, 0.02197887364170137, -0.4795771538004401, -0.6200018026739774, -0.293552448277758, 0.2539478871435175, 0.6102202840227942, 0.5069843608600325, 0.021978873412737465, -0.4795771539721626, -0.6200018028027664, -0.29355244837435324, 0.25394788707107213, 0.6102202839684621, 0.5069843608192871, 0.02197887338218102, -0.47957715399507955, -0.6200018028199572, -0.2935524483872497, 0.2539478870613986, 0.610220283961209, 0.5069843608138438, 0.02197887337809118, -0.4795771539981474, -0.6200018028222611, -0.29355244838897443, 0.2539478870601062]
|
||||
Сохранено в result.txt
|
||||
Первые пять:
|
||||
0 0.6857956149109027 0.17144890372772567
|
||||
|
||||
1 1.8964488934073493 0.6026989011476316
|
||||
|
||||
2 1.6790374746606227 0.8717835445258794
|
||||
|
||||
3 0.19727659137173062 0.7031568062373422
|
||||
|
||||
4 -1.4330375889291693 0.16910820744571436
|
||||
```
|
||||
|
||||
Также был создан файл result.txt содержащий в столбиквсе входные ивыходные сигналы
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
def calc(x,yT,T):
|
||||
y =(x+T*yT)/(1+T)
|
||||
return y
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
from readerfile import reader
|
||||
from correlate import correlation
|
||||
|
||||
def main():
|
||||
print("_________Калькулятор корреляции_________")
|
||||
file1 = input("Первый файл: ").strip()
|
||||
file2 = input("Второй файл: ").strip()
|
||||
|
||||
numbers1 = reader(file1)
|
||||
numbers2 = reader(file2)
|
||||
|
||||
print(numbers1)
|
||||
print(numbers2)
|
||||
|
||||
cor = correlation(numbers1, numbers2)
|
||||
|
||||
print("Коэффициент корреляции - ", cor)
|
||||
@ -0,0 +1,3 @@
|
||||
44 50 43 30 24
|
||||
10 9 1 5
|
||||
29 19 14 21
|
||||
@ -0,0 +1,3 @@
|
||||
30 60 58 40 34
|
||||
20 19 16 15
|
||||
39 28 24 31
|
||||
@ -0,0 +1,9 @@
|
||||
def reader(filename):
|
||||
num = []
|
||||
with open(filename, 'r', encoding = 'utf-8') as file:
|
||||
for line in file:
|
||||
elements = line.strip().split()
|
||||
for elem in elements:
|
||||
number = float(elem)
|
||||
num.append(number)
|
||||
return num
|
||||
@ -0,0 +1,294 @@
|
||||
# Тема 8
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Пункт 1. Подготовка к работе.
|
||||
|
||||
```py
|
||||
>>> import os,sys
|
||||
>>> import importlib as imp
|
||||
>>> os.chdir('C:\\Users\\somas\\python-labs\\TEMA8')
|
||||
>>> os.getcwd()
|
||||
'C:\\Users\\somas\\python-labs\\TEMA8'
|
||||
```
|
||||
|
||||
## Пункт 2.1. Запуск модуля на выполнение путем его импорта
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> import Mod1
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
>>> type(Mod1)
|
||||
<class 'module'>
|
||||
>>> dir(Mod1)
|
||||
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'perm1']
|
||||
>>> Mod1.perm1
|
||||
'5'
|
||||
>>> import Mod1
|
||||
>>> imp.reload(Mod1)
|
||||
Mod1:Введите значение = 3
|
||||
Mod1:Значение perm1= 3
|
||||
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
|
||||
>>> Mod1.perm1
|
||||
'3'
|
||||
```
|
||||
|
||||
## 2.2. Удаление модуля из словаря
|
||||
|
||||
```py
|
||||
>>> print(sorted(sys.modules.keys()))
|
||||
['Mod1', '__main__', '_abc', '_ast', '_bisect', '_bootlocale', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'msvcrt', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'signal', 'site', 'socket', 'socketserver', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'string', 'struct', 'subprocess', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
|
||||
>>> sys.modules.pop('Mod1')
|
||||
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
|
||||
>>> print(sorted(sys.modules.keys()))
|
||||
['__main__', '_abc', '_ast', '_bisect', '_bootlocale', '_bz2', '_codecs', '_collections', '_collections_abc', '_compat_pickle', '_compression', '_datetime', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_lzma', '_opcode', '_operator', '_pickle', '_queue', '_random', '_sha512', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_string', '_struct', '_thread', '_tkinter', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'ast', 'bdb', 'binascii', 'bisect', 'builtins', 'bz2', 'codecs', 'collections', 'collections.abc', 'configparser', 'contextlib', 'copyreg', 'datetime', 'dis', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'fnmatch', 'functools', 'genericpath', 'heapq', 'idlelib', 'idlelib.autocomplete', 'idlelib.autocomplete_w', 'idlelib.calltip', 'idlelib.calltip_w', 'idlelib.config', 'idlelib.debugger', 'idlelib.debugger_r', 'idlelib.debugobj', 'idlelib.debugobj_r', 'idlelib.hyperparser', 'idlelib.iomenu', 'idlelib.macosx', 'idlelib.multicall', 'idlelib.pyparse', 'idlelib.rpc', 'idlelib.run', 'idlelib.scrolledlist', 'idlelib.stackviewer', 'idlelib.tooltip', 'idlelib.tree', 'idlelib.util', 'idlelib.window', 'idlelib.zoomheight', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'inspect', 'io', 'itertools', 'keyword', 'linecache', 'lzma', 'marshal', 'math', 'msvcrt', 'nt', 'ntpath', 'opcode', 'operator', 'os', 'os.path', 'pickle', 'pkgutil', 'platform', 'plistlib', 'posixpath', 'pydoc', 'pyexpat', 'pyexpat.errors', 'pyexpat.model', 'queue', 'random', 're', 'reprlib', 'select', 'selectors', 'shlex', 'shutil', 'signal', 'site', 'socket', 'socketserver', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'string', 'struct', 'subprocess', 'sys', 'sysconfig', 'tempfile', 'textwrap', 'threading', 'time', 'tkinter', 'tkinter.constants', 'token', 'tokenize', 'traceback', 'types', 'typing', 'typing.io', 'typing.re', 'urllib', 'urllib.parse', 'warnings', 'weakref', 'winreg', 'xml', 'xml.parsers', 'xml.parsers.expat', 'xml.parsers.expat.errors', 'xml.parsers.expat.model', 'zipimport', 'zlib']
|
||||
>>> import Mod1
|
||||
Mod1:Введите значение = 4
|
||||
Mod1:Значение perm1= 4
|
||||
>>> sys.modules.pop('Mod1')
|
||||
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
|
||||
```
|
||||
|
||||
## 2.3. Запуск модуля с помощью exec
|
||||
|
||||
```py
|
||||
>>> exec(open('Mod1.py').read())
|
||||
Mod1:Введите значение = 8
|
||||
Mod1:Значение perm1= 8
|
||||
>>> exec(open('Mod1.py', encoding= 'utf-8').read())
|
||||
Mod1:Введите значение = 4
|
||||
Mod1:Значение perm1= 4
|
||||
>>> exec(open('Mod1.py', encoding= 'utf-8').read())
|
||||
Mod1:Введите значение = 50
|
||||
Mod1:Значение perm1= 50
|
||||
>>> exec(open('Mod1.py', encoding= 'utf-8').read())
|
||||
Mod1:Введите значение = 10
|
||||
Mod1:Значение perm1= 10
|
||||
```
|
||||
|
||||
## 2.4. Запуск модуля с помощью from - import
|
||||
|
||||
```py
|
||||
>>> from Mod1 import perm1
|
||||
Mod1:Введите значение = 1
|
||||
Mod1:Значение perm1= 1
|
||||
>>> dir()
|
||||
['Mod1', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '__warningregistry__', 'imp', 'os', 'perm1', 'sys']
|
||||
>>> perm1
|
||||
'1'
|
||||
```
|
||||

|
||||
|
||||
```py
|
||||
>>> from Mod2 import beta
|
||||
>>> g=beta(2)
|
||||
****BETA****
|
||||
>>> g
|
||||
535.4916555247646
|
||||
>>> alpha()
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#30>", line 1, in <module>
|
||||
alpha()
|
||||
NameError: name 'alpha' is not defined
|
||||
>>> from Mod2 import alpha
|
||||
>>> from Mod2 import alpha as al
|
||||
>>> al()
|
||||
****ALPHA****
|
||||
Значение t=5
|
||||
'5'
|
||||
>>> del al,beta
|
||||
>>> from Mod2 import alpha as al, beta as bt
|
||||
>>> from Mod2 import *
|
||||
>>> tt=alpha()
|
||||
****ALPHA****
|
||||
Значение t=0.12
|
||||
>>> uu=beta(float(tt))
|
||||
****BETA****
|
||||
>>> uu
|
||||
1.4578913609506803
|
||||
>>>
|
||||
```
|
||||
|
||||
## 3.1. Создание многомодульных программ
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> sys.modules.pop('Mod1')
|
||||
<module 'Mod1' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod1.py'>
|
||||
>>> sys.modules.pop('Mod2')
|
||||
<module 'Mod2' from 'C:\\Users\\somas\\python-labs\\TEMA8\\Mod2.py'>
|
||||
>>> import Mod0
|
||||
Mod1:Введите значение = 10
|
||||
Mod1:Значение perm1= 10
|
||||
perm1= 10
|
||||
****ALPHA****
|
||||
Значение t=6
|
||||
tt= 6
|
||||
****BETA****
|
||||
qq= 153552935.39544657
|
||||
>>> Mod0.tt; Mod0.qq; Mod0.Mod1.perm1
|
||||
'6'
|
||||
153552935.39544657
|
||||
'10'
|
||||
```
|
||||
|
||||
## 3.2. Создание модулей и реализация программы модели САУ
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> import MM2
|
||||
k1,T,k2,Xm,A,F,N=0.4, 30, 0.6, 6, 1000, 7, 16
|
||||
>>> print('y=', MM2.vyhod)
|
||||
y= [0, 4.088148160877804, 26.352485391214998, 53.16854540749361, 72.7344196620431, 77.69321318122259, 70.35974149591577, 60.62750525878967, 58.14620628522886, 64.67689441760423, 72.40046930133941, 69.47447962424967, 48.67692603876396, 12.652572207611655, -16.163653614270103, -51.357437173804996]
|
||||
```
|
||||
|
||||
## 3.3. Области действия объектов в модулях
|
||||
|
||||
Была изменена функция alpha в файле Mod2.py
|
||||
|
||||
```py
|
||||
def alpha():
|
||||
print('****ALPHA****')
|
||||
t=input('Значение t=')
|
||||
n=beta(6)
|
||||
print(n)
|
||||
return t
|
||||
```
|
||||
|
||||
После запуска модуля
|
||||
|
||||
```py
|
||||
>>> alpha()
|
||||
****ALPHA****
|
||||
Значение t=10
|
||||
****BETA****
|
||||
153552935.39544657
|
||||
'10'
|
||||
```
|
||||
|
||||
Убрали изменения из alpha, изменили beta
|
||||
|
||||
```py
|
||||
def beta(q):
|
||||
print('****BETA****')
|
||||
import math
|
||||
expi=q*math.pi
|
||||
alpha()
|
||||
return math.exp(expi)
|
||||
```
|
||||
|
||||
результат
|
||||
|
||||
```py
|
||||
>>> beta(6)
|
||||
****BETA****
|
||||
****ALPHA****
|
||||
Значение t=10
|
||||
153552935.39544657
|
||||
```
|
||||
|
||||
Добавили функцию печати в Mod0
|
||||
|
||||
```py
|
||||
import Mod1
|
||||
print('perm1=',Mod1.perm1)
|
||||
from Mod2 import alpha as al
|
||||
tt=al()
|
||||
print('tt=',tt)
|
||||
from Mod2 import beta
|
||||
qq=beta(float(tt))
|
||||
print('qq=',qq)
|
||||
print(t,expi)
|
||||
```
|
||||
|
||||
получено
|
||||
|
||||
```py
|
||||
Mod1:Введите значение = 10
|
||||
Mod1:Значение perm1= 10
|
||||
perm1= 10
|
||||
****ALPHA****
|
||||
Значение t=10
|
||||
tt= 10
|
||||
****BETA****
|
||||
****ALPHA****
|
||||
Значение t=10
|
||||
qq= 44031505860631.98
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\somas\python-labs\TEMA8\Mod0.py", line 9, in <module>
|
||||
print(t,expi)
|
||||
NameError: name 't' is not defined
|
||||
```
|
||||
|
||||
В модуле Mod0 perm1 была увеличена в 3 раза
|
||||
|
||||
```py
|
||||
Mod1:Введите значение = 10
|
||||
Mod1:Значение perm1= 10
|
||||
perm1= 10
|
||||
****ALPHA****
|
||||
Значение t=8
|
||||
tt= 8
|
||||
****BETA****
|
||||
qq= 82226315585.59491
|
||||
perm1*3= 101010
|
||||
```
|
||||
|
||||
так получилось, так как perm1 - строка
|
||||
|
||||
изменим qq,tt,perm1 в командной строке
|
||||
|
||||
```py
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
perm1= 5
|
||||
****ALPHA****
|
||||
Значение t=8
|
||||
tt= 8
|
||||
****BETA****
|
||||
qq= 82226315585.59491
|
||||
>>> perm1 = perm1*2
|
||||
Traceback (most recent call last):
|
||||
File "<pyshell#9>", line 1, in <module>
|
||||
perm1 = perm1*2
|
||||
NameError: name 'perm1' is not defined
|
||||
>>> tt = tt*2
|
||||
>>> tt
|
||||
'88'
|
||||
>>> qq = qq*2; qq
|
||||
164452631171.18982
|
||||
```
|
||||
|
||||
теперь изменим Mod0.py так, чтобы perm1 можно было изменить
|
||||
|
||||
```py
|
||||
import Mod1
|
||||
print('perm1=',Mod1.perm1)
|
||||
from Mod2 import alpha as al
|
||||
tt=al()
|
||||
print('tt=',tt)
|
||||
from Mod2 import beta
|
||||
qq=beta(float(tt))
|
||||
print('qq=',qq)
|
||||
perm1 = Mod1.perm1
|
||||
```
|
||||
|
||||
результат:
|
||||
|
||||
```py
|
||||
Mod1:Введите значение = 5
|
||||
Mod1:Значение perm1= 5
|
||||
perm1= 5
|
||||
****ALPHA****
|
||||
Значение t=10
|
||||
tt= 10
|
||||
****BETA****
|
||||
qq= 44031505860631.98
|
||||
>>> perm1 = perm1*2
|
||||
>>> perm1
|
||||
'55'
|
||||
```
|
||||
@ -0,0 +1,100 @@
|
||||
0.6857956149109027 0.17144890372772567
|
||||
1.8964488934073493 0.6026989011476316
|
||||
1.6790374746606227 0.8717835445258794
|
||||
0.19727659137173062 0.7031568062373422
|
||||
-1.4330375889291693 0.16910820744571436
|
||||
-1.9842452361268608 -0.36923015344742943
|
||||
-1.0412757492945761 -0.5372415524092161
|
||||
0.6857956149109016 -0.23148226057918672
|
||||
1.896448893407349 0.3005005279174472
|
||||
1.6790374746606234 0.6451347646032413
|
||||
0.197276591371732 0.533170221295364
|
||||
-1.4330375889291658 0.04161826873923152
|
||||
-1.984245236126861 -0.4648476074772916
|
||||
-1.0412757492945734 -0.6089546429316121
|
||||
0.6857956149109011 -0.28526707847098376
|
||||
1.8964488934073476 0.26016191449859905
|
||||
1.6790374746606236 0.6148808045391052
|
||||
0.19727659137172895 0.5104797512472612
|
||||
-1.4330375889291704 0.024600416203153286
|
||||
-1.9842452361268605 -0.47761099687935016
|
||||
-1.041275749294574 -0.6185271849831562
|
||||
0.685795614910904 -0.2924464850096411
|
||||
1.8964488934073476 0.25477735959460607
|
||||
1.679037474660622 0.61084238836111
|
||||
0.19727659137172943 0.5074509391137649
|
||||
-1.43303758892917 0.0223288071030312
|
||||
-1.9842452361268597 -0.4793147037044415
|
||||
-1.0412757492945743 -0.6198049651019748
|
||||
0.6857956149109036 -0.29340482009875524
|
||||
1.8964488934073496 0.25405860827777094
|
||||
1.679037474660626 0.6103033248734847
|
||||
0.19727659137172993 0.507046641498046
|
||||
-1.4330375889291698 0.02202558389124204
|
||||
-1.9842452361268605 -0.4795421211132836
|
||||
-1.0412757492945688 -0.6199755281586049
|
||||
0.685795614910903 -0.2935327423912279
|
||||
1.8964488934073493 0.25396266655841643
|
||||
1.6790374746606225 0.610231368583968
|
||||
0.19727659137173043 0.5069926742809086
|
||||
-1.4330375889291695 0.021985108478389026
|
||||
-1.9842452361268608 -0.47957247767292344
|
||||
-1.0412757492945752 -0.6199982955783363
|
||||
0.6857956149109026 -0.2935498179560266
|
||||
1.8964488934073493 0.2539498598848174
|
||||
1.6790374746606305 0.6102217635787707
|
||||
0.1972765913717309 0.5069854705270107
|
||||
-1.433037588929169 0.021979705662965754
|
||||
-1.9842452361268608 -0.4795765297844909
|
||||
-1.0412757492945757 -0.6200013346620121
|
||||
0.6857956149109021 -0.29355209726878356
|
||||
1.8964488934073491 0.2539481504002496
|
||||
1.6790374746606231 0.6102204814653429
|
||||
0.19727659137171724 0.5069845089419365
|
||||
-1.4330375889291689 0.021978984474160135
|
||||
-1.9842452361268608 -0.4795770706760951
|
||||
-1.0412757492945761 -0.6200017403307154
|
||||
0.6857956149109017 -0.29355240152031115
|
||||
1.896448893407349 0.2539479222116039
|
||||
1.6790374746606234 0.6102203103238588
|
||||
0.19727659137173187 0.5069843805858271
|
||||
-1.4330375889291584 0.021978888207080716
|
||||
-1.9842452361268608 -0.4795771428764046
|
||||
-1.0412757492945766 -0.6200017944809476
|
||||
0.6857956149109012 -0.2935524421329854
|
||||
1.8964488934073487 0.2539478917520981
|
||||
1.6790374746606236 0.6102202874792295
|
||||
0.19727659137173237 0.5069843634523552
|
||||
-1.4330375889291682 0.021978875356974348
|
||||
-1.9842452361268592 -0.47957715251398403
|
||||
-1.041275749294577 -0.6200018017091322
|
||||
0.6857956149109008 -0.29355244755412396
|
||||
1.8964488934073487 0.2539478876862442
|
||||
1.6790374746606316 0.610220284429841
|
||||
0.19727659137176112 0.5069843611653211
|
||||
-1.4330375889291578 0.02197887364170137
|
||||
-1.9842452361268645 -0.4795771538004401
|
||||
-1.0412757492945894 -0.6200018026739774
|
||||
0.6857956149109004 -0.293552448277758
|
||||
1.896448893407344 0.2539478871435175
|
||||
1.6790374746606243 0.6102202840227942
|
||||
0.19727659137174747 0.5069843608600325
|
||||
-1.4330375889291476 0.021978873412737465
|
||||
-1.9842452361268628 -0.4795771539721626
|
||||
-1.0412757492945777 -0.6200018028027664
|
||||
0.6857956149108865 -0.29355244837435324
|
||||
1.8964488934073482 0.25394788707107213
|
||||
1.679037474660632 0.6102202839684621
|
||||
0.19727659137176212 0.5069843608192871
|
||||
-1.4330375889291374 0.02197887338218102
|
||||
-1.9842452361268612 -0.47957715399507955
|
||||
-1.0412757492945903 -0.6200018028199572
|
||||
0.6857956149108727 -0.2935524483872497
|
||||
1.8964488934073436 0.2539478870613986
|
||||
1.67903747466064 0.610220283961209
|
||||
0.19727659137174847 0.5069843608138438
|
||||
-1.4330375889291667 0.02197887337809118
|
||||
-1.984245236126863 -0.4795771539981474
|
||||
-1.0412757492946028 -0.6200018028222611
|
||||
0.6857956149108856 -0.29355244838897443
|
||||
1.896448893407348 0.2539478870601062
|
||||
@ -0,0 +1,93 @@
|
||||
#Тема 8 общее задание
|
||||
|
||||
## Задание
|
||||
|
||||
Разработайте программу, состоящую из трех модулей:
|
||||
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Получен-ный список должен возвращаться в вызывающую программу.
|
||||
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
|
||||
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
|
||||
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
|
||||
|
||||
## Решение
|
||||
|
||||
Модуль чтения readerfile.py
|
||||
|
||||
```py
|
||||
def reader(filename):
|
||||
num = []
|
||||
with open(filename, 'r', encoding = 'utf-8') as file:
|
||||
for line in file:
|
||||
elements = line.strip().split()
|
||||
for elem in elements:
|
||||
number = float(elem)
|
||||
num.append(number)
|
||||
return num
|
||||
```
|
||||
|
||||
Модуль калькулятора корреляции correlate.py
|
||||
|
||||
```py
|
||||
import math
|
||||
def correlation(numbers1, numbers2):
|
||||
if not numbers1 or not numbers2:
|
||||
print('пусто')
|
||||
return(0)
|
||||
|
||||
n = min(len(numbers1), len(numbers2))
|
||||
|
||||
x = numbers1[:n]
|
||||
y = numbers2[:n]
|
||||
|
||||
meanx = sum(x)/n
|
||||
meany = sum(y)/n
|
||||
|
||||
sum1 = 0
|
||||
sum2 = 0
|
||||
sum3 = 0
|
||||
|
||||
for i in range (n):
|
||||
sum1 += ((x[i] - meanx)*(y[i] - meany))
|
||||
sum2 += ((x[i] - meanx)**2)
|
||||
sum3 += ((y[i] - meany)**2)
|
||||
print(sum1,sum2,sum3)
|
||||
return (sum1/math.sqrt(sum2*sum3))
|
||||
```
|
||||
|
||||
Главный модуль mainfile.py
|
||||
|
||||
```py
|
||||
from readerfile import reader
|
||||
from correlate import correlation
|
||||
|
||||
def main():
|
||||
print("_________Калькулятор корреляции_________")
|
||||
file1 = input("Первый файл: ").strip()
|
||||
file2 = input("Второй файл: ").strip()
|
||||
|
||||
numbers1 = reader(file1)
|
||||
numbers2 = reader(file2)
|
||||
|
||||
print(numbers1)
|
||||
print(numbers2)
|
||||
|
||||
cor = correlation(numbers1, numbers2)
|
||||
|
||||
print("Коэффициент корреляции - ", cor)
|
||||
```
|
||||
|
||||
Результат работы программы:
|
||||
|
||||
|
||||
```py
|
||||
>>> import mainfile
|
||||
>>> mainfile.main()
|
||||
_________Калькулятор корреляции_________
|
||||
Первый файл: num1.txt
|
||||
Второй файл: num2.txt
|
||||
[44.0, 50.0, 43.0, 30.0, 24.0, 10.0, 9.0, 1.0, 5.0, 29.0, 19.0, 14.0, 21.0]
|
||||
[30.0, 60.0, 58.0, 40.0, 34.0, 20.0, 19.0, 16.0, 15.0, 39.0, 28.0, 24.0, 31.0]
|
||||
2420.0 2930.0 2519.6923076923076
|
||||
Коэффициент корреляции - 0.8906514939994264
|
||||
```
|
||||
|
||||
Выводится содержимое файлов, а также суммы, полученные в correlate.py, для проверки достоверности работы расчетов
|
||||
@ -0,0 +1,49 @@
|
||||
import math
|
||||
from indtask1 import calc
|
||||
|
||||
def generator(num=100):
|
||||
A = 2
|
||||
T =7
|
||||
phase = 0.35
|
||||
|
||||
xval = []
|
||||
for i in range(num):
|
||||
val =A*math.sin(2*math.pi*i/T + phase)
|
||||
xval.append(val)
|
||||
|
||||
return xval
|
||||
|
||||
def output(xval,T):
|
||||
yval = []
|
||||
yn = calc(xval[0],0,T)
|
||||
yval.append(yn)
|
||||
|
||||
for i in range(1,len(xval)):
|
||||
yn = calc(xval[i], yval[i-1], T)
|
||||
yval.append(yn)
|
||||
|
||||
return(yval)
|
||||
|
||||
def writer(xval,yval,filename='result.txt'):
|
||||
with open(filename, 'w', encoding = 'utf-8') as file:
|
||||
for i in range(len(xval)):
|
||||
file.write(f'{xval[i]}\t{yval[i]}\n')
|
||||
|
||||
print('Сохранено в result.txt')
|
||||
|
||||
|
||||
def main():
|
||||
num =100
|
||||
T = 3
|
||||
print('Вход:')
|
||||
xval =generator(num)
|
||||
print(xval)
|
||||
print('Выход:')
|
||||
yval= output(xval,T)
|
||||
print(yval)
|
||||
|
||||
writer(xval,yval)
|
||||
|
||||
print('Первые пять:')
|
||||
for i in range(5):
|
||||
print(f'{i}\t{xval[i]}\t{yval[i]}\n')
|
||||
@ -0,0 +1,49 @@
|
||||
class Employee:
|
||||
def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0):
|
||||
self.fio = fio
|
||||
self.otdel = otdel
|
||||
self.dolz = dolz
|
||||
self.oklad = oklad
|
||||
self.__bonus = []
|
||||
|
||||
def increase_oklad(self,summa):
|
||||
self.oklad += summa
|
||||
print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}')
|
||||
|
||||
def move_otdel(self,new_otdel):
|
||||
old_otdel = self.otdel
|
||||
self.otdel = new_otdel
|
||||
|
||||
print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}')
|
||||
|
||||
def change_dolz(self,new_dolz):
|
||||
old_dolz = self.dolz
|
||||
self.dolz = new_dolz
|
||||
|
||||
print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}')
|
||||
|
||||
def give_bonus(self,bonus):
|
||||
self.__bonus.append(bonus)
|
||||
print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}')
|
||||
|
||||
@property
|
||||
def bonuses(self):
|
||||
return self.__bonus.copy()
|
||||
|
||||
def info_out(self):
|
||||
print('Информация о сотруднике:')
|
||||
print(f'\n ФИО: {self.fio}')
|
||||
print(f'\n Отдел: {self.otdel}')
|
||||
print(f'\n Должность: {self.dolz}')
|
||||
print(f'\n Оклад: {self.oklad:.2f}')
|
||||
|
||||
if self.__bonus:
|
||||
print('Поощрения: ')
|
||||
for i, poosh in enumerate(self.__bonus, 1):
|
||||
print(f" {i}. {poosh}")
|
||||
|
||||
else:
|
||||
print('no bonuses')
|
||||
|
||||
|
||||
|
||||
@ -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,12 @@
|
||||
import module3M2
|
||||
|
||||
def main():
|
||||
|
||||
print('Расчет 1')
|
||||
module3M2.process()
|
||||
|
||||
print('\n' + '_+++++++++_')
|
||||
print('\n Расчет 2')
|
||||
module3M2.process()
|
||||
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
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,22 @@
|
||||
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]
|
||||
y1=self.param[0]*y0
|
||||
y2=inerz(y1,self.param[1],self.ypr[0])
|
||||
y3=inerz(y2,self.param[2],self.ypr[1])
|
||||
self.ypr[0]=y2
|
||||
self.ypr[1]=y3
|
||||
|
||||
def otobraz(self):
|
||||
print('y=',self.ypr[1])
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
12 15 17 18 14
|
||||
18 9 15 26 7
|
||||
12 17 18 6 2
|
||||
@ -0,0 +1,4 @@
|
||||
20 20 40 41 35
|
||||
26 27 50 34 38
|
||||
25 48 65 54 29
|
||||
29 21 17 18 20
|
||||
@ -0,0 +1,50 @@
|
||||
import math
|
||||
|
||||
def calc(sample):
|
||||
minimum =min(sample)
|
||||
maximum=max(sample)
|
||||
print(minimum,maximum)
|
||||
ran = maximum-minimum
|
||||
|
||||
n= len(sample)
|
||||
mean = sum(sample)/n
|
||||
sum1 = 0
|
||||
for i in range(n):
|
||||
sum1 = (sample[i]-mean)**2
|
||||
std_dev = math.sqrt(1/n*sum1)
|
||||
ratio = ran/std_dev if std_dev != 0 else 0
|
||||
|
||||
return {'min': minimum, 'max': maximum, 'range': ran, 'deviation': std_dev,'range to stddev': ratio, 'samplesize': n}
|
||||
|
||||
def intervals(sample,m):
|
||||
stats =calc(sample)
|
||||
|
||||
minimum = stats['min']
|
||||
maximum =stats['max']
|
||||
|
||||
sortedsam = sorted(sample)
|
||||
n=len(sortedsam)
|
||||
|
||||
width =(maximum-minimum)/m
|
||||
bounds = [minimum + i*width for i in range(m+1)]
|
||||
|
||||
c = [0]*m
|
||||
s = 0
|
||||
|
||||
for i in range(m):
|
||||
lower = bounds[i]
|
||||
upper = bounds[i+1]
|
||||
|
||||
while s < n and sortedsam[s] <= upper:
|
||||
if i ==m-1:
|
||||
if sortedsam[s] >= lower:
|
||||
c[i]+=1
|
||||
else:
|
||||
if lower <=sortedsam[s] < upper:
|
||||
c[i]+=1
|
||||
s +=1
|
||||
|
||||
return bounds, c
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
import os
|
||||
import module3M1
|
||||
|
||||
def reader(filename):
|
||||
sample = []
|
||||
with open(filename, 'r', encoding = 'utf-8') as file:
|
||||
for line in file:
|
||||
vals = line.strip().split()
|
||||
for val in vals:
|
||||
sample.append(float(val))
|
||||
return sample
|
||||
|
||||
def display(bounds,c):
|
||||
maxcount =max(c)
|
||||
|
||||
for i,count in enumerate(c):
|
||||
lowers = bounds[i]
|
||||
uppers =bounds[i+1]
|
||||
bar = '[|]'*int(count)
|
||||
print(f'({lowers}, {uppers}) : {count} элементов | {bar}')
|
||||
|
||||
|
||||
def process():
|
||||
while True:
|
||||
filename = input('Имя файла:')
|
||||
if os.path.exists(filename):
|
||||
break
|
||||
print(f'Еще раз, {filename} неверное название')
|
||||
|
||||
sample = reader(filename)
|
||||
|
||||
while True:
|
||||
m =int(input('Введите число разбиений'))
|
||||
if m > 0:
|
||||
break
|
||||
else:
|
||||
('Введите ненулевое целое значение')
|
||||
|
||||
stats =module3M1.calc(sample)
|
||||
|
||||
print('Максимум: ', stats['max'])
|
||||
print('Минимум: ', stats['min'])
|
||||
print('Размах: ', stats['range'])
|
||||
print('СО: ', stats['deviation'])
|
||||
print('Отношение размаха к отклоеннию: ', stats['range to stddev'])
|
||||
bounds, c = module3M1.intervals(sample,m)
|
||||
|
||||
display(bounds,c)
|
||||
|
||||
@ -0,0 +1,190 @@
|
||||
# Тест по модулю 3
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
M3_14
|
||||
1) Создайте модуль М1, содержащий две функции:
|
||||
|
||||
- функция 1: аргумент - список или кортеж с выборкой; функция должна произвести расчет по выборке списка с наименьшим и наибольшим значениями, размахом (разность наибольшего и наименьшего значений), оценкой стандартного отклонения и отношением размаха к стандартному отклонению;
|
||||
|
||||
- функция 2: аргументы - список или кортеж с выборкой и целочисленный параметр m; функция должна обратиться к функции 1 и затем определить границы m непересекающихся интервалов в диапазоне величины между наибольшим и наименьшим значениями по выборке, содержащих примерно одинаковое число элементов выборки; функция должна вернуть 2 списка: со значениями границ интервалов и с числами элементов в интервалах.
|
||||
|
||||
2) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
|
||||
|
||||
- запрашивается имя текстового файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
|
||||
|
||||
- выборка вводится из файла и записывается в список (в строках файла может быть разное число значений, разделенных пробелами);
|
||||
|
||||
- запрашиваются у пользователя число интервалов разбиения;
|
||||
|
||||
- с помощью функций 1 и 2 производится определение границ интервалов и чисел элементов в них;
|
||||
|
||||
- отображается столбиковая диаграмма с интервалами и числами элементов выборки в них.
|
||||
|
||||
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
|
||||
|
||||
4) Проведите расчеты при 2-х разных файлах с выборками
|
||||
|
||||
## Решение
|
||||
|
||||
Содержимое модуля module3M1.py - расчеты
|
||||
|
||||
```py
|
||||
import math
|
||||
|
||||
def calc(sample):
|
||||
minimum =min(sample)
|
||||
maximum=max(sample)
|
||||
print(minimum,maximum)
|
||||
ran = maximum-minimum
|
||||
|
||||
n= len(sample)
|
||||
mean = sum(sample)/n
|
||||
sum1 = 0
|
||||
for i in range(n):
|
||||
sum1 = (sample[i]-mean)**2
|
||||
std_dev = math.sqrt(1/n*sum1)
|
||||
ratio = ran/std_dev if std_dev != 0 else 0
|
||||
|
||||
return {'min': minimum, 'max': maximum, 'range': ran, 'deviation': std_dev,'range to stddev': ratio, 'samplesize': n}
|
||||
|
||||
def intervals(sample,m):
|
||||
stats =calc(sample)
|
||||
|
||||
minimum = stats['min']
|
||||
maximum =stats['max']
|
||||
|
||||
sortedsam = sorted(sample)
|
||||
n=len(sortedsam)
|
||||
|
||||
width =(maximum-minimum)/m
|
||||
bounds = [minimum + i*width for i in range(m+1)]
|
||||
|
||||
c = [0]*m
|
||||
s = 0
|
||||
|
||||
for i in range(m):
|
||||
lower = bounds[i]
|
||||
upper = bounds[i+1]
|
||||
|
||||
while s < n and sortedsam[s] <= upper:
|
||||
if i ==m-1:
|
||||
if sortedsam[s] >= lower:
|
||||
c[i]+=1
|
||||
else:
|
||||
if lower <=sortedsam[s] < upper:
|
||||
c[i]+=1
|
||||
s +=1
|
||||
|
||||
return bounds, c
|
||||
```
|
||||
|
||||
Содержимое модуля module3M2.py - чтение, вывод, обработка данных и передача в M1
|
||||
|
||||
```py
|
||||
import os
|
||||
import module3M1
|
||||
|
||||
def reader(filename):
|
||||
sample = []
|
||||
with open(filename, 'r', encoding = 'utf-8') as file:
|
||||
for line in file:
|
||||
vals = line.strip().split()
|
||||
for val in vals:
|
||||
sample.append(float(val))
|
||||
return sample
|
||||
|
||||
def display(bounds,c):
|
||||
maxcount =max(c)
|
||||
|
||||
for i,count in enumerate(c):
|
||||
lowers = bounds[i]
|
||||
uppers =bounds[i+1]
|
||||
bar = '[|]'*int(count)
|
||||
print(f'({lowers}, {uppers}) : {count} элементов | {bar}')
|
||||
|
||||
|
||||
def process():
|
||||
while True:
|
||||
filename = input('Имя файла:')
|
||||
if os.path.exists(filename):
|
||||
break
|
||||
print(f'Еще раз, {filename} неверное название')
|
||||
|
||||
sample = reader(filename)
|
||||
|
||||
while True:
|
||||
m =int(input('Введите число разбиений'))
|
||||
if m > 0:
|
||||
break
|
||||
else:
|
||||
('Введите ненулевое целое значение')
|
||||
|
||||
stats =module3M1.calc(sample)
|
||||
|
||||
print('Максимум: ', stats['max'])
|
||||
print('Минимум: ', stats['min'])
|
||||
print('Размах: ', stats['range'])
|
||||
print('СО: ', stats['deviation'])
|
||||
print('Отношение размаха к отклоеннию: ', stats['range to stddev'])
|
||||
bounds, c = module3M1.intervals(sample,m)
|
||||
|
||||
display(bounds,c)
|
||||
```
|
||||
|
||||
Главные модуль вызова:
|
||||
|
||||
```py
|
||||
import module3M2
|
||||
|
||||
def main():
|
||||
|
||||
print('Расчет 1')
|
||||
module3M2.process()
|
||||
|
||||
print('\n' + '_+++++++++_')
|
||||
print('\n Расчет 2')
|
||||
module3M2.process()
|
||||
```
|
||||
|
||||
Вывод в консоли:
|
||||
|
||||
```py
|
||||
>>> main()
|
||||
Расчет 1
|
||||
Имя файла:mod3.txt
|
||||
Введите число разбиений5
|
||||
2.0 26.0
|
||||
Максимум: 26.0
|
||||
Минимум: 2.0
|
||||
Размах: 24.0
|
||||
СО: 3.0295336397000234
|
||||
Отношение размаха к отклоеннию: 7.922011389969717
|
||||
2.0 26.0
|
||||
(2.0, 6.8) : 2 элементов | [|][|]
|
||||
(6.8, 11.6) : 2 элементов | [|][|]
|
||||
(11.6, 16.4) : 5 элементов | [|][|][|][|][|]
|
||||
(16.4, 21.2) : 5 элементов | [|][|][|][|][|]
|
||||
(21.2, 26.0) : 1 элементов | [|]
|
||||
|
||||
_+++++++++_
|
||||
|
||||
Расчет 2
|
||||
Имя файла:mod31.txt
|
||||
Введите число разбиений6
|
||||
17.0 65.0
|
||||
Максимум: 65.0
|
||||
Минимум: 17.0
|
||||
Размах: 48.0
|
||||
СО: 2.8733473510872303
|
||||
Отношение размаха к отклоеннию: 16.705254929181304
|
||||
17.0 65.0
|
||||
(17.0, 25.0) : 6 элементов | [|][|][|][|][|][|]
|
||||
(25.0, 33.0) : 4 элементов | [|][|][|][|]
|
||||
(33.0, 41.0) : 4 элементов | [|][|][|][|]
|
||||
(41.0, 49.0) : 1 элементов | [|]
|
||||
(49.0, 57.0) : 2 элементов | [|][|]
|
||||
(57.0, 65.0) : 1 элементов | [|]
|
||||
```
|
||||
|
После Ширина: | Высота: | Размер: 11 KiB |
|
После Ширина: | Высота: | Размер: 18 KiB |
@ -0,0 +1,230 @@
|
||||
# Отчет по Теме 9
|
||||
|
||||
Савин Семён, А-02-23
|
||||
|
||||
## 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__', '__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. Использование классов, содержащихся в модулях
|
||||
|
||||

|
||||
|
||||
```py
|
||||
>>> from Mod3 import Class1
|
||||
>>> z4 = Class1()
|
||||
>>> z4.data = 'значение данного data у экз.4'
|
||||
>>> z4.otobrazh()
|
||||
значение данного data у экз.4
|
||||
>>> import Mod3
|
||||
>>> z4 = Mod3.Class2()
|
||||
>>> z4.zad_zn('Класс из модуля')
|
||||
>>> z4.otobrazh()
|
||||
значение= Класс из модуля
|
||||
>>> Mod3.otobrazh('Объект')
|
||||
значение объекта= Объект
|
||||
>>>
|
||||
```
|
||||
|
||||
вызов функция выводит значение objekt, Class2 переопределяет otobrazh в Class1
|
||||
|
||||
## 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__', '__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__', '__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)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__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']
|
||||
>>> dir(z7) == dir(Class3)
|
||||
False
|
||||
>>> z7.rozden='1987'
|
||||
>>> dir(z7)
|
||||
['__add__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__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__', '__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'>,)
|
||||
>>> 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#108>", line 1, in <module>
|
||||
exempl.svojstvo
|
||||
File "<pyshell#102>", 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]
|
||||
y1=self.param[0]*y0
|
||||
y2=inerz(y1,self.param[1],self.ypr[0])
|
||||
y3=inerz(y2,self.param[2],self.ypr[1])
|
||||
self.ypr[0]=y2
|
||||
self.ypr[1]=y3
|
||||
|
||||
def otobraz(self):
|
||||
print('y=',self.ypr[1])
|
||||
```
|
||||
|
||||
Содержание файла MAIN.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
|
||||
================================= RESTART: C:\Users\somas\python-labs\TEMA9\MAIN.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,131 @@
|
||||
# Общее задание по Теме 9
|
||||
|
||||
## Задание
|
||||
|
||||
Создайте и запишите в модуль класс, содержащий следующие компоненты:
|
||||
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
|
||||
|
||||
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
|
||||
|
||||
- метод для обеспечения перевода сотрудника из одного отдела в другой;
|
||||
|
||||
- метод для изменения должности сотрудника;
|
||||
|
||||
- свойство, содержащее перечень (список) поощрений сотрудника.
|
||||
|
||||
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
|
||||
|
||||
|
||||
## Решение
|
||||
|
||||
Содержание файла EMPLOYEES.py
|
||||
|
||||
```py
|
||||
class Employee:
|
||||
def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0):
|
||||
self.fio = fio
|
||||
self.otdel = otdel
|
||||
self.dolz = dolz
|
||||
self.oklad = oklad
|
||||
self.__bonus = []
|
||||
|
||||
def increase_oklad(self,summa):
|
||||
self.oklad += summa
|
||||
print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}')
|
||||
|
||||
def move_otdel(self,new_otdel):
|
||||
old_otdel = self.otdel
|
||||
self.otdel = new_otdel
|
||||
|
||||
print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}')
|
||||
|
||||
def change_dolz(self,new_dolz):
|
||||
old_dolz = self.dolz
|
||||
self.dolz = new_dolz
|
||||
|
||||
print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}')
|
||||
|
||||
def give_bonus(self,bonus):
|
||||
self.__bonus.append(bonus)
|
||||
print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}')
|
||||
|
||||
@property
|
||||
def bonuses(self):
|
||||
return self.__bonus.copy()
|
||||
|
||||
def info_out(self):
|
||||
print('Информация о сотруднике:')
|
||||
print(f'\n ФИО: {self.fio}')
|
||||
print(f'\n Отдел: {self.otdel}')
|
||||
print(f'\n Должность: {self.dolz}')
|
||||
print(f'\n Оклад: {self.oklad:.2f}')
|
||||
|
||||
if self.__bonus:
|
||||
print('Поощрения: ')
|
||||
for i, poosh in enumerate(self.__bonus, 1):
|
||||
print(f" {i}. {poosh}")
|
||||
|
||||
else:
|
||||
print('no bonuses')
|
||||
```
|
||||
|
||||
Работа модуля
|
||||
|
||||
```py
|
||||
>>> from EMPLOYEES import Employee
|
||||
>>> e1 = Employee("Иванов И.И.", "IT", "Программист", 110000)
|
||||
>>> e2 = Employee("Сидоров С.Е.", "Плановый", "Эконмист", 100000)
|
||||
>>> e1.info_out()
|
||||
Информация о сотруднике:
|
||||
|
||||
ФИО: Иванов И.И.
|
||||
|
||||
Отдел: IT
|
||||
|
||||
Должность: Программист
|
||||
|
||||
Оклад: 110000.00
|
||||
no bonuses
|
||||
>>> e2.info_out()
|
||||
Информация о сотруднике:
|
||||
|
||||
ФИО: Сидоров С.Е.
|
||||
|
||||
Отдел: Плановый
|
||||
|
||||
Должность: Эконмист
|
||||
|
||||
Оклад: 100000.00
|
||||
no bonuses
|
||||
>>> e1.increase_oklad(70000)
|
||||
Оклад Иванов И.И. был повышен на 70000, новый оклад равен 180000
|
||||
>>> e2.move_otdel('Логистика')
|
||||
Сотрудник Сидоров С.Е. был переведен из Плановый в Логистика
|
||||
>>> e2.change_dolz('Аналитик')
|
||||
Должность сотрудника Сидоров С.Е. была изменена с Эконмист на Аналитик
|
||||
>>> e1.give_bonus('За успешную работу в качестве лидера IT команды')
|
||||
Сотруднику Иванов И.И. была выражена благодарность: За успешную работу в качестве лидера IT команды
|
||||
>>> e1.info_out()
|
||||
Информация о сотруднике:
|
||||
|
||||
ФИО: Иванов И.И.
|
||||
|
||||
Отдел: IT
|
||||
|
||||
Должность: Программист
|
||||
|
||||
Оклад: 180000.00
|
||||
Поощрения:
|
||||
1. За успешную работу в качестве лидера IT команды
|
||||
>>> e2.info_out()
|
||||
Информация о сотруднике:
|
||||
|
||||
ФИО: Сидоров С.Е.
|
||||
|
||||
Отдел: Логистика
|
||||
|
||||
Должность: Аналитик
|
||||
|
||||
Оклад: 100000.00
|
||||
no bonuses
|
||||
```
|
||||