Сравнить коммиты
14 Коммитов
| Автор | SHA1 | Дата | |
|---|---|---|---|
| f306323f80 | |||
| a9286dbd80 | |||
| 924bdbc20d | |||
| 9f07039661 | |||
| 35a8e9c4e5 | |||
| 2ff5382146 | |||
| 6a5e2f9a4c | |||
| 4bc65ebc86 | |||
| c5c51546df | |||
| c2bb92e32d | |||
| 7b5538000c | |||
| d23001446f | |||
| 2163eef623 | |||
| c31b925579 |
@@ -1,15 +1,10 @@
|
|||||||
# Общее контрольное задание по теме 0
|
# Общее контрольное задание по теме
|
||||||
|
|
||||||
Иванов Иван, А-01-25
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
## Задание
|
## Задание
|
||||||
|
|
||||||
Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной.
|
|
||||||
|
|
||||||
## Решение
|
## Решение
|
||||||
|
|
||||||
```py
|
|
||||||
>>> name = 'Иван'
|
|
||||||
>>> type(name)
|
|
||||||
'str'
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Индивидуальное контрольное задание по теме 0
|
# Индивидуальное контрольное задание по теме 0
|
||||||
|
|
||||||
Иванов Иван, А-01-25
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
## Задание
|
## Задание
|
||||||
|
|
||||||
|
|||||||
6
TEMA1/prb0.py
Обычный файл
@@ -0,0 +1,6 @@
|
|||||||
|
#Программа по Теме 1 Махнов Георгий
|
||||||
|
print('Hello')
|
||||||
|
name = input("Как Вас зовут? ")
|
||||||
|
print("Привет,", name)
|
||||||
|
import os
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA1")
|
||||||
112
TEMA1/report.md
Обычный файл
@@ -0,0 +1,112 @@
|
|||||||
|
# Отчет по теме 1
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 1. Знакомство с интерпретатором и интерактивной оболочкой IDLE
|
||||||
|
|
||||||
|
## 2 задание
|
||||||
|
```
|
||||||
|
PS C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs\TEMA1> & C:/Users/gmack/AppData/Local/Programs/Python/Python312/python.exe
|
||||||
|
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
|
||||||
|
Type "help", "copyright", "credits" or "license" for more information.
|
||||||
|
Ctrl click to launch VS Code Native REPL
|
||||||
|
>>>
|
||||||
|
```
|
||||||
|
## 3 задание
|
||||||
|
```
|
||||||
|
>>> print('Hello')
|
||||||
|
Hello
|
||||||
|
```
|
||||||
|
## 4 задание
|
||||||
|
```
|
||||||
|
>>> h=input('Your name=')
|
||||||
|
Your name=Gosha
|
||||||
|
```
|
||||||
|
## 5 задание
|
||||||
|
```
|
||||||
|
>>> exit()
|
||||||
|
```
|
||||||
|
## 8 задание
|
||||||
|
|
||||||
|
```
|
||||||
|
import os
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA1")
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10 задание
|
||||||
|

|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## 11 задание
|
||||||
|
|
||||||
|
```PS C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs\TEMA1> python prb0.py```
|
||||||
|
|
||||||
|
```
|
||||||
|
Hello
|
||||||
|
Как Вас зовут? Gosha
|
||||||
|
Привет, Gosha
|
||||||
|
```
|
||||||
|
|
||||||
|
## 12 задание.
|
||||||
|
|
||||||
|
Открыл каталог __pycaсhe__, нашел там файл Pr0.cpython-34.pyc
|
||||||
|
После открытия в тектстовом редакторе обнаружил символы - байт-код, который был создан при запуске программы Pr0.py и служит для ускорения повторного запуска программы
|
||||||
|
|
||||||
|
## 14 задание
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> help(print)
|
||||||
|
Help on built-in function print in module builtins:
|
||||||
|
|
||||||
|
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||||
|
Prints the values to a stream, or to sys.stdout by default.
|
||||||
|
|
||||||
|
sep
|
||||||
|
string inserted between values, default a space.
|
||||||
|
end
|
||||||
|
string appended after the last value, default a newline.
|
||||||
|
file
|
||||||
|
a file-like object (stream); defaults to the current sys.stdout.
|
||||||
|
flush
|
||||||
|
whether to forcibly flush the stream.
|
||||||
|
```
|
||||||
|
```
|
||||||
|
>>> help(print); help(input)
|
||||||
|
Help on built-in function print in module builtins:
|
||||||
|
|
||||||
|
print(*args, sep=' ', end='\n', file=None, flush=False)
|
||||||
|
Prints the values to a stream, or to sys.stdout by default.
|
||||||
|
|
||||||
|
sep
|
||||||
|
string inserted between values, default a space.
|
||||||
|
end
|
||||||
|
string appended after the last value, default a newline.
|
||||||
|
file
|
||||||
|
a file-like object (stream); defaults to the current sys.stdout.
|
||||||
|
flush
|
||||||
|
whether to forcibly flush the stream.
|
||||||
|
|
||||||
|
Help on built-in function input in module builtins:
|
||||||
|
|
||||||
|
input(prompt='', /)
|
||||||
|
Read a string from standard input. The trailing newline is stripped.
|
||||||
|
|
||||||
|
The prompt string, if given, is printed to standard output without a
|
||||||
|
trailing newline before reading input.
|
||||||
|
|
||||||
|
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
|
||||||
|
On *nix systems, readline is used if available.
|
||||||
|
```
|
||||||
|
## 15 задание
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> import prb0
|
||||||
|
Hello
|
||||||
|
Как Вас зовут? Gosha
|
||||||
|
Привет, Gosha
|
||||||
|
>>> import tdemo_chaos
|
||||||
|
```
|
||||||
11
TEMA1/task.md
Обычный файл
@@ -0,0 +1,11 @@
|
|||||||
|
# Общее контрольное задание по теме 1
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Если требуется повторить с небольшим изменением ранее введенную инструкцию, работая в командном окне IDLE, как это лучше сделать?
|
||||||
|
|
||||||
|
## Ответ на вопрос
|
||||||
|
|
||||||
|
Можно в командном окне IDLE навести курсор на нужную команду, нажать Enter и редактированием изменить её на нужную.
|
||||||
352
TEMA2/report.md
Обычный файл
@@ -0,0 +1,352 @@
|
|||||||
|
# Отчет по теме 2
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 2. Базовые типы объектов
|
||||||
|
|
||||||
|
## задание 2
|
||||||
|
#### Изучим операторы присваивания, функцию для определения существующих объектов dir и функцию для определения типа объекта type
|
||||||
|
```
|
||||||
|
>>> f1 = 16; f2 = 3
|
||||||
|
>>> f1,f2
|
||||||
|
(16, 3)
|
||||||
|
>>> f1;f2
|
||||||
|
16
|
||||||
|
3
|
||||||
|
>>> 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__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
|
||||||
|
>>> type(f2)
|
||||||
|
<class 'int'>
|
||||||
|
>>> del f1,f2
|
||||||
|
>>> f1,f2
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#8>", line 1, in <module>
|
||||||
|
f1,f2
|
||||||
|
NameError: name 'f1' is not defined
|
||||||
|
```
|
||||||
|
|
||||||
|
## задание 3.
|
||||||
|
#### Изучим правила именования объектов в Python
|
||||||
|
```
|
||||||
|
>>> ggl = ,6
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
>>> ggl = 1,6
|
||||||
|
>>> hh='Строка'
|
||||||
|
>>> 73sr=3
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
>>> and=7
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
```
|
||||||
|
## задание 4.
|
||||||
|
#### Выведем список ключевых слов
|
||||||
|
```
|
||||||
|
>>> import keyword
|
||||||
|
>>> keyword.kwlist
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', '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.
|
||||||
|
#### Выведем список встроенных идентификаторов
|
||||||
|
```
|
||||||
|
>>> 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', '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, len, max, min, pow, round, sorted, sum, zip
|
||||||
|
```
|
||||||
|
>>> x = -3
|
||||||
|
>>> abs(x)
|
||||||
|
3
|
||||||
|
>>> a = [1,2,3,4,5,8]
|
||||||
|
>>> len(a)
|
||||||
|
6
|
||||||
|
>>> max(a)
|
||||||
|
8
|
||||||
|
>>> min(a)
|
||||||
|
1
|
||||||
|
>>> pow(x,2)
|
||||||
|
9
|
||||||
|
>>> round(2.1989)
|
||||||
|
2
|
||||||
|
>>> b = [13,5,2,9,1,0]
|
||||||
|
>>> sorted(b)
|
||||||
|
[0, 1, 2, 5, 9, 13]
|
||||||
|
>>> sum(a)
|
||||||
|
23
|
||||||
|
>>> x = zip(a,b)
|
||||||
|
>>> print(list(x))
|
||||||
|
[(1, 13), (2, 5), (3, 2), (4, 9), (5, 1), (8, 0)]
|
||||||
|
```
|
||||||
|
## задание 6.
|
||||||
|
#### Убедимся, что Python чувствителен к регистру и что переменные, которые различаются размером буквы, будут разными
|
||||||
|
```
|
||||||
|
>>> Gg1=45
|
||||||
|
>>> gg1,Gg1
|
||||||
|
(1.6, 45)
|
||||||
|
```
|
||||||
|
## задание 7.
|
||||||
|
#### Изучим простые базовые типы объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str).
|
||||||
|
### 7.1 Логический объект
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> bb1=True; bb2=False
|
||||||
|
>>> bb1;bb2
|
||||||
|
True
|
||||||
|
False
|
||||||
|
>>> type(bb1)
|
||||||
|
<class 'bool'>
|
||||||
|
```
|
||||||
|
### 7.2 Целочисленные, комплексные объекты, объекты с разной системой счисления
|
||||||
|
```
|
||||||
|
>>>ii1=-1234567890
|
||||||
|
>>>ff1=-8.9876e-12
|
||||||
|
>>>dv1=0b1101010
|
||||||
|
>>> type(dv1)
|
||||||
|
<class 'int'>
|
||||||
|
>>>vsm1=0o52765
|
||||||
|
>>>shest1=0x7109af6
|
||||||
|
>>>cc1=2-3j
|
||||||
|
>>>a=3.67; b=-0.45
|
||||||
|
>>>cc2=complex(a,b)
|
||||||
|
>>> cc2
|
||||||
|
(3.67-0.45j)
|
||||||
|
```
|
||||||
|
### 7.3 Строки
|
||||||
|
```
|
||||||
|
>>>ss1='Это - строка символов'
|
||||||
|
>>>ss1="Это - строка символов"
|
||||||
|
>>> ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
|
||||||
|
>>> print(ss1a)
|
||||||
|
Это - " строка символов ",
|
||||||
|
выводимая на двух строках
|
||||||
|
>>> ss1b= 'Меня зовут: \n Георгий'
|
||||||
|
>>> print(ss1b)
|
||||||
|
Меня зовут: \n Георгий
|
||||||
|
>>>mnogo="""Нетрудно заметить , что в результате операции
|
||||||
|
над числами разных типов получается число,
|
||||||
|
имеющее более сложный тип из тех, которые участвуют в операции."""
|
||||||
|
>>>print(mnogo)
|
||||||
|
Нетрудно заметить , что в результате операции
|
||||||
|
над числами разных типов получается число,
|
||||||
|
имеющее более сложный тип из тех, которые участвуют в операции.
|
||||||
|
>>> ss1[0]
|
||||||
|
'Э'
|
||||||
|
>>> ss1[8]
|
||||||
|
'р'
|
||||||
|
>>> ss1[-2]
|
||||||
|
'о'
|
||||||
|
>>> ss1[6:9]
|
||||||
|
'стр'
|
||||||
|
>>> ss1[13:]
|
||||||
|
'символов'
|
||||||
|
>>> ss1[5:-8]
|
||||||
|
' строка '
|
||||||
|
>>> ss1[3:17:2]
|
||||||
|
' тоасм'
|
||||||
|
>>> ss1[17:3:-2]
|
||||||
|
'омсаот '
|
||||||
|
>>> ss1[17] = ss1[-4]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#42>", line 1, in <module>
|
||||||
|
ss1[17] = ss1[-4]
|
||||||
|
TypeError: 'str' object does not support item assignment
|
||||||
|
>>> ss1[4]='=' # Будет диагностика!
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<pyshell#43>", line 1, in <module>
|
||||||
|
ss1[4]='=' # Будет диагностика!
|
||||||
|
TypeError: 'str' object does not support item assignment
|
||||||
|
>>> ss1b = ss1b[0:4] + ss1b[11:] + " " + ss1b[5:10]
|
||||||
|
>>> ss1b
|
||||||
|
'Меня \n Георгий зовут'
|
||||||
|
```
|
||||||
|
#### Самостоятельно придумаем значения и создадим объекты разных типов. После этого отобразим типы и значения созданных объектов.
|
||||||
|
```
|
||||||
|
>>> six_int = 0x7109af6
|
||||||
|
>>> num_one = 1
|
||||||
|
>>> num_two = 3.75
|
||||||
|
>>> compl = complex(num_one, num_two)
|
||||||
|
>>> print(f"six_int => {six_int} => {type(six_int)} \n num_one => {num_one} => {type(num_one)}
|
||||||
|
\n num_two => {num_two} => {type(num_two)} \n compl => {compl} => {type(compl)}")
|
||||||
|
six_int => 118528758 => <class 'int'>
|
||||||
|
num_one => 1 => <class 'int'>
|
||||||
|
num_two => 3.75 => <class 'float'>
|
||||||
|
compl => (1+3.75j) => <class 'complex'>
|
||||||
|
```
|
||||||
|
## задание 8. Изучим более сложные типы объектов: списки (list), кортежи (tuple), словари (dict), множества (set).
|
||||||
|
### 8.1 Списки (list)
|
||||||
|
```
|
||||||
|
>>> spis1=[111,'Spisok',5-9j]
|
||||||
|
>>> stup=[0,0,1,1,1,1,1,1,1]
|
||||||
|
>>> spis=[1,2,3,4,
|
||||||
|
5,6,7,
|
||||||
|
8,9,10]
|
||||||
|
|
||||||
|
>>> spis1[-1]
|
||||||
|
(5-9j)
|
||||||
|
>>> stup[-8::2]
|
||||||
|
[0, 1, 1, 1]
|
||||||
|
>>> spis1[1]='Список'
|
||||||
|
>>> spis1
|
||||||
|
[111, 'Список', (5-9j)]
|
||||||
|
>>> len(spis1)
|
||||||
|
3
|
||||||
|
>>> spis1[1]='Список'
|
||||||
|
>>> spis1
|
||||||
|
[111, 'Список', (5-9j)]
|
||||||
|
>>> len(spis1)
|
||||||
|
3
|
||||||
|
>>> spis1.append('New item')
|
||||||
|
>>> spis1+["New item"]
|
||||||
|
[111, 'Список', (5-9j), 'New item', 'New item']
|
||||||
|
>>> spis1.append(ss1b)
|
||||||
|
>>> spis1
|
||||||
|
[111, 'Список', (5-9j), 'New item', 'Меня \n Георгий зовут']
|
||||||
|
>> spis1.pop(1)
|
||||||
|
'Список'
|
||||||
|
>>> spis1
|
||||||
|
[111, (5-9j), 'New item', 'Меня \n Георгий зовут']
|
||||||
|
>>> spis1.extend([1,2,3])
|
||||||
|
>>> spis1
|
||||||
|
[111, (5-9j), 'New item', 'Меня \n Георгий зовут', 1, 2, 3]
|
||||||
|
>>> spis_1 = spis1.copy()
|
||||||
|
>>> spis_1
|
||||||
|
[111, (5-9j), 'New item', 'Меня \n Георгий зовут', 1, 2, 3]
|
||||||
|
>>> spis_1.index(1)
|
||||||
|
4
|
||||||
|
>>> spis_1.count(3)
|
||||||
|
1
|
||||||
|
>>> spis_1.reverse()
|
||||||
|
>>> spis_1
|
||||||
|
[3, 2, 1, 'Меня \n Георгий зовут', 'New item', (5-9j), 111]
|
||||||
|
>>> spis_1.clear()
|
||||||
|
>>> spis_1
|
||||||
|
[]
|
||||||
|
>>> spis_1.extend([1,2,3,2,5,4,6])
|
||||||
|
>>> spis_1.sort()
|
||||||
|
>>> spis_1
|
||||||
|
[1, 2, 2, 3, 4, 5, 6]
|
||||||
|
>>> spis2=[spis1,[4,5,6,7]]
|
||||||
|
>>> spis2
|
||||||
|
[[111, (5-9j), 'New item', 'Меня \n Георгий зовут', 1, 2, 3], [4, 5, 6, 7]]
|
||||||
|
>>> spis2[0][1]
|
||||||
|
(5-9j)
|
||||||
|
>>> spis2[0][1]=78
|
||||||
|
>>> spis2[0][1]
|
||||||
|
78
|
||||||
|
>>> spis1
|
||||||
|
[111, 78, 'New item', 'Меня \n Георгий зовут', 1, 2, 3]
|
||||||
|
```
|
||||||
|
#### Придумаем и создадим свой объект-список, элементами которого будут объекты разных типов: число, строка, логическое значение, список
|
||||||
|
```
|
||||||
|
>>> rand_list = [2, 'stringgg', True, [1,2,3]]
|
||||||
|
>>> rand_list
|
||||||
|
[2, 'stringgg', True, [1, 2, 3]]
|
||||||
|
```
|
||||||
|
### 8.2 Кортежи (tuple)
|
||||||
|
```
|
||||||
|
>>> 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, 'Меня \n Георгий зовут')
|
||||||
|
>>> kort2=kort1[:2]+kort1[3:]
|
||||||
|
>>> kort2
|
||||||
|
(222, 'Kortezh', 1, 2, 'Меня \n Георгий зовут')
|
||||||
|
>>> kort2.index(2)
|
||||||
|
3
|
||||||
|
>>> kort1.count(222)
|
||||||
|
1
|
||||||
|
>>> kort1[2]=90
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
```
|
||||||
|
#### Создадим объект-кортеж с элементами разных типов: число, строка, список, кортеж.
|
||||||
|
```
|
||||||
|
>>> kort_rand = (1, 'string', [1,4,2], (3,'r'))
|
||||||
|
>>> kort_rand
|
||||||
|
(1, 'string', [1, 4, 2], (3, 'r'))
|
||||||
|
```
|
||||||
|
### 8.3 Словарь (dict)
|
||||||
|
```
|
||||||
|
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||||
|
>>> dic1
|
||||||
|
{'Saratov': 145, 'Orel': 56, 'Vologda': 45}
|
||||||
|
>>> dic1['Orel']
|
||||||
|
56
|
||||||
|
>>> dic1['Pskov']=78
|
||||||
|
>>> dic1
|
||||||
|
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
|
||||||
|
>>> sorted(dic1.keys())
|
||||||
|
['Orel', 'Pskov', 'Saratov', 'Vologda']
|
||||||
|
>>> sorted(dic1.values())
|
||||||
|
[45, 56, 78, 145]
|
||||||
|
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
|
||||||
|
>>> 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': 'Меня \n Георгий зовут'}
|
||||||
|
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
|
||||||
|
>>> dic5
|
||||||
|
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня \n Георгий зовут'}
|
||||||
|
```
|
||||||
|
#### Самостоятельно придумаем объект-кортеж с 7 элементами и объект-список с 5 элементами и попробуйте создать из них словарь с помощью функций dict и zip. В словаре будет всего лишь 5 объектов, так как функция zip будет объединять с первых элементов обоих объектов до тех пор, пока не закончится значения одного из объектов
|
||||||
|
```
|
||||||
|
>>> cort_1 = {87, 83, 84, 85, 95, 82, 86}
|
||||||
|
>>> list_1 = ["ESU", "IAD", "TAU", "NODES", "Nets"]
|
||||||
|
>>> dict_1 = dict(zip(cort_1, list_1))
|
||||||
|
>>> dict_1
|
||||||
|
{82: 'ESU', 83: 'IAD', 84: 'TAU', 85: 'NODES', 86: 'Nets'}
|
||||||
|
```
|
||||||
|
### 8.4 Множество (set)
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
|
||||||
|
>>> mnoz1
|
||||||
|
{'линия связи', 'двигатель', 'датчик', 'микропроцессор'}
|
||||||
|
>>> len(mnoz1)
|
||||||
|
4
|
||||||
|
>>> 'датчик' in mnoz1
|
||||||
|
True
|
||||||
|
>>> mnoz1.add('реле')
|
||||||
|
>>> mnoz1
|
||||||
|
{'датчик', 'линия связи', 'реле', 'микропроцессор', 'двигатель'}
|
||||||
|
>>> mnoz1.remove('линия связи')
|
||||||
|
>>> mnoz1
|
||||||
|
{'датчик', 'реле', 'микропроцессор', 'двигатель'}
|
||||||
|
```
|
||||||
|
#### Самостоятельно придумаем объект-множество с элементами разных типов и попробуйте с ним выполнить разные операции.
|
||||||
|
```
|
||||||
|
>>> mnoz_2 = {2, 15, 'hi', 15, 7j-13, 'hi', True}
|
||||||
|
>>> mnoz_2
|
||||||
|
{True, 2, 'hi', (-13+7j), 15}
|
||||||
|
>>> mnoz_2.remove(2)
|
||||||
|
>>> mnoz_2
|
||||||
|
{True, 'hi', (-13+7j), 15}
|
||||||
|
>>> mnoz_2.add(2)
|
||||||
|
>>> mnoz_2
|
||||||
|
{True, 2, 'hi', (-13+7j), 15}
|
||||||
|
>>> len(mnoz_2)
|
||||||
|
5
|
||||||
|
```
|
||||||
57
TEMA2/task.md
Обычный файл
@@ -0,0 +1,57 @@
|
|||||||
|
# Общее контрольное задание по теме
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Общее контрольное задание
|
||||||
|
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
|
||||||
|
|
||||||
|
• Создать переменную с именем familia и со значением - символьной строкой – своей фамилией в латинской транскрипции.
|
||||||
|
|
||||||
|
• Создать переменную со значением, совпадающим с первой буквой из familia.
|
||||||
|
|
||||||
|
• Создать переменную с именем sp_kw со значением – списком всей ключевых слов языка Python.
|
||||||
|
|
||||||
|
• Удалите из списка sp_kw значение 'nonlocal'. Выводом списка в командном окне IDLE убедитесь, что это значение удалено из списка.
|
||||||
|
|
||||||
|
• Создайте кортеж kort_nam с именами: вашим и еще 3-х студентов из вашей группы. Напишите инструкцию, позволяющую убедиться, что тип переменной – это tuple.
|
||||||
|
|
||||||
|
• Напишите инструкцию, добавляющую в kort_nam имена еще двух студентов.
|
||||||
|
|
||||||
|
• Напишите инструкцию, позволяющую определить, сколько раз в кортеже присутствуют студенты с именем «Дима».
|
||||||
|
|
||||||
|
• Создайте словарь dict_bas, в котором ключами являются русские названия типов перемен-ных, использованных в предыдущих операторах, а значениями – ранее созданные пере-менные, соответствующие этим типам.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
```
|
||||||
|
>>> familia = "Mahnov"
|
||||||
|
>>> familia
|
||||||
|
'Mahnov'
|
||||||
|
|
||||||
|
>>> firstFamiliaLetter = familia[0]
|
||||||
|
>>> firstFamiliaLetter
|
||||||
|
'M'
|
||||||
|
|
||||||
|
>>> sp_kw = keyword.kwlist
|
||||||
|
>>> sp_kw
|
||||||
|
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
|
||||||
|
|
||||||
|
>>> kort_nam = ("Георгий", "Данил", "Дима", "Артём")
|
||||||
|
>>> kort_nam
|
||||||
|
('Георгий', 'Данил', 'Дима', 'Артём')
|
||||||
|
>>> type(kort_nam)
|
||||||
|
<class 'tuple'>
|
||||||
|
|
||||||
|
>>> kort_nam += ("Паша","Максим")
|
||||||
|
>>> kort_nam
|
||||||
|
('Георгий', 'Данил', 'Дима', 'Артём', 'Паша', 'Максим')
|
||||||
|
|
||||||
|
>>> kort_nam.count("Дима")
|
||||||
|
1
|
||||||
|
|
||||||
|
|
||||||
|
>>> dict_bas = {"Строка":familia,"Список":sp_kw,"Кортеж":kort_nam}
|
||||||
|
>>> dict_bas
|
||||||
|
{'Строка': 'Mahnov', 'Список': ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'], 'Кортеж': ('Георгий', 'Данил', 'Дима', 'Артём', 'Паша', 'Максим')}
|
||||||
|
```
|
||||||
31
TEMA2/test.md
Обычный файл
@@ -0,0 +1,31 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 2
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание 3
|
||||||
|
Пусть созданы два объекта с помощью инструкций:
|
||||||
|
|
||||||
|
b1={'d':23,'f':11,'k':45}
|
||||||
|
|
||||||
|
b2={'u':6,'v':67}
|
||||||
|
|
||||||
|
К какому классу относятся эти объекты? Как создать объект того же класса со всеми 5 элементами?
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Оба объекта относятся к классу словарь (dict), так как в них присутствуют пара "ключ:значение". Также это можно проверить путем команды:
|
||||||
|
```
|
||||||
|
>>> b1={'d':23,'f':11,'k':45}
|
||||||
|
>>> b2={'u':6,'v':67}
|
||||||
|
>>> type(b1)
|
||||||
|
<class 'dict'>
|
||||||
|
>>> type(b2)
|
||||||
|
<class 'dict'>
|
||||||
|
```
|
||||||
|
Создать объект класса dict со всеми 5 элементами можно путем создания нового объекта с добавлением распакованных словарей b1 и b2
|
||||||
|
```
|
||||||
|
>>> b_combined = {**b1, **b2}
|
||||||
|
>>> b_combined
|
||||||
|
{'d': 23, 'f': 11, 'k': 45, 'u': 6, 'v': 67}
|
||||||
|
```
|
||||||
509
TEMA3/report.md
Обычный файл
@@ -0,0 +1,509 @@
|
|||||||
|
# Отчет по теме 3
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 3. Операции с объектами
|
||||||
|
|
||||||
|
## Задание 2 Преобразование простых базовых типов объектов.
|
||||||
|
### 2.1 Преобразование в логический тип с помощью функции bool(<Объект>).
|
||||||
|
```
|
||||||
|
>>> logiz1=bool(56)
|
||||||
|
>>> logiz2=bool(0)
|
||||||
|
>>> logiz3=bool("Beta")
|
||||||
|
>>> logiz4=bool("")
|
||||||
|
>>>
|
||||||
|
>>> type(logiz1)
|
||||||
|
<class 'bool'>
|
||||||
|
>>> type(logiz2)
|
||||||
|
<class 'bool'>
|
||||||
|
>>> type(logiz3)
|
||||||
|
<class 'bool'>
|
||||||
|
>>> type(logiz4)
|
||||||
|
<class 'bool'>
|
||||||
|
```
|
||||||
|
### 2.2 2.2. Преобразование в целое десятичное число объекта с заданной системой счисления осуществ-ляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объ-ект>]). По умолчанию система счисления принимается десятичной.
|
||||||
|
```
|
||||||
|
>>> tt1=int(198.6) #Отбрасывается дробная часть
|
||||||
|
>>> tt2=int("-76")
|
||||||
|
>>> tt3=int("B",16)
|
||||||
|
>>> tt3=int("B",16)
|
||||||
|
>>> tt4=int("71",8)
|
||||||
|
>>> tt1
|
||||||
|
198
|
||||||
|
>>> tt2
|
||||||
|
-76
|
||||||
|
>>> tt3
|
||||||
|
11
|
||||||
|
>>> tt4
|
||||||
|
57
|
||||||
|
>>> tt5=int("98.76")
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
ValueError: invalid literal for int() with base 10: '98.76'
|
||||||
|
```
|
||||||
|
Функция int() не может преобразовать строку с числом с плавающей точкой, из-за чего и возникла ошибка
|
||||||
|
```
|
||||||
|
>>> flt1=float(789)
|
||||||
|
>>> flt2=float(-6.78e2)
|
||||||
|
>>> flt3=float("Infinity")
|
||||||
|
>>> flt4=float("-inf")
|
||||||
|
>>> flt1
|
||||||
|
789.0
|
||||||
|
>>> flt2
|
||||||
|
-678.0
|
||||||
|
>>> flt3
|
||||||
|
inf
|
||||||
|
>>> flt4
|
||||||
|
-inf
|
||||||
|
```
|
||||||
|
### 2.3 Преобразование десятичных чисел в другие системы счисления
|
||||||
|
```
|
||||||
|
>>> hh=123
|
||||||
|
>>> dv1=bin(hh)
|
||||||
|
>>> vos1=oct(hh)
|
||||||
|
>>> shs1=hex(hh)
|
||||||
|
>>> hh
|
||||||
|
123
|
||||||
|
>>> dv1
|
||||||
|
'0b1111011'
|
||||||
|
>>> vos1
|
||||||
|
'0o173'
|
||||||
|
>>> shs1
|
||||||
|
'0x7b'
|
||||||
|
>>> int(dv1, 2)
|
||||||
|
123
|
||||||
|
>>> int(vos1, 8)
|
||||||
|
123
|
||||||
|
>>> int(shs1, 16)
|
||||||
|
123
|
||||||
|
```
|
||||||
|
## Задание 3.Изучим преобразования более сложных базовых типов объектов
|
||||||
|
### 3.1 Преобразование в строку символов с помощью функции str(<Объект>).
|
||||||
|
```
|
||||||
|
>>> 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 Преобразование элементов объекта в список с помощью функции 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']
|
||||||
|
>>> spis_val = list({"A":1,"B":2,"C":9}.values())
|
||||||
|
>>> spis_val
|
||||||
|
[1, 2, 9]
|
||||||
|
```
|
||||||
|
### 3.3 3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).
|
||||||
|
```
|
||||||
|
>>> 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 Удаление объектов.
|
||||||
|
```
|
||||||
|
>>> del strk5, kort8
|
||||||
|
>>> strk5, kort8
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'strk5' is not defined. Did you mean: 'strk1'?
|
||||||
|
>>> kort8
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'kort8' is not defined. Did you mean: 'kort7'?
|
||||||
|
>>> my_fio = "Махнов Г.А."
|
||||||
|
>>> list_fio = list(my_fio)
|
||||||
|
>>> list_fio
|
||||||
|
['М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.']
|
||||||
|
>>> tuple_fio = tuple(list_fio)
|
||||||
|
>>> tuple_fio
|
||||||
|
('М', 'а', 'х', 'н', 'о', 'в', ' ', 'Г', '.', 'А', '.')
|
||||||
|
>>> new_str_fio = "".join(tuple_fio)
|
||||||
|
>>> new_str_fio
|
||||||
|
'Махнов Г.А.'
|
||||||
|
```
|
||||||
|
## Задание 4 Арифмитические операции
|
||||||
|
### 4.1 Сложение и вычитание (+ и -)
|
||||||
|
```
|
||||||
|
>>> 12+7+90
|
||||||
|
109
|
||||||
|
>>> 5.689e-1 - 0.456
|
||||||
|
0.11289999999999994
|
||||||
|
>>> 23.6+54
|
||||||
|
77.6
|
||||||
|
>>> 14-56.7+89
|
||||||
|
46.3
|
||||||
|
```
|
||||||
|
### 4.2 Умножение (*)
|
||||||
|
```
|
||||||
|
>>> -6.7*12
|
||||||
|
-80.4
|
||||||
|
```
|
||||||
|
### 4.3 Деление (/).
|
||||||
|
```
|
||||||
|
>>> -234.5/6
|
||||||
|
-39.083333333333336
|
||||||
|
>>> a=178/45
|
||||||
|
>>> type(a)
|
||||||
|
<class 'float'>
|
||||||
|
>>> a
|
||||||
|
3.9555555555555557
|
||||||
|
```
|
||||||
|
### 4.4 Деление с округлением вниз (//).
|
||||||
|
```
|
||||||
|
>>> b=178//45
|
||||||
|
>>> c=-24.6//12.1
|
||||||
|
>>> b, c
|
||||||
|
(3, -3.0)
|
||||||
|
>>> bc = 115//34
|
||||||
|
>>> bc
|
||||||
|
3
|
||||||
|
```
|
||||||
|
### 4.5 Получение остатка от деления (%).
|
||||||
|
```
|
||||||
|
>>> 148%33
|
||||||
|
16
|
||||||
|
>>> 12.6%3.8
|
||||||
|
1.2000000000000002
|
||||||
|
```
|
||||||
|
### 4.6 Возведение в степень (**).
|
||||||
|
```
|
||||||
|
>>> 14**3
|
||||||
|
2744
|
||||||
|
>>> e = 2.7**3.6
|
||||||
|
>>> e
|
||||||
|
35.719843790663525
|
||||||
|
>>> compl = complex(3, 6)
|
||||||
|
>>> compl
|
||||||
|
(3+6j)
|
||||||
|
>>> compl**2
|
||||||
|
(-27+36j)
|
||||||
|
>>> compl%33
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
|
||||||
|
>>> compl//3
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
|
||||||
|
>>> compl/3
|
||||||
|
(1+2j)
|
||||||
|
>>> compl+13
|
||||||
|
(16+6j)
|
||||||
|
>>> compl+11.4
|
||||||
|
(14.4+6j)
|
||||||
|
```
|
||||||
|
## Задание 5 Операции с двоичными представлениями целых чисел
|
||||||
|
### 5.1 Двоичная инверсия (~).
|
||||||
|
```
|
||||||
|
>>> dv1 = 9
|
||||||
|
>>> dv2 = ~dv1
|
||||||
|
>>> dv2
|
||||||
|
-10
|
||||||
|
```
|
||||||
|
~1001
|
||||||
|
0110
|
||||||
|
|
||||||
|
1111 = 2^4
|
||||||
|
-1001
|
||||||
|
0110 = ~1001
|
||||||
|
|
||||||
|
~x = (2^N - 1 - x) = -(x+1)
|
||||||
|
Т.к. двоичная инверсия преобразует число по формуле -(x+1), где x - заданное число, то при задании числа 9 двоичная инверсия преобразует его в -10
|
||||||
|
### 5.2 Двоичное «И» (&)
|
||||||
|
```
|
||||||
|
>>> 7&9
|
||||||
|
1
|
||||||
|
>>> 7&8
|
||||||
|
0
|
||||||
|
```
|
||||||
|
### 5.3 Двоичное «ИЛИ» (|)
|
||||||
|
```
|
||||||
|
>>> 7|9
|
||||||
|
15
|
||||||
|
>>> 7|8
|
||||||
|
15
|
||||||
|
>>> 14|5
|
||||||
|
15
|
||||||
|
```
|
||||||
|
### 5.4 5.4. Двоичное «исключающее ИЛИ»(^)
|
||||||
|
```
|
||||||
|
>> 14^5
|
||||||
|
11
|
||||||
|
```
|
||||||
|
### 5.5 Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с допол-нением нулями, соответственно справа или слева.
|
||||||
|
```
|
||||||
|
>>> h=14
|
||||||
|
>>> g = h<<2
|
||||||
|
>>> g
|
||||||
|
56
|
||||||
|
>>> bin(g)
|
||||||
|
'0b111000'
|
||||||
|
>>> g1=h>>1
|
||||||
|
>>> g1
|
||||||
|
7
|
||||||
|
>>> g2=h>>2
|
||||||
|
>>> g2
|
||||||
|
3
|
||||||
|
```
|
||||||
|
## Задание 6. Операции при работе с последовательностями (строками, списками, кортежами).
|
||||||
|
### 6.1 Объединение последовательностей (конкатенация)(+)
|
||||||
|
```
|
||||||
|
>>> 'Система ' +'регулирования'
|
||||||
|
'Система регулирования'
|
||||||
|
>>> ['abc','de','fg']+['hi','jkl']
|
||||||
|
['abc', 'de', 'fg', 'hi', 'jkl']
|
||||||
|
>>> ('abc','de','fg')+('hi','jkl')
|
||||||
|
('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
```
|
||||||
|
### 6.2 Повторение (*)
|
||||||
|
```
|
||||||
|
>>> 'ля-'*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 Проверка наличия заданного элемента в последовательности (in)
|
||||||
|
```
|
||||||
|
>>> stroka='Система автоматического управления'
|
||||||
|
>>> 'автомат' in stroka
|
||||||
|
True
|
||||||
|
>>> 'ку' in ['ку','-']*3
|
||||||
|
True
|
||||||
|
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl')
|
||||||
|
False
|
||||||
|
```
|
||||||
|
### 6.4 Подстановка значений в строку с помощью оператора «%»
|
||||||
|
#### Пример 1
|
||||||
|
```
|
||||||
|
>>> stroka='Температура = %g %s %g'
|
||||||
|
>>> stroka
|
||||||
|
'Температура = %g %s %g'
|
||||||
|
>>> stroka % (16,' меньше ',25)
|
||||||
|
'Температура = 16 меньше 25'
|
||||||
|
```
|
||||||
|
#### Пример 2
|
||||||
|
```
|
||||||
|
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
|
||||||
|
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
|
||||||
|
'Температура = 16 меньше 25'
|
||||||
|
```
|
||||||
|
## Задание 7 Оператор присваивания
|
||||||
|
### 7.1 Обычное присваивание значения переменной (=)
|
||||||
|
```
|
||||||
|
>>> zz = -12
|
||||||
|
>>> zz
|
||||||
|
-12
|
||||||
|
```
|
||||||
|
### 7.2 Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)
|
||||||
|
```
|
||||||
|
>>> zz+=5
|
||||||
|
>>> zz
|
||||||
|
-7
|
||||||
|
>>> zz-=3
|
||||||
|
>>> zz
|
||||||
|
-10
|
||||||
|
>>> stroka='Система'
|
||||||
|
>>> stroka+=' регулирования'
|
||||||
|
>>> stroka
|
||||||
|
'Система регулирования'
|
||||||
|
```
|
||||||
|
### 7.3 Умножение текущего значения переменной на заданную величину (*=) или деление (/=)
|
||||||
|
```
|
||||||
|
>>> zz/=2
|
||||||
|
>>> zz
|
||||||
|
-5.0
|
||||||
|
>>> zz*=5
|
||||||
|
>>> zz
|
||||||
|
-25.0
|
||||||
|
```
|
||||||
|
### 7.4 Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведе-ния в степень(**=)
|
||||||
|
```
|
||||||
|
>>> zz//=5
|
||||||
|
>>> zz
|
||||||
|
-5.0
|
||||||
|
>>> zz%=2
|
||||||
|
>>> zz
|
||||||
|
1.0
|
||||||
|
>>> zz+=1
|
||||||
|
>>> zz**=3
|
||||||
|
>>> zz
|
||||||
|
8.0
|
||||||
|
```
|
||||||
|
### 7.5 Множественное присваивание
|
||||||
|
```
|
||||||
|
>>> w=v=10
|
||||||
|
>>> w,v
|
||||||
|
(10, 10)
|
||||||
|
>>> n1,n2,n3=(11,-3,'all')
|
||||||
|
>>> n1,n2,n3
|
||||||
|
(11, -3, 'all')
|
||||||
|
>>> w=v=[1,2,3]
|
||||||
|
>>> w,v
|
||||||
|
([1, 2, 3], [1, 2, 3])
|
||||||
|
>>> w=v="str"
|
||||||
|
>>> w,v
|
||||||
|
('str', 'str')
|
||||||
|
>>> w=v={1:3, 2:8}
|
||||||
|
>>> w,v
|
||||||
|
({1: 3, 2: 8}, {1: 3, 2: 8})
|
||||||
|
>>> w=v={1,2,3}
|
||||||
|
>>> w,v
|
||||||
|
({1, 2, 3}, {1, 2, 3})
|
||||||
|
```
|
||||||
|
## Задание 8 8. Логические операции – при создании логических выражений, дающих в результате вычисле-ния значения True или False.
|
||||||
|
|
||||||
|
### 8.1 Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) – придумаем примеры этих операций. Сравним ранее созданные переменные w и v.
|
||||||
|
```
|
||||||
|
>>> 1==1
|
||||||
|
True
|
||||||
|
>>> 1!=1
|
||||||
|
False
|
||||||
|
>>> 1<1
|
||||||
|
False
|
||||||
|
>>> 1>1
|
||||||
|
False
|
||||||
|
>>> 1<=1
|
||||||
|
True
|
||||||
|
>>> 1>=1
|
||||||
|
True
|
||||||
|
>>> w==v
|
||||||
|
True
|
||||||
|
```
|
||||||
|
### 8.2 Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in).
|
||||||
|
```
|
||||||
|
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
|
||||||
|
>>> 'book' in mnoz1
|
||||||
|
True
|
||||||
|
>>> 'cap' in mnoz1
|
||||||
|
False
|
||||||
|
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
|
||||||
|
>>> 'Vologda' in dic1
|
||||||
|
True
|
||||||
|
>>> 'Pskov' in dic1
|
||||||
|
False
|
||||||
|
>>> 56 in dic1.values()
|
||||||
|
True
|
||||||
|
>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
|
||||||
|
>>> 'UII' in dct1['Depart']
|
||||||
|
True
|
||||||
|
>>> dct1['Depart'][1] == 'MM'
|
||||||
|
False
|
||||||
|
```
|
||||||
|
### 8.3 Создание больших логических выражений с использованием соединительных слов: логиче-ское «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).
|
||||||
|
```
|
||||||
|
>>> a=17
|
||||||
|
>>> b=-6
|
||||||
|
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
|
||||||
|
True
|
||||||
|
>>> (a<b) or (a>=b) and (a==b)
|
||||||
|
```
|
||||||
|
### 8.4 Проверка ссылок переменных на один и тот же объект (is).
|
||||||
|
```
|
||||||
|
>>> w=v=10
|
||||||
|
>>> w is v
|
||||||
|
True
|
||||||
|
>>> w1 = ["A", "B"]
|
||||||
|
>>> v1 = ["A", "B"]
|
||||||
|
>>> w1 is v1
|
||||||
|
False
|
||||||
|
```
|
||||||
|
w1 и v1 не являются одним и тем же объектом в памяти, поэтому is выдал ответ False
|
||||||
|
## Задание 9 Операции с объектами, выполняемые с помощью методов.
|
||||||
|
```
|
||||||
|
>>> stroka='Микропроцессорная система управления'
|
||||||
|
>>> dir(stroka)
|
||||||
|
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
|
||||||
|
```
|
||||||
|
### 9.1 Методы для работы со строками.
|
||||||
|
```
|
||||||
|
>>> stroka.find('пр')
|
||||||
|
5
|
||||||
|
>>> stroka.count("с")
|
||||||
|
4
|
||||||
|
>>> stroka.replace(' у',' автоматического у')
|
||||||
|
'Микропроцессорная система автоматического управления'
|
||||||
|
>>> spis22=stroka.split(' ')
|
||||||
|
>>> stroka.upper()
|
||||||
|
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
|
||||||
|
>>> stroka3=" ".join(spis22)
|
||||||
|
>>> stroka3.partition("с")
|
||||||
|
('Микропроце', 'с', 'сорная система управления')
|
||||||
|
>>> stroka3.rpartition("с")
|
||||||
|
('Микропроцессорная си', 'с', 'тема управления')
|
||||||
|
>>> strk1='Момент времени {}, значение = {}'
|
||||||
|
>>> strk1.format(1,89.7)
|
||||||
|
'Момент времени 1, значение = 89.7'
|
||||||
|
>>> strk2='Момент времени {1}, значение = {0}:{2}'
|
||||||
|
>>> 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 Методы для работы со списками.
|
||||||
|
```
|
||||||
|
>>> spsk = [23,56,"str", 10, True]
|
||||||
|
>>> dir(spsk)
|
||||||
|
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
|
||||||
|
>>> spsk.append('c')
|
||||||
|
>>> spsk.insert(2,'a')
|
||||||
|
>>> spsk.count('a')
|
||||||
|
1
|
||||||
|
>>> spsk
|
||||||
|
[23, 56, 'a', 10, True, 'c']
|
||||||
|
```
|
||||||
|
### 9.3 Самостоятельно создадим кортеж и изучим применение его методов.
|
||||||
|
```
|
||||||
|
>>> my_cort = (1, "hi", 13, 5,86)
|
||||||
|
>>> dir(my_cort)
|
||||||
|
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
|
||||||
|
>>> my_cort.count(13)
|
||||||
|
1
|
||||||
|
>>> my_cort.index("hi")
|
||||||
|
1
|
||||||
|
```
|
||||||
|
### 9.4 Также самостоятельно изучим методы словарей и множеств
|
||||||
|
```
|
||||||
|
>>> my_dict = {"math":13, "physics": 11, "history": 15}
|
||||||
|
>>> dir(my_dict)
|
||||||
|
['__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__ior__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__ror__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
|
||||||
|
>>> my_set = {31, 12, "set", 1,45}
|
||||||
|
>>> dir(my_set)
|
||||||
|
['__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']
|
||||||
|
```
|
||||||
55
TEMA3/task.md
Обычный файл
@@ -0,0 +1,55 @@
|
|||||||
|
# Общее контрольное задание по теме 3
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Реализовать, записать в текстовый файл и проанализировать результаты последовательности ин-струкций, выполняющих следующие действия:
|
||||||
|
• Преобразовать восьмеричное значение 45 в целое число.
|
||||||
|
• Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?
|
||||||
|
• Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.
|
||||||
|
• Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.
|
||||||
|
• Создать список с 4 одинаковыми элементами 'колебат' и написать оператор проверки наличия комбинации символов 'аткол' в результате конкатенации второго и третьего элементов этого списка.
|
||||||
|
• Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.
|
||||||
|
• Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> int("45", 8)
|
||||||
|
37
|
||||||
|
>>> D = {"усиление":23, "запаздывание":12, "постоянная времени":78}
|
||||||
|
>>> D
|
||||||
|
{'усиление': 23, 'запаздывание': 12, 'постоянная времени': 78}
|
||||||
|
>>> keys_d = list(D.keys())
|
||||||
|
>>> values_d = list(D.values())
|
||||||
|
>>> keys_d, values_d
|
||||||
|
(['усиление', 'запаздывание', 'постоянная времени'], [23, 12, 78])
|
||||||
|
>>> tuple_d = tuple(keys_d + values_d)
|
||||||
|
>>> tuple_d
|
||||||
|
('усиление', 'запаздывание', 'постоянная времени', 23, 12, 78)
|
||||||
|
```
|
||||||
|
Кортежи являются неизменяемыми, в то время как списки можно изменить.
|
||||||
|
```
|
||||||
|
>>> ((1768//24.8)%3)**2.4
|
||||||
|
5.278031643091577
|
||||||
|
>>> ((~(13 & 27)) ^ 14) << 2
|
||||||
|
-32
|
||||||
|
>>> kolebat = ["колебат"]*4
|
||||||
|
>>> kolebat
|
||||||
|
['колебат', 'колебат', 'колебат', 'колебат']
|
||||||
|
>>> 'колебат' in (kolebat[1]+kolebat[2])
|
||||||
|
True
|
||||||
|
>>> D.keys()
|
||||||
|
dict_keys(['усиление', 'запаздывание', 'постоянная времени'])
|
||||||
|
>>> D.values()
|
||||||
|
dict_values([23, 12, 78])
|
||||||
|
>>> str_d = "Создать объект - символьную строку с текстом данного предложения."
|
||||||
|
>>> str_list = str_d.split()
|
||||||
|
>>> str_list
|
||||||
|
>>> str_list[str_list.index("-")] = ","
|
||||||
|
>>> str_list.remove("данного")
|
||||||
|
>>> str_list
|
||||||
|
['Создать', 'объект', ',', 'символьную', 'строку', 'с', 'текстом', 'предложения.']
|
||||||
|
```
|
||||||
55
TEMA3/test.md
Обычный файл
@@ -0,0 +1,55 @@
|
|||||||
|
# Тест по модулю 1
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
M1_10
|
||||||
|
1) Какова роль компилятора в среде Python? Чем отличаются файлы с расширением .pyc от файлов с расширением .py?
|
||||||
|
|
||||||
|
2) Напишите инструкцию, создающую список со словами из данного предложения. Подсчитайте и отобразите на экране число слов.
|
||||||
|
|
||||||
|
3) Создайте кортеж с именами 10 любых студентов вашей группы. Напишите инструкцию, доказывающую, что создан объект именно требуемого типа. Напишите инструкцию отображения списка атрибутов созданного объекта.
|
||||||
|
|
||||||
|
4) Превратите кортеж во множество. Подсчитайте число элементов множества и отобразите на экране с помощью формата по шаблону: "Во множестве ХХ студентов".
|
||||||
|
|
||||||
|
5) Напишите инструкцию, создающую строку из элементов списка из п.2. Отобразите строку на экране.
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
1) Компилятор в Питоне преобразует исходный код в байт-код, который может быть выполнен компьютером и помогает повысить скорость и производительность. Файл .pyc отличается от файла .py тем, что в последнем содержится читаемый человеком код, и служит для разработки, в то время как .pyc содержит в себе байт-код и служит для ускорения запуска программы.
|
||||||
|
|
||||||
|
2)
|
||||||
|
```
|
||||||
|
>>> sttr = "Напишите инструкцию, создающую список со словами из данного предложения."
|
||||||
|
>>> list_sttr = list(sttr.split())
|
||||||
|
>>> list_sttr
|
||||||
|
['Напишите', 'инструкцию,', 'создающую', 'список', 'со', 'словами', 'из', 'данного', 'предложения.']
|
||||||
|
>>> len(list_sttr)
|
||||||
|
9
|
||||||
|
```
|
||||||
|
3)
|
||||||
|
```
|
||||||
|
>>> fio_tuple = ('Дима', 'Данил','Паша','Лиза','Георгий','Катя','Максим','Вадим','Артем','Никита')
|
||||||
|
>>> fio_tuple
|
||||||
|
('Дима', 'Данил', 'Паша', 'Лиза', 'Георгий', 'Катя', 'Максим', 'Вадим', 'Артем', 'Никита')
|
||||||
|
>>> type(fio_tuple)
|
||||||
|
<class 'tuple'>
|
||||||
|
>>> dir(fio_tuple)
|
||||||
|
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
|
||||||
|
```
|
||||||
|
4)
|
||||||
|
```
|
||||||
|
>>> list_tuple = set(fio_tuple)
|
||||||
|
>>> list_tuple
|
||||||
|
{'Паша', 'Максим', 'Артем', 'Данил', 'Никита', 'Лиза', 'Дима', 'Вадим', 'Катя', 'Георгий'}
|
||||||
|
>>> print("Во множестве ", len(list_tuple), " студентов")
|
||||||
|
Во множестве 10 студентов
|
||||||
|
```
|
||||||
|
|
||||||
|
5)
|
||||||
|
```
|
||||||
|
>>> print(" ".join(list_sttr))
|
||||||
|
Напишите инструкцию, создающую список со словами из данного предложения.
|
||||||
|
```
|
||||||
Двоичные данные
TEMA4/Ris1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 37 KiB |
Двоичные данные
TEMA4/Ris2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 20 KiB |
Двоичные данные
TEMA4/image-1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 13 KiB |
Двоичные данные
TEMA4/image-2.png
Обычный файл
|
После Ширина: | Высота: | Размер: 11 KiB |
Двоичные данные
TEMA4/image.png
Обычный файл
|
После Ширина: | Высота: | Размер: 26 KiB |
293
TEMA4/report.md
Обычный файл
@@ -0,0 +1,293 @@
|
|||||||
|
# Отчет по теме 4
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 4. Встроенные функции
|
||||||
|
|
||||||
|
### 2.1. Функция round – округление числа с заданной точностью.
|
||||||
|
```
|
||||||
|
>>> help(round)
|
||||||
|
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
|
||||||
|
>>> type(round(123.456,0))
|
||||||
|
<class 'float'>
|
||||||
|
```
|
||||||
|
Ответы различаются тем, что в первом вызове мы округляем до 1 знака после запятой, во втором вызове мы округляем до 0 знака после запятой (т.е. до целого числа)
|
||||||
|
```
|
||||||
|
>>> round(123.456)
|
||||||
|
123
|
||||||
|
>>> type(round(123.456))
|
||||||
|
<class 'int'>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1.
|
||||||
|
```
|
||||||
|
>>> gg=range(76,123,9)
|
||||||
|
>>> gg
|
||||||
|
range(76, 123, 9)
|
||||||
|
>>> list(gg)
|
||||||
|
[76, 85, 94, 103, 112, 121]
|
||||||
|
>>> list(range(23))
|
||||||
|
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
|
||||||
|
```
|
||||||
|
Получается объект с целыми числами с шагом 1 от 0 до 22.
|
||||||
|
|
||||||
|
### 2.3. Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей (zip – застежка-«молния»)
|
||||||
|
```
|
||||||
|
>>> qq = ['Махнов','Лазарев','Коваленко','Иванов']
|
||||||
|
>>> ff=zip(gg,qq)
|
||||||
|
>>> ff
|
||||||
|
<zip object at 0x0000018777428980>
|
||||||
|
>>> tuple(ff)
|
||||||
|
((76, 'Махнов'), (85, 'Лазарев'), (94, 'Коваленко'), (103, 'Иванов'))
|
||||||
|
>>> ff[0]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: 'zip' object is not subscriptable
|
||||||
|
```
|
||||||
|
В кортеже содержится 4 элемента, так как zip() объединяет 2 объекта по длине меньшего из них (в нашем случае qq, 4 объекта).
|
||||||
|
|
||||||
|
### 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки.
|
||||||
|
```
|
||||||
|
>>> fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156')
|
||||||
|
коэффициент усиления=13.48
|
||||||
|
>>> dan
|
||||||
|
-88.6
|
||||||
|
```
|
||||||
|
### 2.5. Функция exec – чтение и выполнение объекта-аргумента функции.
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> exec(input('введите инструкции:'))
|
||||||
|
введите инструкции:perem=-123.456;gg=round(abs(perem)+98,3)
|
||||||
|
>>> gg
|
||||||
|
221.456
|
||||||
|
```
|
||||||
|
exec() отличается от eval() тем, что eval() выполняет выражения (5*fff-156, 12+fff и т.д.), а exec() выполняет инструкции (к примеру input())
|
||||||
|
|
||||||
|
### 2.6. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len, map.
|
||||||
|
```
|
||||||
|
>>> abs(-13)
|
||||||
|
13
|
||||||
|
>>> pow(-13, 2)
|
||||||
|
169
|
||||||
|
>>> max(-13, 12)
|
||||||
|
12
|
||||||
|
>>> min(-13, 12)
|
||||||
|
-13
|
||||||
|
>>> sum([-13, 12])
|
||||||
|
-1
|
||||||
|
>>> divmod(13, 3)
|
||||||
|
(4, 1)
|
||||||
|
>>> list(map(int, [14.3, 15.6]))
|
||||||
|
[14, 15]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Функции из стандартного модуля math – совокупность разнообразных математических функций.
|
||||||
|
```
|
||||||
|
>>> import math
|
||||||
|
>>> dir(math)
|
||||||
|
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign',
|
||||||
|
'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
|
||||||
|
>>> help(math.factorial)
|
||||||
|
Help on built-in function factorial in module math:
|
||||||
|
|
||||||
|
factorial(n, /)
|
||||||
|
Find n!.
|
||||||
|
|
||||||
|
Raise a ValueError if x is negative or non-integral.
|
||||||
|
|
||||||
|
>>> math.factorial(5)
|
||||||
|
120
|
||||||
|
>>> from math import *
|
||||||
|
>>> sin(pi/2)
|
||||||
|
1.0
|
||||||
|
>>> acos(0.5)
|
||||||
|
1.0471975511965979
|
||||||
|
>>> degrees(13)
|
||||||
|
744.8451336700703
|
||||||
|
>>> radians(pi/2)
|
||||||
|
0.027415567780803774
|
||||||
|
>>> exp(3)
|
||||||
|
20.085536923187668
|
||||||
|
>>> log(4)
|
||||||
|
1.3862943611198906
|
||||||
|
>>> log(4,2)
|
||||||
|
2.0
|
||||||
|
>>> log10(4)
|
||||||
|
0.6020599913279624
|
||||||
|
>>> ceil(3.1)
|
||||||
|
4
|
||||||
|
>>> ceil(-13.3)
|
||||||
|
-13
|
||||||
|
>>> floor(-13.3)
|
||||||
|
-14
|
||||||
|
>>> pi
|
||||||
|
3.141592653589793
|
||||||
|
>>> sin(2*pi/(7+exp(0.23)))
|
||||||
|
0.6895048136223223
|
||||||
|
```
|
||||||
|
### 4. Функции из модуля cmath – совокупность функций для работы с комплексными числами.
|
||||||
|
```
|
||||||
|
>>> import cmath
|
||||||
|
>>> from cmath import *
|
||||||
|
>>> 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']
|
||||||
|
>>> sqrt(1.2-0.5j)
|
||||||
|
(1.118033988749895-0.22360679774997896j)
|
||||||
|
>>> cmath.phase(1-0.5j)
|
||||||
|
-0.4636476090008061
|
||||||
|
```
|
||||||
|
### 5. Стандартный модуль random – совокупность функций для выполнения операций с псевдослу-чайными числами и выборками.
|
||||||
|
```
|
||||||
|
>>> from random import *
|
||||||
|
>>> dir(random)
|
||||||
|
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
|
||||||
|
>>> help(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.
|
||||||
|
>>> seed()
|
||||||
|
```
|
||||||
|
seed() инициализирует начальное состояние генератора псевдослучайных чисел, для воспроизводимости результатов и представления случайных параметров. Без заадния seed() начальное состояние будет зависить от времени запуска программы или же текущего времени
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> random()
|
||||||
|
0.9886498397075144
|
||||||
|
>>> uniform(1, 4)
|
||||||
|
2.780130303169699
|
||||||
|
>>> randint(1, 5)
|
||||||
|
5
|
||||||
|
>>> gauss(1, 4)
|
||||||
|
-1.8813369397077917
|
||||||
|
>>> lst = [1,4,3,5,6]
|
||||||
|
>>> shuffle(lst)
|
||||||
|
>>> print(lst)
|
||||||
|
[4, 6, 3, 1, 5]
|
||||||
|
>>> sample(lst, 3)
|
||||||
|
[3, 1, 5]
|
||||||
|
>>> betavariate(1, 3)
|
||||||
|
0.13265164490875223
|
||||||
|
>>> gammavariate(1,3)
|
||||||
|
6.693731601234578
|
||||||
|
>>> [uniform(1,3), gauss(1,3), betavariate(1,3), gammavariate(1,3)]
|
||||||
|
[2.727738971034954, 0.6065095462022692, 0.454597873888903, 1.6408773406150745]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Функции из модуля time – работа с календарем и со временем.
|
||||||
|
```
|
||||||
|
>>> from time import *
|
||||||
|
>>> dir(time)
|
||||||
|
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
|
||||||
|
>>> c1 = time()
|
||||||
|
>>> c1
|
||||||
|
1760084354.1531947
|
||||||
|
>>> c2=time()-c1
|
||||||
|
>>> c2
|
||||||
|
7.051163673400879
|
||||||
|
>>> gmtime()
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=8, tm_min=19, tm_sec=40, tm_wday=4, tm_yday=283, tm_isdst=0)
|
||||||
|
>>> dat = gmtime()
|
||||||
|
>>> dat.tm_mon
|
||||||
|
10
|
||||||
|
>>> dat.tm_hour, dat.tm_min
|
||||||
|
(8, 20)
|
||||||
|
>>> localtime()
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=10, tm_hour=11, tm_min=21, tm_sec=3, tm_wday=4, tm_yday=283, tm_isdst=0)
|
||||||
|
>>> asctime(localtime())
|
||||||
|
'Fri Oct 10 11:21:55 2025'
|
||||||
|
>>> ctime(c1)
|
||||||
|
'Fri Oct 10 11:19:14 2025'
|
||||||
|
>>> sleep(3)
|
||||||
|
>>> mktime(localtime())
|
||||||
|
1760084701.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Графические функции.
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> import pylab
|
||||||
|
>>> x=list(range(-3,55,4))
|
||||||
|
>>> t=list(range(15))
|
||||||
|
>>> pylab.plot(t,x)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x000001E04A97D948>]
|
||||||
|
>>> pylab.title('Первый график')
|
||||||
|
Text(0.5, 1.0, 'Первый график')
|
||||||
|
>>> pylab.xlabel('время')
|
||||||
|
Text(0.5, 0, 'время')
|
||||||
|
>>> pylab.ylabel('сигнал')
|
||||||
|
Text(0, 0.5, 'сигнал')
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|

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

|
||||||
|
```
|
||||||
|
>>> region=['Центр','Урал','Сибирь','Юг']
|
||||||
|
>>> naselen=[65,12,23,17]
|
||||||
|
>>> pylab.pie(naselen,labels=region)
|
||||||
|
([<matplotlib.patches.Wedge object at 0x000001E04C00AA48>, <matplotlib.patches.Wedge object at 0x000001E04C0021C8>, <matplotlib.patches.Wedge object at 0x000001E04A6BCCC8>, <matplotlib.patches.Wedge object at 0x000001E04C139A08>], [Text(-0.1910130855889933, 1.083288512416601, 'Центр'), Text(-0.8613283319035216, -0.6841882085072037, 'Урал'), Text(0.04429273729355889, -1.0991078898011077, 'Сибирь'), Text(0.9873752043868569, -0.4848610169543564, 'Юг')])
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|

|
||||||
|
```
|
||||||
|
>>> pylab.hist(X1, bins = 5)
|
||||||
|
(array([2., 1., 0., 1., 1.]), array([ 6. , 7.2, 8.4, 9.6, 10.8, 12. ]), <BarContainer object of 5 artists>)
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|

|
||||||
|
```
|
||||||
|
>>> values = [13,14,10,18]
|
||||||
|
>>> categories = ['A', 'B', 'C', 'D']
|
||||||
|
>>> pylab.bar(categories, values)
|
||||||
|
<BarContainer object of 4 artists>
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
### 8. Самостоятельно изучите состав статистического модуля statistics. Попробуйте применить не менее 3-х функций из этого модуля.
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> import statistics
|
||||||
|
>>> statistics
|
||||||
|
<module 'statistics' from 'C:\\Users\\gmack\\AppData\\Local\\Programs\\Python\\Python37\\lib\\statistics.py'>
|
||||||
|
>>> dir(statistics)
|
||||||
|
['Decimal', 'Fraction', 'StatisticsError', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_coerce', '_convert', '_counts', '_exact_ratio', '_fail_neg', '_find_lteq', '_find_rteq', '_isfinite', '_ss', '_sum', 'bisect_left', 'bisect_right', 'collections', 'groupby', 'harmonic_mean', 'math', 'mean', 'median', 'median_grouped', 'median_high', 'median_low', 'mode', 'numbers', 'pstdev', 'pvariance', 'stdev', 'variance']
|
||||||
|
>>> lst = [1,4,3,5,6,7,83,5,63,5,78,12,5,7,1,4,19]
|
||||||
|
>>> mean(lst)
|
||||||
|
18.11764705882353
|
||||||
|
>>> median(lst)
|
||||||
|
5
|
||||||
|
>>> mode(lst)
|
||||||
|
5
|
||||||
|
```
|
||||||
49
TEMA4/task.md
Обычный файл
@@ -0,0 +1,49 @@
|
|||||||
|
# Общее контрольное задание по теме 4
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
• Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления.
|
||||||
|
• Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами.
|
||||||
|
• Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели.
|
||||||
|
• Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 32 с шагом 3.
|
||||||
|
• Сгенерируйте нормально распределенное число N с математическим ожиданием 15 и стан-дартным отклонением 4 и округлите его до целого значения. Создайте список с N элементами – случайно выбранными буквами латинского алфавита.
|
||||||
|
• Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего (из п.2) определения временных параметров.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> from math import *
|
||||||
|
>>> from cmath import *
|
||||||
|
>>> from time import *
|
||||||
|
>>> from random import *
|
||||||
|
>>> import string
|
||||||
|
>>> divmod(round(phase(0.2+0.8j), 2)*20, 3)
|
||||||
|
(8.0, 2.6000000000000014)
|
||||||
|
>>> struct_time = localtime()
|
||||||
|
>>> struct_time
|
||||||
|
time.struct_time(tm_year=2025, tm_mon=10, tm_mday=24, tm_hour=10, tm_min=10, tm_sec=18, tm_wday=4, tm_yday=297, tm_isdst=0)
|
||||||
|
>>> struct_time = localtime()
|
||||||
|
>>> print(f"Текущее время: {struct_time.tm_hour}:{struct_time.tm_min}")
|
||||||
|
Текущее время: 10:10
|
||||||
|
>>> lst = ["понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"]
|
||||||
|
>>> sample(lst)
|
||||||
|
>>> sample(lst, 3)
|
||||||
|
['вторник', 'четверг', 'понедельник']
|
||||||
|
>>> lst = list(range(14,32,3))
|
||||||
|
>>> choice(lst)
|
||||||
|
14
|
||||||
|
>>> choice(lst)
|
||||||
|
20
|
||||||
|
>>> N = round(gauss(15, 4))
|
||||||
|
>>> N
|
||||||
|
13
|
||||||
|
>>> abc_list = sample(list(string.ascii_letters), N)
|
||||||
|
>>> abc_list
|
||||||
|
['b', 'y', 's', 'a', 'm', 'U', 'A', 'u', 'X', 'o', 'k', 'Q', 't']
|
||||||
|
>>> (time() - mktime(struct_time))//60
|
||||||
|
3.0
|
||||||
|
```
|
||||||
24
TEMA4/test.md
Обычный файл
@@ -0,0 +1,24 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 4
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание 9
|
||||||
|
|
||||||
|
9. Напишите инструкцию, позволяющую определить и записать в переменную календарные характеристики (год, месяц, день) момента, отстоящего на 7000000 сек. вперед от текущего времени. Выведите эти сведения в виде строки вида: «Это будет ХХ-ХХ-ХХХХ». Создайте множество с 5 случайными целыми элементами, значения которых находятся в диапазоне значений от 1 до 12.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```
|
||||||
|
>>> from time import *
|
||||||
|
>>> future_date = [localtime(time()+7000000).tm_year, localtime(time()+7000000).tm_mon, localtime(time()+7000000).tm_mday]
|
||||||
|
>>> future_date
|
||||||
|
[2026, 1, 13]
|
||||||
|
>>> print(f"Это будет {future_date[2]}-{future_date[1]}-{future_date[0]}")
|
||||||
|
Это будет 13-1-2026
|
||||||
|
>>> rand_set = set()
|
||||||
|
>>> while len(rand_set) != 5:
|
||||||
|
... rand_set.add(randint(1,12))
|
||||||
|
...
|
||||||
|
>>> rand_set
|
||||||
|
{1, 3, 4, 11, 12}
|
||||||
|
```
|
||||||
Двоичные данные
TEMA5/image-1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 22 KiB |
Двоичные данные
TEMA5/image.png
Обычный файл
|
После Ширина: | Высота: | Размер: 59 KiB |
213
TEMA5/report.md
Обычный файл
@@ -0,0 +1,213 @@
|
|||||||
|
# Отчет по теме 5
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 5. Блоки инструкций, управляющие инструкции
|
||||||
|
|
||||||
|
## 5 Блоки инструкций, управляющие инструкции
|
||||||
|
|
||||||
|
### 2 Изучим ветвление по условию – управляющую инструкцию if
|
||||||
|
```py
|
||||||
|
>>> porog = 13
|
||||||
|
>>> rashod1 = 8
|
||||||
|
>>> rashod2 = 9
|
||||||
|
>>> dohod = 5
|
||||||
|
>>> if rashod1 >= porog:
|
||||||
|
... dohod = 12
|
||||||
|
... elif rashod2 == porog:
|
||||||
|
... dohod = 0
|
||||||
|
... else:
|
||||||
|
... dohod =- 8
|
||||||
|
...
|
||||||
|
>>> dohod
|
||||||
|
-8
|
||||||
|
|
||||||
|
>>> if rashod1 >= porog:
|
||||||
|
... dohod = 12
|
||||||
|
... elif rashod2 == porog:
|
||||||
|
... dohod = 0
|
||||||
|
... else:
|
||||||
|
... dohod =- 8
|
||||||
|
...
|
||||||
|
>>> dohod
|
||||||
|
-8
|
||||||
|
|
||||||
|
>>> if porog == 3:
|
||||||
|
... dohod = 1
|
||||||
|
... elif porog == 4:
|
||||||
|
... dohod = 2
|
||||||
|
... elif porog == 5:
|
||||||
|
... dohod = 3
|
||||||
|
... else:
|
||||||
|
... dohod = 0
|
||||||
|
...
|
||||||
|
>>> dohod
|
||||||
|
0
|
||||||
|
|
||||||
|
>>> dohod=2 if porog>=4 else 0
|
||||||
|
>>> dohod
|
||||||
|
2
|
||||||
|
>>> if porog>=5 : rashod1=6; rashod2=0
|
||||||
|
...
|
||||||
|
>>> rashod1, rashod2
|
||||||
|
(6, 0)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3 Изучим цикл по перечислению – управляющую инструкцию for
|
||||||
|
|
||||||
|
#### 3.1 Простой цикл.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> temperatura = 5
|
||||||
|
>>> for i in range(3, 18, 3):
|
||||||
|
... temperatura += i
|
||||||
|
...
|
||||||
|
>>> temperatura
|
||||||
|
50
|
||||||
|
```
|
||||||
|
#### 3.2 Более сложный цикл
|
||||||
|
```py
|
||||||
|
>>> sps = [2, 15, 14, 8]
|
||||||
|
>>> for k in sps:
|
||||||
|
... if len(sps) <= 10: sps.append(sps[0])
|
||||||
|
... else:
|
||||||
|
... break
|
||||||
|
...
|
||||||
|
>>> sps
|
||||||
|
[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]
|
||||||
|
|
||||||
|
>>> sps=[2,15,14,8]
|
||||||
|
>>> for k in sps[:]:
|
||||||
|
... if len(sps)<=10:sps.append(sps[0])
|
||||||
|
... else:break
|
||||||
|
...
|
||||||
|
>>> sps
|
||||||
|
[2, 15, 14, 8, 2, 2, 2, 2]
|
||||||
|
```
|
||||||
|
В первом случае мы идем по каждому элементу внутри списка sps. По условию, если длина списка не больше 10, то в него добавляется первый элемент списка - 2. Но так как мы все еще идем по элементам внутри списка, то по достижению последнего изначального элемента - 8, мы пойдем дальше по добавленным в список элементам (т.е по двойкам), пока не будет удовлетворено условие `if`, из-за чего длина этого списка равна 11.
|
||||||
|
Во втором случае при помощи среза [:] мы идем по первоначальным элементам списка, но не внутри самого списка, и при добавлении двоек в изначальный список цикл не будет продолжать работать после обработки последнего элемента первоначального списка, из-за чего длина списка равна 8.
|
||||||
|
|
||||||
|
#### 3.3 Создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сум-ма чисел не превышает 500, эта сумма должна быть отображена на экране
|
||||||
|
```py
|
||||||
|
>>> import random as rn
|
||||||
|
>>> sps5=[]
|
||||||
|
>>> for i in range(10):
|
||||||
|
... sps5.append(rn.randint(1,100))
|
||||||
|
... ss=sum(sps5)
|
||||||
|
... if ss>500: break
|
||||||
|
... else:
|
||||||
|
... print(ss)
|
||||||
|
...
|
||||||
|
>>> print(ss)
|
||||||
|
501
|
||||||
|
```
|
||||||
|
Программа не всегда выводит значения на экран. Это происходит из-за оператора `break`, который завершает цикл, если сумма ss первысила 500. В этом случае `else` не выполняется.
|
||||||
|
#### 3.4 Пример с символьной строкой
|
||||||
|
```py
|
||||||
|
>>> stroka='Это – автоматизированная система'
|
||||||
|
>>> stroka1=""
|
||||||
|
>>> for ss in stroka:
|
||||||
|
... stroka1+=" "+ss
|
||||||
|
...
|
||||||
|
>>> stroka
|
||||||
|
'Это – автоматизированная система'
|
||||||
|
>>> 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 0x000001D6AA8730C8>]
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|
Полученный график: 
|
||||||
|
|
||||||
|
### 4 Изучим цикл «пока истинно условие» – управляющую инструкцию while
|
||||||
|
|
||||||
|
#### 4.1 Цикл со счетчиком.
|
||||||
|
```py
|
||||||
|
>>> rashod = 300
|
||||||
|
>>> while rashod:
|
||||||
|
... print("Расход=",rashod)
|
||||||
|
... rashod-=50
|
||||||
|
...
|
||||||
|
Расход= 300
|
||||||
|
Расход= 250
|
||||||
|
Расход= 200
|
||||||
|
Расход= 150
|
||||||
|
Расход= 100
|
||||||
|
Расход= 50
|
||||||
|
```
|
||||||
|
Завершение цикла произошло в тот момент, когда переменная rashod стала равна нулю, завершив цикл, так как ноль как логическая переменная значит False.
|
||||||
|
#### 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
|
||||||
|
... else:
|
||||||
|
... pylab.plot(sps2)
|
||||||
|
... pylab.show()
|
||||||
|
...
|
||||||
|
Значение в момент 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
|
||||||
|
```
|
||||||
|
Полученный график: 
|
||||||
|
#### 4.3 Определение, является ли число простым (делится только на самого себя или 1).
|
||||||
|
```py
|
||||||
|
>>> chislo=267
|
||||||
|
>>> kandidat =chislo // 2
|
||||||
|
>>> while kandidat > 1:
|
||||||
|
... if chislo%kandidat == 0:
|
||||||
|
... print(chislo, ' имеет множитель ', kandidat)
|
||||||
|
... break
|
||||||
|
... kandidat -= 1
|
||||||
|
... else:
|
||||||
|
... print(chislo, ' является простым!')
|
||||||
|
...
|
||||||
|
267 имеет множитель 89
|
||||||
|
```
|
||||||
60
TEMA5/task.md
Обычный файл
@@ -0,0 +1,60 @@
|
|||||||
|
# Общее контрольное задание по теме 5
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
• Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.
|
||||||
|
• Создайте список со словами из задания данного пункта. Для этого списка определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).
|
||||||
|
• Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его сред-ние баллы по двум сессиям.
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
alphabet_list = ['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']
|
||||||
|
|
||||||
|
eng_str = "The quick, brown fox jumps over the lazy dog."
|
||||||
|
index_str = ""
|
||||||
|
for letter in eng_str:
|
||||||
|
try:
|
||||||
|
index_str = index_str + f"{letter} - {str(alphabet_list.index(letter.lower()) + 1)} "
|
||||||
|
except ValueError:
|
||||||
|
index_str = index_str + letter
|
||||||
|
print(index_str)
|
||||||
|
|
||||||
|
>>> T - 20 h - 8 e - 5 q - 17 u - 21 i - 9 c - 3 k - 11 , b - 2 r - 18 o - 15 w - 23 n - 14 f - 6 o - 15 x - 24 j - 10 u - 21 m - 13 p - 16 s - 19 o - 15 v - 22 e - 5 r - 18 t - 20 h - 8 e - 5 l - 12 a - 1 z - 26 y - 25 d - 4 o - 15 g - 7 .
|
||||||
|
|
||||||
|
sentence_str = "Создайте список со словами из задания данного пункта. Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом".split()
|
||||||
|
|
||||||
|
|
||||||
|
if input("Введите слово: ") in sentence_str:
|
||||||
|
print("Слово есть в предложении")
|
||||||
|
else:
|
||||||
|
print("Слова нет в предложении")
|
||||||
|
>>> Введите слово: либо
|
||||||
|
Слово есть в предложении
|
||||||
|
|
||||||
|
>>> Введите слово: лихо
|
||||||
|
Слова нет в предложении
|
||||||
|
|
||||||
|
surnames_summer = ['Коваленко', 'Лыкова', 'Лазарев']
|
||||||
|
marks_summer = [4.75, 3.75, 5.00]
|
||||||
|
surnames_winter = ['Лыкова', 'Коваленко', 'Лазарев']
|
||||||
|
marks_winter = [3.25, 4.5, 5.00]
|
||||||
|
|
||||||
|
surname = input("Введите фамилию студента: ")
|
||||||
|
if surname in surnames_summer:
|
||||||
|
print(f"Студент {surname}. Средний балл за летнюю сессию составляет {marks_summer[surnames_summer.index(surname)]},
|
||||||
|
за зимнюю сессию составляет {marks_winter[surnames_winter.index(surname)]}.") #перенос сделан для удобства проверки, в файле .py строка кода не переносится
|
||||||
|
else:
|
||||||
|
print(f"Студент {surname}. отсутствует в списке")
|
||||||
|
|
||||||
|
>>>Введите фамилию студента: Лазарев
|
||||||
|
Студент Лазарев. Средний балл за летнюю сессию составляет 5.0, за зимнюю сессию составляет 5.0.
|
||||||
|
|
||||||
|
>>>Введите фамилию студента: Махнов
|
||||||
|
Студент Махнов. отсутствует в списке
|
||||||
|
|
||||||
|
```
|
||||||
29
TEMA5/task.py
Обычный файл
@@ -0,0 +1,29 @@
|
|||||||
|
alphabet_list = ['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']
|
||||||
|
|
||||||
|
eng_str = "The quick, brown fox jumps over the lazy dog."
|
||||||
|
index_str = ""
|
||||||
|
|
||||||
|
for letter in eng_str:
|
||||||
|
try:
|
||||||
|
index_str = index_str + f"{letter} - {str(alphabet_list.index(letter.lower()) + 1)} "
|
||||||
|
except ValueError:
|
||||||
|
index_str = index_str + letter
|
||||||
|
print(index_str)
|
||||||
|
|
||||||
|
if input("Введите слово: ") in sentence_str:
|
||||||
|
print("Слово есть в предложении")
|
||||||
|
else:
|
||||||
|
print("Слова нет в предложении")
|
||||||
|
|
||||||
|
|
||||||
|
surnames_summer = ['Коваленко', 'Лыкова', 'Лазарев']
|
||||||
|
marks_summer = [4.75, 3.75, 5.00]
|
||||||
|
surnames_winter = ['Лыкова', 'Коваленко', 'Лазарев']
|
||||||
|
marks_winter = [3.25, 4.5, 5.00]
|
||||||
|
|
||||||
|
surname = input("Введите фамилию студента: ")
|
||||||
|
if surname in surnames_summer:
|
||||||
|
print(f"Студент(ка) {surname}. Средний балл за летнюю сессию составляет {marks_summer[surnames_summer.index(surname)]}, за зимнюю сессию составляет {marks_winter[surnames_winter.index(surname)]}.")
|
||||||
|
else:
|
||||||
|
print(f"Студент(ка) {surname}. отсутствует в списке")
|
||||||
23
TEMA5/test.md
Обычный файл
@@ -0,0 +1,23 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 5
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание 9
|
||||||
|
|
||||||
|
9. Напишите инструкции создания списка с 20 случайными нормально распределенными (математическое ожидание равно -50, дисперсия равна 64) числами. Из этого списка перепишите в другой список только те элементы, которые не превышают среднего значения.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
```py
|
||||||
|
import random as rn
|
||||||
|
|
||||||
|
sps = [rn.gauss(-50, 64**0.5) for i in range(20)]
|
||||||
|
print(f"{sps}, среднее = {sum(sps)/len(sps)} \n")
|
||||||
|
new_sps = [sps[i] for i in range(len(sps)) if sps[i]<=sum(sps)/len(sps)]
|
||||||
|
|
||||||
|
print(new_sps)
|
||||||
|
|
||||||
|
>>> [-48.42767862148211, -43.69035462933621, -61.0702207089155, -53.983411522362914, -46.71703779699627, -43.0128636534661, -36.739016417150715, -57.8461158532874, -40.051722914719875, -54.69110069704356, -53.21044543510062, -56.15437523954474, -63.130702927718104, -54.448990465321415, -54.90985201111035, -61.41046778390321, -83.6761467075842, -39.79673632158901, -46.536576715447765, -40.71362490760454], среднее = -52.010872066484225
|
||||||
|
|
||||||
|
[-61.0702207089155, -53.983411522362914, -57.8461158532874, -54.69110069704356, -53.21044543510062, -56.15437523954474, -63.130702927718104, -54.448990465321415, -54.90985201111035, -61.41046778390321, -83.6761467075842]
|
||||||
|
```
|
||||||
15
TEMA5/test.py
Обычный файл
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
'''
|
||||||
|
Напишите инструкции создания списка с 20 случайными нормально распределенными
|
||||||
|
(математическое ожидание равно -50, дисперсия равна 64) числами.
|
||||||
|
Из этого списка перепишите в другой список только те элементы, которые не превышают среднего значения.
|
||||||
|
'''
|
||||||
|
|
||||||
|
import random as rn
|
||||||
|
|
||||||
|
sps = [rn.gauss(-50, 64**0.5) for i in range(20)]
|
||||||
|
print(f"{sps}, среднее = {sum(sps)/len(sps)} \n")
|
||||||
|
|
||||||
|
new_sps = [sps[i] for i in range(len(sps)) if sps[i]<=sum(sps)/len(sps)]
|
||||||
|
|
||||||
|
print(new_sps)
|
||||||
1
TEMA6/Stroka.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
запись строки в файл
|
||||||
273
TEMA6/report.md
Обычный файл
@@ -0,0 +1,273 @@
|
|||||||
|
# Отчет по теме 6
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 6. Ввод-вывод данных и операции с файлами
|
||||||
|
|
||||||
|
### 2. Вывод данных на экран дисплея.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> stroka='Автоматизированная система управления'
|
||||||
|
>>> stroka
|
||||||
|
'Автоматизированная система управления'
|
||||||
|
>>> fff=234.5;gg='Значение температуры = '
|
||||||
|
```
|
||||||
|
#### 2.1 функция `print`
|
||||||
|
```py
|
||||||
|
>>> print(gg, fff)
|
||||||
|
Значение температуры = 234.5
|
||||||
|
>>> print(gg, fff, sep='/')
|
||||||
|
Значение температуры = /234.5
|
||||||
|
>>> print(gg, fff,sep='/',end='***'); print('____')
|
||||||
|
Значение температуры = /234.5***____
|
||||||
|
>>> print()
|
||||||
|
|
||||||
|
>>> print(""" Здесь может выводиться
|
||||||
|
... большой текст,
|
||||||
|
... занимающий несколько строк""")
|
||||||
|
Здесь может выводиться
|
||||||
|
большой текст,
|
||||||
|
занимающий несколько строк
|
||||||
|
>>> print("Здесь может выводиться",
|
||||||
|
... "большой текст,",
|
||||||
|
... "занимающий несколько строк")
|
||||||
|
Здесь может выводиться большой текст, занимающий несколько строк
|
||||||
|
```
|
||||||
|
#### 2.2 метод `write`
|
||||||
|
|
||||||
|
```py
|
||||||
|
import sys
|
||||||
|
>>> sys.stdout.write('Функция write')
|
||||||
|
Функция write13
|
||||||
|
>>> sys.stdout.write('Функция write\n')
|
||||||
|
Функция write
|
||||||
|
14
|
||||||
|
```
|
||||||
|
Выводимое число - количество символов, включая пробелы и переносы.
|
||||||
|
sys.stdout.write() - функция, которая выводит на экран дисплея (или любой другой поток стандартного вывода) эхо-выводом строку, которую внесли в функцию, и возвращает число - количество символов. В отличие от print() требует передачи только строковых аргументов и на выводе не переносит на новую строку.
|
||||||
|
### 3. Ввод данных с клавиатуры
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> psw=input('Введите пароль:')
|
||||||
|
Введите пароль:12345
|
||||||
|
>>> psw
|
||||||
|
'12345'
|
||||||
|
>>> type(psw)
|
||||||
|
<class 'str'>
|
||||||
|
|
||||||
|
>>> while True:
|
||||||
|
... znach = float(input("Задайте коэф.усиления = "))
|
||||||
|
... if znach < 17.5 or znach > 23.8:
|
||||||
|
... print("Ошибка!")
|
||||||
|
... else:
|
||||||
|
... break
|
||||||
|
...
|
||||||
|
Задайте коэф.усиления = 15.4
|
||||||
|
Ошибка!
|
||||||
|
Задайте коэф.усиления = 21.6
|
||||||
|
|
||||||
|
|
||||||
|
>>> import math
|
||||||
|
>>> print(eval(input('введите выражение для расчета = ')))
|
||||||
|
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
|
||||||
|
1.34504378689765
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4 Ввод-вывод при работе с файлами
|
||||||
|
|
||||||
|
#### 4.1 Функции для работы с путем к файлу
|
||||||
|
```py
|
||||||
|
>>>
|
||||||
|
>>> import os
|
||||||
|
>>> Makhnov = os.getcwd()
|
||||||
|
>>> print(Makhnov)
|
||||||
|
"C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs"
|
||||||
|
>>> os.chdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs/TEMA6")
|
||||||
|
>>> os.getcwd()
|
||||||
|
'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6'
|
||||||
|
|
||||||
|
>>> os.mkdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs/LAB6")
|
||||||
|
>>> os.rmdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs/LAB6")
|
||||||
|
>>> os.listdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs")
|
||||||
|
['.git', '.gitignore', 'README.md', 'TEMA0', 'TEMA1', 'TEMA2', 'TEMA3', 'TEMA4', 'TEMA5', 'TEMA6', 'TEMA7', 'TEMA8', 'TEMA9']
|
||||||
|
|
||||||
|
>>> fil = os.path.abspath("report.md")
|
||||||
|
>>> fil
|
||||||
|
'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6\\report.md'
|
||||||
|
>>> drkt=os.path.dirname(fil)
|
||||||
|
>>> drkt
|
||||||
|
'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6'
|
||||||
|
>>> os.path.basename(fil)
|
||||||
|
'report.md'
|
||||||
|
>>> os.path.split(fil)
|
||||||
|
('C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6', 'report.md')
|
||||||
|
```
|
||||||
|
Возвращает кортеж с двумя объектами - путем к директории и именем файла
|
||||||
|
```py
|
||||||
|
>>> os.path.exists('some.md')
|
||||||
|
False
|
||||||
|
>>> os.path.isfile('task.md')
|
||||||
|
False
|
||||||
|
>>> os.path.isfile('report.md')
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.3 Открытие файла для записи или чтения данных – функция `open`
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> fp=open(file=drkt+'\\zapis1.txt',mode='w')
|
||||||
|
>>> fp=open(drkt+'\\zapis1.txt','w')
|
||||||
|
>>> fp=open('zapis1.txt','w')
|
||||||
|
>>> type(fp)
|
||||||
|
<class '_io.TextIOWrapper'>
|
||||||
|
>>> dir(fp)
|
||||||
|
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__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(drkt+'\\zapis2.bin',mode='wb+')
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.4. Закрытие файла
|
||||||
|
```py
|
||||||
|
>>> fp.close()
|
||||||
|
>>>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4.5 Запись информации в файл с помощью метода `write`
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> sps=list(range(1,13))
|
||||||
|
>>> fp2=open('zapis3.txt','w')
|
||||||
|
>>> fp2.write(str(sps[:4])+'\n')
|
||||||
|
>>> fp2.write(str(sps[4:8])+'\n')
|
||||||
|
>>> fp2.write(str(sps[8:])+'\n')
|
||||||
|
>>> fp2.close()
|
||||||
|
```
|
||||||
|
|
||||||
|
[Созданный файл](zapis3.txt)
|
||||||
|
```py
|
||||||
|
>>> fp3=open('zapis4.txt','w', encoding="utf-8")
|
||||||
|
>>> for i in range(len(sps3)):
|
||||||
|
... stroka4=sps3[i][0]+' '+str(sps3[i][1])
|
||||||
|
... fp3.write(stroka4)
|
||||||
|
...
|
||||||
|
11
|
||||||
|
11
|
||||||
|
12
|
||||||
|
>>> fp3.close()
|
||||||
|
```
|
||||||
|
[Созданный файл](zapis4.txt)
|
||||||
|
```py
|
||||||
|
gh=open('zapis5.txt','w')
|
||||||
|
for r in sps3:
|
||||||
|
gh.write(f'{r[0]} {str(r[1])}\n')
|
||||||
|
|
||||||
|
gh.close()
|
||||||
|
```
|
||||||
|
[Созданный файл](zapis5.txt)
|
||||||
|
#### 4.6. Первый способ чтения информации из текстового файла.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> sps1=[]
|
||||||
|
fp=open('zapis3.txt')
|
||||||
|
sps1=[]
|
||||||
|
|
||||||
|
>>> 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']
|
||||||
|
```
|
||||||
|
#### 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
|
||||||
|
>>> with open('zapis3.txt') as fl:
|
||||||
|
... print(fl.readline())
|
||||||
|
... print(fl.readlines())
|
||||||
|
...
|
||||||
|
[1, 2, 3, 4]
|
||||||
|
|
||||||
|
['[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()
|
||||||
|
```
|
||||||
|
[Созданный файл](zapis6.mnz)
|
||||||
|
```py
|
||||||
|
fp=open('zapis6.mnz','rb')
|
||||||
|
mnoz2=pickle.load(fp)
|
||||||
|
fp.close()
|
||||||
|
|
||||||
|
>>> mnoz2
|
||||||
|
{'pen', 'table', 'iPhone', 'book'}
|
||||||
|
>>> mnoz1
|
||||||
|
{'pen', 'table', 'iPhone', 'book'}
|
||||||
|
>>> mnoz1 == mnoz2
|
||||||
|
True
|
||||||
|
|
||||||
|
>>> 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, obj2, sps3
|
||||||
|
({'iPhone', 'book', 'pen', 'table'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]], [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]])
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Перенаправление потоков ввода и вывода данных
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import sys
|
||||||
|
>>> vr_out=sys.stdout
|
||||||
|
>>> fc=open('Stroka.txt','w', encoding='utf-8')
|
||||||
|
>>> 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'>
|
||||||
|
|
||||||
|
>>> fd = open("Stroka.txt", "r", encoding='utf-8')
|
||||||
|
>>> sys.stdin = fd
|
||||||
|
>>> sys.stdin
|
||||||
|
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='utf-8'>
|
||||||
|
>>> while True:
|
||||||
|
... try:
|
||||||
|
... line = input()
|
||||||
|
... print(line)
|
||||||
|
... except EOFError:
|
||||||
|
... break
|
||||||
|
...
|
||||||
|
запись строки в файл
|
||||||
|
>>> fd.close()
|
||||||
|
>>> sys.stdin=tmp_in
|
||||||
|
```
|
||||||
37
TEMA6/task.md
Обычный файл
@@ -0,0 +1,37 @@
|
|||||||
|
# Общее контрольное задание по теме 6
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
* Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
|
||||||
|
* Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
|
||||||
|
* Записывается кортеж в бинарный файл.
|
||||||
|
* Записывается в этот же файл список и закрывается файл.
|
||||||
|
* Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
|
||||||
|
* Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
|
||||||
|
* Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
```py
|
||||||
|
from random import *
|
||||||
|
from pickle import dump, load
|
||||||
|
|
||||||
|
tpl = tuple(str(randint(6, 56)) for _ in range(125))
|
||||||
|
surnameTuple = ['Махнов', 'Коваленко', 'Лазарев', 'Анисенков']
|
||||||
|
print(tpl, surnameTuple)
|
||||||
|
|
||||||
|
with open('test.bin', 'wb') as fil:
|
||||||
|
dump(tpl, fil)
|
||||||
|
dump(surnameTuple, fil)
|
||||||
|
|
||||||
|
with open('test.bin', 'rb') as fil2:
|
||||||
|
obj1 = load(fil2)
|
||||||
|
obj2 = load(fil2)
|
||||||
|
print(obj1, obj2, '\n', tpl == obj1, surnameTuple == obj2)
|
||||||
|
|
||||||
|
for i in range(25):
|
||||||
|
exec(f'list{i}=list(tpl[{i*5}:{i*5+5}])')
|
||||||
|
exec(f"print(list{i})")
|
||||||
|
#print(list3) #для проверки
|
||||||
|
```
|
||||||
50
TEMA6/test.md
Обычный файл
@@ -0,0 +1,50 @@
|
|||||||
|
# Индивидуальное контрольное задание по модулю 2
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание 4
|
||||||
|
|
||||||
|
1) Создайте словарь с 7 элементами, в которых ключами являются логины пользователей, а значениями - их пароли.
|
||||||
|
|
||||||
|
2) Запросите у пользователя логин и пароль, проверьте их наличие в качестве элемента словаря. Если такой элемент найден, выдайте сообщение "Access granted", иначе - "Access denied".
|
||||||
|
|
||||||
|
3) Запишите словарь в бинарный файл и после этого удалите словарь из памяти.
|
||||||
|
|
||||||
|
4) Прочитайте словарь из файла. Отобразите его на экране.
|
||||||
|
|
||||||
|
5) Запросите у пользователя логин и пароль нового пользователя и добавьте соответствующий элемент в словарь.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
```py
|
||||||
|
from pickle import dump, load
|
||||||
|
|
||||||
|
|
||||||
|
user_dict = {'user1':'passwd1', 'user2':'passwd2', 'user3':'passwd3', 'user4':'passwd4', 'user5':'passwd5', 'user6':'passwd6', 'user7':'passwd7'}
|
||||||
|
login = input("Enter your login: ")
|
||||||
|
passw = input("Enter your password: ")
|
||||||
|
if login in user_dict.keys() and user_dict[login] == passw:
|
||||||
|
print("Access granted")
|
||||||
|
else:
|
||||||
|
print("Access denied")
|
||||||
|
|
||||||
|
with open("users.bin", 'wb') as fl:
|
||||||
|
dump(user_dict, fl)
|
||||||
|
del(user_dict)
|
||||||
|
|
||||||
|
with open('users.bin', 'rb') as fl:
|
||||||
|
user_dict_new = load(fl)
|
||||||
|
print(f"{user_dict_new} is new user dictionary")
|
||||||
|
|
||||||
|
login_new = input("Enter your login: ")
|
||||||
|
user_dict_new[login_new] = input("Enter your password: ")
|
||||||
|
print(user_dict_new)
|
||||||
|
|
||||||
|
|
||||||
|
>>> Enter your login: user1
|
||||||
|
Enter your password: passwd1
|
||||||
|
Access granted
|
||||||
|
{'user1': 'passwd1', 'user2': 'passwd2', 'user3': 'passwd3', 'user4': 'passwd4', 'user5': 'passwd5', 'user6': 'passwd6', 'user7': 'passwd7'} is new user dictionary
|
||||||
|
Enter your login: user_new
|
||||||
|
Enter your password: passw_new
|
||||||
|
{'user1': 'passwd1', 'user2': 'passwd2', 'user3': 'passwd3', 'user4': 'passwd4', 'user5': 'passwd5', 'user6': 'passwd6', 'user7': 'passwd7', 'user_new': 'passw_new'}
|
||||||
|
```
|
||||||
35
TEMA6/testing.py
Обычный файл
@@ -0,0 +1,35 @@
|
|||||||
|
'''
|
||||||
|
M2_4
|
||||||
|
1) Создайте словарь с 7 элементами, в которых ключами являются логины пользователей, а значениями - их пароли.
|
||||||
|
|
||||||
|
2) Запросите у пользователя логин и пароль, проверьте их наличие в качестве элемента словаря.
|
||||||
|
Если такой элемент найден, выдайте сообщение "Access granted", иначе - "Access denied".
|
||||||
|
|
||||||
|
3) Запишите словарь в бинарный файл и после этого удалите словарь из памяти.
|
||||||
|
|
||||||
|
4) Прочитайте словарь из файла. Отобразите его на экране.
|
||||||
|
|
||||||
|
5) Запросите у пользователя логин и пароль нового пользователя и добавьте соответствующий элемент в словарь.
|
||||||
|
'''
|
||||||
|
from pickle import dump, load
|
||||||
|
|
||||||
|
|
||||||
|
user_dict = {'user1':'passwd1', 'user2':'passwd2', 'user3':'passwd3', 'user4':'passwd4', 'user5':'passwd5', 'user6':'passwd6', 'user7':'passwd7'}
|
||||||
|
login = input("Enter your login: ")
|
||||||
|
passw = input("Enter your passw: ")
|
||||||
|
if login in user_dict.keys() and user_dict[login] == passw:
|
||||||
|
print("Access granted")
|
||||||
|
else:
|
||||||
|
print("Access denied")
|
||||||
|
|
||||||
|
with open("users.bin", 'wb') as fl:
|
||||||
|
dump(user_dict, fl)
|
||||||
|
del(user_dict)
|
||||||
|
|
||||||
|
with open('users.bin', 'rb') as fl:
|
||||||
|
user_dict_new = load(fl)
|
||||||
|
print(f"{user_dict_new} is new user dictionary")
|
||||||
|
|
||||||
|
login_new = input("Enter your login: ")
|
||||||
|
user_dict_new[login_new] = input("Enter your password: ")
|
||||||
|
print(user_dict_new)
|
||||||
0
TEMA6/zapis1.txt
Обычный файл
0
TEMA6/zapis2.bin
Обычный файл
3
TEMA6/zapis3.txt
Обычный файл
@@ -0,0 +1,3 @@
|
|||||||
|
[1, 2, 3, 4]
|
||||||
|
[5, 6, 7, 8]
|
||||||
|
[9, 10, 11, 12]
|
||||||
1
TEMA6/zapis4.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
Иванов И. 1Петров П. 2Сидоров С. 3
|
||||||
3
TEMA6/zapis5.txt
Обычный файл
@@ -0,0 +1,3 @@
|
|||||||
|
Иванов И. 1
|
||||||
|
Петров П. 2
|
||||||
|
Сидоров С. 3
|
||||||
Двоичные данные
TEMA6/zapis6.mnz
Обычный файл
Двоичные данные
TEMA6/zapis7.2ob
Обычный файл
Двоичные данные
TEMA7/image-1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 21 KiB |
Двоичные данные
TEMA7/image.png
Обычный файл
|
После Ширина: | Высота: | Размер: 20 KiB |
447
TEMA7/report.md
Обычный файл
@@ -0,0 +1,447 @@
|
|||||||
|
# Отчет по теме 7
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 7. Создание пользовательских функций
|
||||||
|
|
||||||
|
### 2. Создание пользовательской функции.
|
||||||
|
### 2.1. Первый пример: функция – без аргументов.
|
||||||
|
```py
|
||||||
|
>>> def uspeh():
|
||||||
|
... """Подтверждение успеха операции"""
|
||||||
|
... print('Выполнено успешно!')
|
||||||
|
...
|
||||||
|
>>> uspeh()
|
||||||
|
Выполнено успешно!
|
||||||
|
>>> dir()
|
||||||
|
['PS1', 'REPLHooks', '__annotations__', '__builtins__', '__cached__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'get_last_command', 'is_wsl', 'original_ps1', 'platform', 'sys', '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
|
||||||
|
>>> sravnenie('aaa', 'bbb')
|
||||||
|
aaa меньше bbb
|
||||||
|
```
|
||||||
|
Функция сравнивает символы по лексикографическому порядку, начиная с самого первого символа. Лексикографический порядок служит для того, чтобы сравнивать последовательности символом по алфавитному порядку
|
||||||
|
|
||||||
|
### 2.3. Пример функции, содержащей return.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> def logistfun(b,a):
|
||||||
|
... import math
|
||||||
|
... return a/(1+math.exp(-b))
|
||||||
|
...
|
||||||
|
>>> v,w=1,0.7;z=logistfun(w,v)
|
||||||
|
>>> print(z)
|
||||||
|
0.6681877721681662
|
||||||
|
```
|
||||||
|
### 2.4. Сложение для разных типов аргументов
|
||||||
|
```py
|
||||||
|
>>> def slozh(a1,a2,a3,a4):
|
||||||
|
... """ Сложение значений четырех аргументов"""
|
||||||
|
... return a1+a2+a3+a4
|
||||||
|
...
|
||||||
|
>>> slozh(1,2,3,4)
|
||||||
|
10
|
||||||
|
>>> slozh('1','2','3','4')
|
||||||
|
'1234'
|
||||||
|
>>> b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]
|
||||||
|
>>> q=slozh(b1,b2,b3,b4)
|
||||||
|
>>> q
|
||||||
|
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||||
|
b1={9:12};b2={1:-3};b3={4:6};b4={-2:8}
|
||||||
|
>>> b1={9,12};b2={1,-3};b3={4,6};b4={-2,8}
|
||||||
|
>>> slozh(b1,b2,b3,b4)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "<stdin>", line 3, in slozh
|
||||||
|
TypeError: unsupported operand type(s) for +: 'set' and 'set'
|
||||||
|
>>> b1={9:12};b2={1:-3};b3={4:6};b4={-2:8}
|
||||||
|
>>> slozh(b1,b2,b3,b4)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "<stdin>", line 3, in slozh
|
||||||
|
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
|
||||||
|
```
|
||||||
|
### 2.5. Функция, реализующая модель некоторого устройства, на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y:
|
||||||
|
```py
|
||||||
|
>>> def inerz(x,T,ypred):
|
||||||
|
... """ Модель устройства с памятью:
|
||||||
|
... x- текущее значение вх.сигнала,
|
||||||
|
... T -постоянная времени,
|
||||||
|
... ypred - предыдущее значение выхода устройства"""
|
||||||
|
... y=(x+T*ypred)/(T+1)
|
||||||
|
... return y
|
||||||
|
...
|
||||||
|
>>> sps=[0]+[1]*100
|
||||||
|
>>> spsy=[]
|
||||||
|
>>> TT=20
|
||||||
|
>>> yy=0
|
||||||
|
>>> for xx in sps:
|
||||||
|
... yy=inerz(xx,TT,yy)
|
||||||
|
... spsy.append(yy)
|
||||||
|
...
|
||||||
|
>>> import pylab
|
||||||
|
>>> pylab.plot(spsy,sps)
|
||||||
|
[<matplotlib.lines.Line2D object at 0x000001663A9DD5C8>]
|
||||||
|
>>> pylab.show()
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
### 3. Функции как объекты.
|
||||||
|
|
||||||
|
### 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 x- текущее значение вх.сигнала,\n T -постоянная времени,\n ypred - предыдущее значение выхода устройства'
|
||||||
|
>>> 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
|
||||||
|
```
|
||||||
|
Вывелось надпись "Функция 2", т.к. typ_fun не равна 1.
|
||||||
|
### 4. Аргументы функции.
|
||||||
|
### 4.1. Изучите возможность использования функции в качестве аргумента другой функции
|
||||||
|
```py
|
||||||
|
>>> def fun_arg(fff,a,b,c):
|
||||||
|
... """fff-имя функции, используемой
|
||||||
|
... в качестве аргумента функции fun_arg"""
|
||||||
|
... return a+fff(c,b)
|
||||||
|
...
|
||||||
|
>>> zz=fun_arg(logistfun,-3,1,0.7)
|
||||||
|
>>> zz
|
||||||
|
-2.3318122278318336
|
||||||
|
```
|
||||||
|
### 4.2. Обязательные и необязательные аргументы.
|
||||||
|
```py
|
||||||
|
>>> def logistfun(a,b=1):
|
||||||
|
... """Вычисление логистической функции"""
|
||||||
|
... import math
|
||||||
|
... return b/(1+math.exp(-a))
|
||||||
|
...
|
||||||
|
>>> logistfun(0.7)
|
||||||
|
0.6681877721681662
|
||||||
|
>>> logistfun(0.7,2)
|
||||||
|
1.3363755443363323
|
||||||
|
```
|
||||||
|
### 4.3. Изучите возможность обращения к функции с произвольным (непозиционным) расположением аргументов. При этом надо в обращении к функции указывать имена аргументов:
|
||||||
|
```py
|
||||||
|
>>> logistfun(b=0.5,a=0.8)
|
||||||
|
0.34498724056380625
|
||||||
|
```
|
||||||
|
### 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже.
|
||||||
|
```py
|
||||||
|
>>> b1234=[b1,b2,b3,b4]
|
||||||
|
>>> qq=slozh(*b1234)
|
||||||
|
>>> qq
|
||||||
|
[1, 2, -1, -2, 0, 2, -1, -1]
|
||||||
|
```
|
||||||
|
### 4.5. Пример со значениями аргументов функции, содержащимися в словаре
|
||||||
|
```py
|
||||||
|
>>> dic4={"a1":1,"a2":2,"a3":3,"a4":4}
|
||||||
|
>>> qqq=slozh(**dic4)
|
||||||
|
>>> qqq
|
||||||
|
10
|
||||||
|
```
|
||||||
|
### 4.6. Смешанные ссылки
|
||||||
|
```py
|
||||||
|
>>> e1=(-1,6);dd2={'a3':3,'a4':9}
|
||||||
|
>>> qqqq=slozh(*e1,**dd2)
|
||||||
|
>>> qqqq
|
||||||
|
17
|
||||||
|
```
|
||||||
|
*args **kwargs используются при передаче неопределенного количества аргументов. **kwargs в функции slozh распаковывает именованные объекты в соответствии с именами переменных в функции (в def slozh(a1,a2,a3,a4) **dd2 распакует из словаря значения по их именам, иначе выйдет ошибка)
|
||||||
|
### 4.7. Переменное число аргументов у функции.
|
||||||
|
```py
|
||||||
|
>>> def func4(*kort7):
|
||||||
|
... smm = 0
|
||||||
|
... for elt in kort7:
|
||||||
|
... smm+=elt
|
||||||
|
... return smm
|
||||||
|
...
|
||||||
|
>>> func4(-1,2)
|
||||||
|
1
|
||||||
|
>>> func4(-1,2,0,3,6)
|
||||||
|
10
|
||||||
|
```
|
||||||
|
### 4.8. Комбинация аргументов
|
||||||
|
```py
|
||||||
|
>>> def func4(a,b=7,*kort7):
|
||||||
|
... """Кортеж - сборка аргументов - должен быть последним!"""
|
||||||
|
... smm=0
|
||||||
|
... for elt in kort7:
|
||||||
|
... smm+=elt
|
||||||
|
... return a*smm+b
|
||||||
|
...
|
||||||
|
>>> func4(-1,2,0,3,6)
|
||||||
|
-7
|
||||||
|
```
|
||||||
|
### 4.9. Изменение значений объектов, используемых в качестве аргументов функции.
|
||||||
|
```py
|
||||||
|
>>> a = 90
|
||||||
|
>>> def func3(b):
|
||||||
|
... b-5*b+67
|
||||||
|
...
|
||||||
|
>>> func3(a)
|
||||||
|
>>> a
|
||||||
|
90
|
||||||
|
```
|
||||||
|
Не изменилось, переменная изменялась только в функции, в которой она не была вызвана как глобальная переменная
|
||||||
|
```py
|
||||||
|
>>> sps1=[1,2,3,4]
|
||||||
|
>>> def func2(sps):
|
||||||
|
... sps[1]=99
|
||||||
|
...
|
||||||
|
>>> func2(sps1)
|
||||||
|
>>> sps1
|
||||||
|
[1, 99, 3, 4]
|
||||||
|
>>> print(sps1)
|
||||||
|
[1, 99, 3, 4]
|
||||||
|
```
|
||||||
|
Изменилось, т.к. список передается по ссылке.
|
||||||
|
```py
|
||||||
|
>>> kort=(1,2,3,4)
|
||||||
|
>>> func2(kort)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "<stdin>", line 2, in func2
|
||||||
|
TypeError: 'tuple' object does not support item assignment
|
||||||
|
```
|
||||||
|
### 5. Специальные типы пользовательских функций
|
||||||
|
### 5.1. Анонимные функции.
|
||||||
|
```py
|
||||||
|
>>> import math
|
||||||
|
>>> anfun1=lambda: 1.5+math.log10(17.23)
|
||||||
|
>>> anfun1()
|
||||||
|
2.7362852774480286
|
||||||
|
>>> anfun2=lambda a,b : a+math.log10(b)
|
||||||
|
>>> anfun2(17,234)
|
||||||
|
19.369215857410143
|
||||||
|
>>> anfun3=lambda a,b=234: a+math.log10(b)
|
||||||
|
>>> anfun3(100)
|
||||||
|
102.36921585741014
|
||||||
|
```
|
||||||
|
### 5.2. Функции-генераторы.
|
||||||
|
```py
|
||||||
|
>>> def func5(diap,shag):
|
||||||
|
... """ Итератор, возвращающий значения
|
||||||
|
... из диапазона от 1 до diap с шагом shag"""
|
||||||
|
... for j in range(1,diap+1,shag):
|
||||||
|
... yield j
|
||||||
|
...
|
||||||
|
>>> for mm in func5(7,3):
|
||||||
|
... print(mm)
|
||||||
|
...
|
||||||
|
1
|
||||||
|
4
|
||||||
|
7
|
||||||
|
>>> alp=func5(7,3)
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
1
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
4
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
7
|
||||||
|
>>> print(alp.__next__())
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
StopIteration
|
||||||
|
```
|
||||||
|
Функция дошла до конца итерации, и вывелась ошибка, обозначающее это.
|
||||||
|
### 6. Локализация объектов в функциях.
|
||||||
|
### 6.1. Примеры на локализацию объектов.
|
||||||
|
```py
|
||||||
|
>>> def func7(arg):
|
||||||
|
... loc1=15
|
||||||
|
... glb=8
|
||||||
|
... return loc1*arg
|
||||||
|
...
|
||||||
|
>>> glb=10
|
||||||
|
>>> res=func7(glb)
|
||||||
|
>>> res
|
||||||
|
150
|
||||||
|
>>> glb
|
||||||
|
10
|
||||||
|
```
|
||||||
|
glb не изменилось
|
||||||
|
```py
|
||||||
|
>>> def func8(arg):
|
||||||
|
... loc1=15
|
||||||
|
... print(glb)
|
||||||
|
... glb=8
|
||||||
|
... return loc1*arg
|
||||||
|
...
|
||||||
|
>>> res=func8(glb)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "<stdin>", line 3, in func8
|
||||||
|
UnboundLocalError: local variable 'glb' referenced before assignment
|
||||||
|
```
|
||||||
|
Мы не обозначили glb в функции до вывода этой переменной, отсюда и ошибка.
|
||||||
|
```py
|
||||||
|
>>> glb=11
|
||||||
|
>>> def func7(arg):
|
||||||
|
... loc1=15
|
||||||
|
... global glb
|
||||||
|
... print(glb)
|
||||||
|
... glb=8
|
||||||
|
... return loc1*arg
|
||||||
|
...
|
||||||
|
>>> res=func7(glb)
|
||||||
|
11
|
||||||
|
>>> res
|
||||||
|
165
|
||||||
|
>>> glb
|
||||||
|
8
|
||||||
|
```
|
||||||
|
Теперь glb изменилась - мы взяли её как глобальную переменную, и в функции изменили значение переменной
|
||||||
|
### 6.2. Выявление локализации объекта с помощью функций locals() и globals() из builtins.
|
||||||
|
```py
|
||||||
|
>>> globals().keys()
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__cached__', 'platform', 'sys', 'original_ps1', 'is_wsl', 'REPLHooks', 'get_last_command', 'PS1', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'sravnenie', 'fnkt', 'v', 'typ_fun', 'func', 'logistfun', 'w', 'z', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'slozh', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'func7', 'glb', 'res', 'func8'])
|
||||||
|
>>> locals().keys()
|
||||||
|
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__cached__', 'platform', 'sys', 'original_ps1', 'is_wsl', 'REPLHooks', 'get_last_command', 'PS1', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'sravnenie', 'fnkt', 'v', 'typ_fun', 'func', 'logistfun', 'w', 'z', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'slozh', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'func7', 'glb', 'res', 'func8'])
|
||||||
|
```
|
||||||
|
Различий нет, т.к. мы находимся в рабочем пространстве, и все переменные в нем будут как глобальными, так и локальными (т.е. локальные и глобальные переменные будут совпадать).
|
||||||
|
```py
|
||||||
|
>>> 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__', '__cached__', 'platform', 'sys', 'original_ps1', 'is_wsl', 'REPLHooks', 'get_last_command', 'PS1', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'sravnenie', 'fnkt', 'v', 'typ_fun', 'func', 'logistfun', 'w', 'z', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'slozh', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'func7', 'glb', 'res', 'func8'])
|
||||||
|
dict_keys(['arg', 'loc1', 'glb'])
|
||||||
|
>>> 'glb' in globals().keys()
|
||||||
|
True
|
||||||
|
```
|
||||||
|
Теперь мы вывели глобальные и локальные переменные в пространстве функции. Глобальные переменные останутся неизменными, а локальные переменные будут соответствовать тем локальным переменным, что были заданы в самой функции.
|
||||||
|
```py
|
||||||
|
```
|
||||||
|
### 6.3. Локализация объектов при использовании вложенных функций.
|
||||||
|
```py
|
||||||
|
>>> def func9(arg2,arg3):
|
||||||
|
... def func9_1(arg1):
|
||||||
|
... loc1=15
|
||||||
|
... glb1=8
|
||||||
|
... print('glob_func9_1:',globals().keys())
|
||||||
|
... print('locl_func9_1:',locals().keys())
|
||||||
|
... return loc1*arg1
|
||||||
|
... loc1=5
|
||||||
|
... glb=func9_1(loc1)
|
||||||
|
... print('loc_func9:',locals().keys())
|
||||||
|
... print('glob_func9:',globals().keys())
|
||||||
|
... return arg2+arg3*glb
|
||||||
|
...
|
||||||
|
>>> kk=func9(10,1)
|
||||||
|
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__cached__', 'platform', 'sys', 'original_ps1', 'is_wsl', 'REPLHooks', 'get_last_command', 'PS1', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'sravnenie', 'fnkt', 'v', 'typ_fun', 'func', 'logistfun', 'w', 'z', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'slozh', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'func7', 'glb', 'res', 'func8', 'hh', 'func9'])
|
||||||
|
locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])
|
||||||
|
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])
|
||||||
|
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__cached__', 'platform', 'sys', 'original_ps1', 'is_wsl', 'REPLHooks', 'get_last_command', 'PS1', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'sravnenie', 'fnkt', 'v', 'typ_fun', 'func', 'logistfun', 'w', 'z', 'fun_arg', 'zz', 'b1', 'b2', 'b3', 'b4', 'b1234', 'slozh', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'func7', 'glb', 'res', 'func8', 'hh', 'func9'])
|
||||||
|
```
|
||||||
|
Были выведены локальные и глобальные переменные внутренней функции (func9_1) и внешней функции (func9).
|
||||||
|
### 6.4. Большой пример – моделирование системы, состоящей из последовательного соединения ре-ального двигателя, охваченного отрицательной обратной связью с тахогенератором в ней, и нели-нейного звена типа «зона нечувствительности», при подаче на неё синусоидального входного сигнала.
|
||||||
|
```py
|
||||||
|
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||||
|
k1,T,k2,Xm,A,F,N=8,5,3,10,2,0.5,1000
|
||||||
|
>>> k1=float(znach[0])
|
||||||
|
>>> T=float(znach[1])
|
||||||
|
>>> k2=float(znach[2])
|
||||||
|
>>> Xm=float(znach[3])
|
||||||
|
>>> A=float(znach[4])
|
||||||
|
>>> F=float(znach[5])
|
||||||
|
>>> N=int(znach[6])
|
||||||
|
>>> N=int(znach[6])
|
||||||
|
|
||||||
|
>>> import math
|
||||||
|
>>> vhod = []
|
||||||
|
>>> for i in range(N):
|
||||||
|
... vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||||
|
...
|
||||||
|
>>> vhod
|
||||||
|
[0.0, -9.797174393178826e-16, -1.959434878635765e-15, -2.9391523179536475e-15, -3.91886975727153e-15, -4.898587196589413e-15, -5.878304635907295e-15, -6.858022075225178e-15, -7.83773951454306e-15, -8.817456953860943e-15, -9.797174393178826e-15, -3.919860126290071e-14, -1.175660927181459e-14, 1.5685382719271533e-14, ...]
|
||||||
|
```
|
||||||
|
Полнst полученные данные входа в [этом файле](vhod_and_vyhod.md)
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> 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)
|
||||||
|
```
|
||||||
|
Полнst полученные данные выхода в [этом файле](vhod_and_vyhod.md)
|
||||||
67
TEMA7/task.md
Обычный файл
@@ -0,0 +1,67 @@
|
|||||||
|
# Общее контрольное задание по теме 7
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
* Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
|
||||||
|
* Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращае-мый результат функции: список с числами элементов выборки в интервалах разбиения.
|
||||||
|
* Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
|
||||||
|
Y=b1+b2*X
|
||||||
|
и имеющую аргументы b1, b2 и X.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
```py
|
||||||
|
from matplotlib.pyplot import *
|
||||||
|
from random import *
|
||||||
|
|
||||||
|
|
||||||
|
def delaySignal (signal, T):
|
||||||
|
""""Расчёт выхода y(t) для устройства задержки"""
|
||||||
|
output=[]
|
||||||
|
for i in range(len(signal)):
|
||||||
|
if i < T:
|
||||||
|
output.append(0)
|
||||||
|
else:
|
||||||
|
output.append(signal[i-T])
|
||||||
|
return output
|
||||||
|
|
||||||
|
print(delaySignal([random() for _ in range(randint(1,10))], randint(1,5)))
|
||||||
|
>>> [0, 0, 0, 0.6929623452667151, 0.8432441392717085, 0.7135246417254248]
|
||||||
|
|
||||||
|
|
||||||
|
def histogram(sample, number):
|
||||||
|
bins = (max(sample) - min(sample))/number
|
||||||
|
intervals = []
|
||||||
|
for i in range(number):
|
||||||
|
intervals.append((min(sample)+i*bins, min(sample)+(i+1)*bins))
|
||||||
|
objectInIntervals = [0]*number
|
||||||
|
for objects in sample:
|
||||||
|
objectInterval = int((objects - min(sample))/bins)
|
||||||
|
if objectInterval == number:
|
||||||
|
objectInterval -=1
|
||||||
|
objectInIntervals[objectInterval] +=1
|
||||||
|
print("Границы интервалов | Число элементов")
|
||||||
|
for i in range(number):
|
||||||
|
lowerInterval, upperInterval = intervals[i]
|
||||||
|
print(lowerInterval, "-", upperInterval, " |", objectInIntervals[i])
|
||||||
|
hist(sample, number)
|
||||||
|
xlabel("Значения элементов выборки")
|
||||||
|
ylabel("Количество элементов в интервале")
|
||||||
|
show()
|
||||||
|
return objectInIntervals
|
||||||
|
|
||||||
|
data = [gauss(1, 20) for _ in range(10)]
|
||||||
|
histogram(data, 3)
|
||||||
|
>>> Границы интервала | Число элементов
|
||||||
|
-25.04980446710405 - -5.836770357068186 | 3
|
||||||
|
-5.836770357068186 - 13.376263752967677 | 4
|
||||||
|
13.376263752967677 - 32.58929786300354 | 3
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
```py
|
||||||
|
lineal_regression = lambda b1, b2, X: b1+b2*X
|
||||||
|
print(lineal_regression(3,2,5))
|
||||||
|
>>> 13
|
||||||
|
```
|
||||||
44
TEMA7/test.md
Обычный файл
@@ -0,0 +1,44 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 7
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание 6
|
||||||
|
|
||||||
|
6. Разработайте функцию с 3 аргументами: x, А и В, реализующую преобразование входного сигнала x по формуле:
|
||||||
|
y=B, если x>A;
|
||||||
|
y= 2B*x/A-B*x^2/A^2 , если 0≤ x ≤ А;
|
||||||
|
y= 2B * x/A +B*x^2 /A^2 , если -A≤ x <0;
|
||||||
|
y=-B, если x< -A.
|
||||||
|
Создайте список со 100 значениями входного сигнала х – случайными, равномерно распределенными числами в диапазоне значений от -5 до 12. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при трех разных парах значений А и В. Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
```py
|
||||||
|
from random import *
|
||||||
|
|
||||||
|
|
||||||
|
def func(x, A, B):
|
||||||
|
"""Преобразование входного сигнала"""
|
||||||
|
if x>A:
|
||||||
|
y = B
|
||||||
|
elif 0<= x <= A:
|
||||||
|
y = 2*B*x/A - B*x**2/A**2
|
||||||
|
elif -A<= x <=0:
|
||||||
|
y = 2*B*x/A + B*x**2/A**2
|
||||||
|
else:
|
||||||
|
y = -B
|
||||||
|
return x, y
|
||||||
|
|
||||||
|
sample = [uniform(-5, 12) for _ in range(100)]
|
||||||
|
final_list= []
|
||||||
|
with open("TEMA7\\test.txt", "w+") as f:
|
||||||
|
for _ in range(3):
|
||||||
|
A = randint(1, 10)
|
||||||
|
B = randint(1, 10)
|
||||||
|
#f.write(f"x|y for A={A} and B={B}\n")
|
||||||
|
final_list.append(f"(A = {A},B = {B})")
|
||||||
|
for i in range(len(sample)):
|
||||||
|
res = func(sample[i], A, B)
|
||||||
|
final_list.append(res)
|
||||||
|
f.write(f"{res[0]}|{res[1]}\n")
|
||||||
|
print(final_list)
|
||||||
|
```
|
||||||
41
TEMA7/test.py
Обычный файл
@@ -0,0 +1,41 @@
|
|||||||
|
"""
|
||||||
|
6. Разработайте функцию с 3 аргументами: x, А и В,
|
||||||
|
реализующую преобразование входного сигнала x по формуле:
|
||||||
|
y=B, если x>A;
|
||||||
|
y= 2B*x/A-B*x2/A2 , если 0≤ x ≤ А;
|
||||||
|
y= 2B * x/A +B*x2/A2 , если -A≤ x <0;
|
||||||
|
y=-B, если x< -A.
|
||||||
|
Создайте список со 100 значениями входного сигнала х – случайными, равномерно распределенными числами в диапазоне значений от -5 до 12.
|
||||||
|
Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при трех разных парах значений А и В.
|
||||||
|
Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from random import *
|
||||||
|
|
||||||
|
|
||||||
|
def func(x, A, B):
|
||||||
|
"""Преобразование входного сигнала"""
|
||||||
|
if x>A:
|
||||||
|
y = B
|
||||||
|
elif 0<= x <= A:
|
||||||
|
y = 2*B*x/A - B*x**2/A**2
|
||||||
|
elif -A<= x <=0:
|
||||||
|
y = 2*B*x/A + B*x**2/A**2
|
||||||
|
else:
|
||||||
|
y = -B
|
||||||
|
return x, y
|
||||||
|
|
||||||
|
sample = [uniform(-5, 12) for _ in range(100)]
|
||||||
|
final_list= []
|
||||||
|
with open("TEMA7\\test.txt", "w+") as f:
|
||||||
|
for _ in range(3):
|
||||||
|
A = randint(1, 10)
|
||||||
|
B = randint(1, 10)
|
||||||
|
#f.write(f"x|y for A={A} and B={B}\n")
|
||||||
|
final_list.append(f"(A = {A},B = {B})")
|
||||||
|
for i in range(len(sample)):
|
||||||
|
res = func(sample[i], A, B)
|
||||||
|
final_list.append(res)
|
||||||
|
f.write(f"{res[0]}|{res[1]}\n")
|
||||||
|
print(final_list)
|
||||||
300
TEMA7/test.txt
Обычный файл
@@ -0,0 +1,300 @@
|
|||||||
|
-1.9777032384570803|-4.367118717366521
|
||||||
|
11.135855406531|9
|
||||||
|
-4.884084921202556|-8.177676130895073
|
||||||
|
0.9137312153330788|2.1962447046347218
|
||||||
|
-4.15755500923055|-7.516011393266264
|
||||||
|
-2.794962360032754|-5.752222979961801
|
||||||
|
0.712131468739349|1.7380486531069022
|
||||||
|
0.36951385710231577|0.9250996240729819
|
||||||
|
2.612295705136045|5.463927738520238
|
||||||
|
9.259925904277322|9
|
||||||
|
-1.5780866550779296|-3.600524512681708
|
||||||
|
8.684012091766938|9
|
||||||
|
9.556476939895022|9
|
||||||
|
3.322279952044809|6.515701576322781
|
||||||
|
2.5472891331125584|5.358373335165763
|
||||||
|
2.3739804015682466|5.069377226006691
|
||||||
|
7.312422423029796|9
|
||||||
|
11.061772890916266|9
|
||||||
|
-3.0893944535752107|-6.1911118029070416
|
||||||
|
-1.347512762976796|-3.1315202513797566
|
||||||
|
1.7905827341876428|4.015464199100101
|
||||||
|
7.31482415237757|9
|
||||||
|
8.172591957485094|9
|
||||||
|
0.9864195591417539|2.3577888271825365
|
||||||
|
-3.580562597410845|-6.8523883805707975
|
||||||
|
-0.5809326090517546|-1.431840091309877
|
||||||
|
-1.1823346958437808|-2.783529258762293
|
||||||
|
5.110017562257022|8.34391219316751
|
||||||
|
8.146887339196109|9
|
||||||
|
3.2190108597855307|6.374226328453515
|
||||||
|
-3.3469561680638007|-6.548927282807674
|
||||||
|
5.470008082396298|8.570043318134818
|
||||||
|
6.16871332178753|8.87307473729874
|
||||||
|
8.473191536875081|9
|
||||||
|
-3.9396085042397897|-7.279715000696067
|
||||||
|
5.180256357055784|8.391771380932184
|
||||||
|
-1.1025394668524964|-2.611829251830777
|
||||||
|
2.54383643673855|5.352723605656106
|
||||||
|
6.16948876265899|8.87331142371128
|
||||||
|
11.003077744454764|9
|
||||||
|
-3.716079130667951|-7.019240275830387
|
||||||
|
4.4663407033242635|7.820921124802398
|
||||||
|
-0.9461397216171825|-2.268509827925887
|
||||||
|
0.7903434862854866|1.9175815068397193
|
||||||
|
3.8535757506546116|7.181635305881261
|
||||||
|
7.510865431981255|9
|
||||||
|
8.472759898914282|9
|
||||||
|
4.81102121774129|8.119905041171236
|
||||||
|
0.6119775277993131|1.5048677561618617
|
||||||
|
6.160916013252335|8.870682501401078
|
||||||
|
-2.267475331473432|-4.886303925634437
|
||||||
|
4.570350303979643|7.915739207992933
|
||||||
|
-4.789794385999109|-8.10275347539899
|
||||||
|
5.187681431454301|8.396724748060004
|
||||||
|
-0.5811812745729741|-1.4324264394074762
|
||||||
|
3.0558380315345666|6.142699536706079
|
||||||
|
9.235585914584195|9
|
||||||
|
-2.3056636124195014|-4.952425569839573
|
||||||
|
1.9058576652738228|4.233620915550098
|
||||||
|
10.20359964129758|9
|
||||||
|
10.165290101721107|9
|
||||||
|
-0.5054341904585984|-1.252766010404542
|
||||||
|
9.307052700830864|9
|
||||||
|
5.898279569876797|8.777059364176374
|
||||||
|
10.281056304716651|9
|
||||||
|
11.149554175525285|9
|
||||||
|
7.634571026116863|9
|
||||||
|
-0.9131221479772256|-2.1948829006324804
|
||||||
|
4.845645605567663|8.147526822218584
|
||||||
|
6.987453821935967|8.99997108858661
|
||||||
|
-3.382169022673978|-6.595952881132698
|
||||||
|
9.006759501539955|9
|
||||||
|
-2.917640967426152|-5.938961276784989
|
||||||
|
6.350782423027912|8.922584670199067
|
||||||
|
2.174547558954961|4.723164870467597
|
||||||
|
-3.5730252209407194|-6.842910097412743
|
||||||
|
-4.828350688684618|-8.133784763632057
|
||||||
|
6.327188087412193|8.916855452500396
|
||||||
|
1.5573045387488502|3.5590529600956167
|
||||||
|
4.867964705711447|8.165098561942271
|
||||||
|
2.3254885752021517|4.9865405398961125
|
||||||
|
-4.166212066086695|-7.525037010417677
|
||||||
|
10.119976619088712|9
|
||||||
|
11.341363173618102|9
|
||||||
|
1.2653191427602408|2.959610595723893
|
||||||
|
2.636652095484383|5.5030766444373995
|
||||||
|
-4.938201971670087|-8.219202041089265
|
||||||
|
1.3624804212545136|3.1625583059867717
|
||||||
|
4.763837806160524|8.081555260930351
|
||||||
|
8.472816279240131|9
|
||||||
|
3.6700419222240885|6.963314546985604
|
||||||
|
8.285219769106265|9
|
||||||
|
11.080901133582135|9
|
||||||
|
-4.791094353970682|-8.103808624948126
|
||||||
|
1.3895836811712226|3.2185522156077093
|
||||||
|
11.657021585535695|9
|
||||||
|
6.020891662770357|8.82392085256544
|
||||||
|
-3.9578744205920198|-7.300188727183774
|
||||||
|
-0.9607123145827519|-2.3008783321409836
|
||||||
|
-4.114601305061886|-7.470821823290713
|
||||||
|
-1.9777032384570803|-0.4852354130407245
|
||||||
|
11.135855406531|1
|
||||||
|
-4.884084921202556|-0.9086306812105633
|
||||||
|
0.9137312153330788|0.24402718940385792
|
||||||
|
-4.15755500923055|-0.835112377029585
|
||||||
|
-2.794962360032754|-0.6391358866624223
|
||||||
|
0.712131468739349|0.19311651701187804
|
||||||
|
0.36951385710231577|0.1027888471192202
|
||||||
|
2.612295705136045|0.6071030820578042
|
||||||
|
9.259925904277322|1
|
||||||
|
-1.5780866550779296|-0.40005827918685644
|
||||||
|
8.684012091766938|1
|
||||||
|
9.556476939895022|1
|
||||||
|
3.322279952044809|0.7239668418136422
|
||||||
|
2.5472891331125584|0.5953748150184182
|
||||||
|
2.3739804015682466|0.5632641362229658
|
||||||
|
7.312422423029796|1
|
||||||
|
11.061772890916266|1
|
||||||
|
-3.0893944535752107|-0.6879013114341158
|
||||||
|
-1.347512762976796|-0.34794669459775074
|
||||||
|
1.7905827341876428|0.4461626887889001
|
||||||
|
7.31482415237757|1
|
||||||
|
8.172591957485094|1
|
||||||
|
0.9864195591417539|0.2619765363536151
|
||||||
|
-3.580562597410845|-0.7613764867300884
|
||||||
|
-0.5809326090517546|-0.15909334347887522
|
||||||
|
-1.1823346958437808|-0.30928102875136587
|
||||||
|
5.110017562257022|0.92710135479639
|
||||||
|
8.146887339196109|1
|
||||||
|
3.2190108597855307|0.7082473698281684
|
||||||
|
-3.3469561680638007|-0.7276585869786305
|
||||||
|
5.470008082396298|0.9522270353483132
|
||||||
|
6.16871332178753|0.9858971930331935
|
||||||
|
8.473191536875081|1
|
||||||
|
-3.9396085042397897|-0.8088572222995629
|
||||||
|
5.180256357055784|0.9324190423257982
|
||||||
|
-1.1025394668524964|-0.29020325020341964
|
||||||
|
2.54383643673855|0.5947470672951227
|
||||||
|
6.16948876265899|0.9859234915234756
|
||||||
|
11.003077744454764|1
|
||||||
|
-3.716079130667951|-0.7799155862033762
|
||||||
|
4.4663407033242635|0.8689912360891554
|
||||||
|
-0.9461397216171825|-0.2520566475473207
|
||||||
|
0.7903434862854866|0.2130646118710799
|
||||||
|
3.8535757506546116|0.7979594784312514
|
||||||
|
7.510865431981255|1
|
||||||
|
8.472759898914282|1
|
||||||
|
4.81102121774129|0.9022116712412485
|
||||||
|
0.6119775277993131|0.1672075284624291
|
||||||
|
6.160916013252335|0.9856313890445642
|
||||||
|
-2.267475331473432|-0.5429226584038265
|
||||||
|
4.570350303979643|0.8795265786658812
|
||||||
|
-4.789794385999109|-0.9003059417109989
|
||||||
|
5.187681431454301|0.9329694164511118
|
||||||
|
-0.5811812745729741|-0.15915849326749737
|
||||||
|
3.0558380315345666|0.6825221707451199
|
||||||
|
9.235585914584195|1
|
||||||
|
-2.3056636124195014|-0.5502695077599524
|
||||||
|
1.9058576652738228|0.4704023239500109
|
||||||
|
10.20359964129758|1
|
||||||
|
10.165290101721107|1
|
||||||
|
-0.5054341904585984|-0.1391962233782824
|
||||||
|
9.307052700830864|1
|
||||||
|
5.898279569876797|0.9752288182418194
|
||||||
|
10.281056304716651|1
|
||||||
|
11.149554175525285|1
|
||||||
|
7.634571026116863|1
|
||||||
|
-0.9131221479772256|-0.2438758778480534
|
||||||
|
4.845645605567663|0.9052807580242874
|
||||||
|
6.987453821935967|0.9999967876207345
|
||||||
|
-3.382169022673978|-0.7328836534591885
|
||||||
|
9.006759501539955|1
|
||||||
|
-2.917640967426152|-0.6598845863094431
|
||||||
|
6.350782423027912|0.9913982966887855
|
||||||
|
2.174547558954961|0.5247960967186219
|
||||||
|
-3.5730252209407194|-0.7603233441569714
|
||||||
|
-4.828350688684618|-0.9037538626257844
|
||||||
|
6.327188087412193|0.9907617169444886
|
||||||
|
1.5573045387488502|0.395450328899513
|
||||||
|
4.867964705711447|0.9072331735491413
|
||||||
|
2.3254885752021517|0.554060059988457
|
||||||
|
-4.166212066086695|-0.8361152233797421
|
||||||
|
10.119976619088712|1
|
||||||
|
11.341363173618102|1
|
||||||
|
1.2653191427602408|0.3288456217470992
|
||||||
|
2.636652095484383|0.6114529604930443
|
||||||
|
-4.938201971670087|-0.9132446712321405
|
||||||
|
1.3624804212545136|0.35139536733186355
|
||||||
|
4.763837806160524|0.8979505845478166
|
||||||
|
8.472816279240131|1
|
||||||
|
3.6700419222240885|0.7737016163317338
|
||||||
|
8.285219769106265|1
|
||||||
|
11.080901133582135|1
|
||||||
|
-4.791094353970682|-0.9004231805497918
|
||||||
|
1.3895836811712226|0.357616912845301
|
||||||
|
11.657021585535695|1
|
||||||
|
6.020891662770357|0.980435650285049
|
||||||
|
-3.9578744205920198|-0.811132080798197
|
||||||
|
-0.9607123145827519|-0.25565314801566486
|
||||||
|
-4.114601305061886|-0.830091313698968
|
||||||
|
-1.9777032384570803|-6.3462889140668715
|
||||||
|
11.135855406531|10
|
||||||
|
-4.884084921202556|-9.994625477802952
|
||||||
|
0.9137312153330788|3.320962967782689
|
||||||
|
-4.15755500923055|-9.716114575010984
|
||||||
|
-2.794962360032754|-8.05512360253107
|
||||||
|
0.712131468739349|2.645673383449851
|
||||||
|
0.36951385710231577|1.4234392321730107
|
||||||
|
2.612295705136045|7.71954728011529
|
||||||
|
9.259925904277322|10
|
||||||
|
-1.5780866550779296|-5.316203623937699
|
||||||
|
8.684012091766938|10
|
||||||
|
9.556476939895022|10
|
||||||
|
3.322279952044809|8.874102176275693
|
||||||
|
2.5472891331125584|7.593683761380902
|
||||||
|
2.3739804015682466|7.241608427460934
|
||||||
|
7.312422423029796|10
|
||||||
|
11.061772890916266|10
|
||||||
|
-3.0893944535752107|-8.539834578388334
|
||||||
|
-1.347512762976796|-4.66373479335304
|
||||||
|
1.7905827341876428|5.879856325562214
|
||||||
|
7.31482415237757|10
|
||||||
|
8.172591957485094|10
|
||||||
|
0.9864195591417539|3.556468817904051
|
||||||
|
-3.580562597410845|-9.194078984052382
|
||||||
|
-0.5809326090517546|-2.188737357703147
|
||||||
|
-1.1823346958437808|-4.170172650176721
|
||||||
|
5.110017562257022|10
|
||||||
|
8.146887339196109|10
|
||||||
|
3.2190108597855307|8.731231072975252
|
||||||
|
-3.3469561680638007|-8.906978435879076
|
||||||
|
5.470008082396298|10
|
||||||
|
6.16871332178753|10
|
||||||
|
8.473191536875081|10
|
||||||
|
-3.9396085042397897|-9.550227950287772
|
||||||
|
5.180256357055784|10
|
||||||
|
-1.1025394668524964|-3.9239205570230307
|
||||||
|
2.54383643673855|7.586904220202727
|
||||||
|
6.16948876265899|10
|
||||||
|
11.003077744454764|10
|
||||||
|
-3.716079130667951|-9.340618880517454
|
||||||
|
4.4663407033242635|9.886083102028623
|
||||||
|
-0.9461397216171825|-3.426486737339994
|
||||||
|
0.7903434862854866|2.9115168146163874
|
||||||
|
3.8535757506546116|9.474284576205147
|
||||||
|
7.510865431981255|10
|
||||||
|
8.472759898914282|10
|
||||||
|
4.81102121774129|9.985714807942406
|
||||||
|
0.6119775277993131|2.2981035133847088
|
||||||
|
6.160916013252335|10
|
||||||
|
-2.267475331473432|-7.013323574357508
|
||||||
|
4.570350303979643|9.926160455483846
|
||||||
|
-4.789794385999109|-9.982325439937002
|
||||||
|
5.187681431454301|10
|
||||||
|
-0.5811812745729741|-2.1896164287261897
|
||||||
|
3.0558380315345666|8.488093696149043
|
||||||
|
9.235585914584195|10
|
||||||
|
-2.3056636124195014|-7.096220572223867
|
||||||
|
1.9058576652738228|6.170513284982096
|
||||||
|
10.20359964129758|10
|
||||||
|
10.165290101721107|10
|
||||||
|
-0.5054341904585984|-1.919551273480578
|
||||||
|
9.307052700830864|10
|
||||||
|
5.898279569876797|10
|
||||||
|
10.281056304716651|10
|
||||||
|
11.149554175525285|10
|
||||||
|
7.634571026116863|10
|
||||||
|
-0.9131221479772256|-3.3189717690582854
|
||||||
|
4.845645605567663|9.990469888367771
|
||||||
|
6.987453821935967|10
|
||||||
|
-3.382169022673978|-8.953049171521734
|
||||||
|
9.006759501539955|10
|
||||||
|
-2.917640967426152|-8.265512343783243
|
||||||
|
6.350782423027912|10
|
||||||
|
2.174547558954961|6.806727401357052
|
||||||
|
-3.5730252209407194|-9.18549719197149
|
||||||
|
-4.828350688684618|-9.988214605569983
|
||||||
|
6.327188087412193|10
|
||||||
|
1.5573045387488502|5.259139184432294
|
||||||
|
4.867964705711447|9.993026672424854
|
||||||
|
2.3254885752021517|7.138795455450313
|
||||||
|
-4.166212066086695|-9.721919072504232
|
||||||
|
10.119976619088712|10
|
||||||
|
11.341363173618102|10
|
||||||
|
1.2653191427602408|4.420863557826759
|
||||||
|
2.636652095484383|7.765834672888657
|
||||||
|
-4.938201971670087|-9.998472401477814
|
||||||
|
1.3624804212545136|4.707380525697304
|
||||||
|
4.763837806160524|9.97769096728037
|
||||||
|
8.472816279240131|10
|
||||||
|
3.6700419222240885|9.29248460454344
|
||||||
|
8.285219769106265|10
|
||||||
|
11.080901133582135|10
|
||||||
|
-4.791094353970682|-9.98254337242283
|
||||||
|
1.3895836811712226|4.785957601893944
|
||||||
|
11.657021585535695|10
|
||||||
|
6.020891662770357|10
|
||||||
|
-3.9578744205920198|-9.56558971069743
|
||||||
|
-0.9607123145827519|-3.473661997774628
|
||||||
|
-4.114601305061886|-9.686427660400753
|
||||||
62
TEMA7/testing.py
Обычный файл
@@ -0,0 +1,62 @@
|
|||||||
|
"""
|
||||||
|
* Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки:
|
||||||
|
на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
|
||||||
|
|
||||||
|
* Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением.
|
||||||
|
Гистограмма при выводе на экран представляется в виде
|
||||||
|
|
||||||
|
таблицы: границы интервала, число элементов выборки в интервале.
|
||||||
|
|
||||||
|
Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины.
|
||||||
|
|
||||||
|
Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
|
||||||
|
|
||||||
|
* Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
|
||||||
|
Y=b1+b2*X
|
||||||
|
и имеющую аргументы b1, b2 и X.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from matplotlib.pyplot import *
|
||||||
|
from random import *
|
||||||
|
def delaySignal (signal, T):
|
||||||
|
""""Расчёт выхода y(t) для устройства задержки: signal - сигнал, T - задаваемая задержка времени"""
|
||||||
|
output=[]
|
||||||
|
for i in range(len(signal)):
|
||||||
|
if i < T:
|
||||||
|
output.append(0)
|
||||||
|
else:
|
||||||
|
output.append(signal[i-T])
|
||||||
|
return output
|
||||||
|
|
||||||
|
#print(delaySignal([random() for _ in range(randint(1,10))], randint(1,5)))
|
||||||
|
|
||||||
|
def histogram(sample, number):
|
||||||
|
bins = (max(sample) - min(sample))/number
|
||||||
|
intervals = []
|
||||||
|
for i in range(number):
|
||||||
|
intervals.append((min(sample)+i*bins, min(sample)+(i+1)*bins))
|
||||||
|
objectInIntervals = [0]*number
|
||||||
|
for objects in sample:
|
||||||
|
objectInterval = int((objects - min(sample))/bins)
|
||||||
|
if objectInterval == number:
|
||||||
|
objectInterval -=1
|
||||||
|
objectInIntervals[objectInterval] +=1
|
||||||
|
print("Границы интервалов | Число элементов")
|
||||||
|
for i in range(number):
|
||||||
|
lowerInterval, upperInterval = intervals[i]
|
||||||
|
print(lowerInterval, "-", upperInterval, " |", objectInIntervals[i])
|
||||||
|
hist(sample, number)
|
||||||
|
xlabel("Значения элементов выборки")
|
||||||
|
ylabel("Количество элементов в интервале")
|
||||||
|
show()
|
||||||
|
return objectInIntervals
|
||||||
|
|
||||||
|
|
||||||
|
a = list(range(1, 8))
|
||||||
|
b = list(range(1, 9))
|
||||||
|
histogram(a, 4)
|
||||||
|
histogram(b, 3)
|
||||||
|
|
||||||
|
|
||||||
|
lineal_regression = lambda b1, b2, X: b1+b2*X
|
||||||
|
#print(lineal_regression(3,2,5))
|
||||||
14
TEMA7/vhod_and_vyhod.md
Обычный файл
2
TEMA8/MM0.py
Обычный файл
@@ -0,0 +1,2 @@
|
|||||||
|
import MM2
|
||||||
|
print('y=',MM2.vyhod)
|
||||||
22
TEMA8/MM1.py
Обычный файл
@@ -0,0 +1,22 @@
|
|||||||
|
def realdvig(xtt,kk1,TT,yti1,ytin1):
|
||||||
|
#Модель реального двигателя
|
||||||
|
yp=kk1*xtt #усилитель
|
||||||
|
yti1=yp+yti1 #Интегратор
|
||||||
|
ytin1=(yti1+TT*ytin1)/(TT+1)
|
||||||
|
return [yti1,ytin1]
|
||||||
|
|
||||||
|
def tahogen(xtt,kk2,yti2):
|
||||||
|
#Модель тахогенератора
|
||||||
|
yp=kk2*xtt #усилитель
|
||||||
|
yti2=yp+yti2 #интегратор
|
||||||
|
return yti2
|
||||||
|
|
||||||
|
def nechus(xtt,gran):
|
||||||
|
#зона нечувствит
|
||||||
|
if xtt<gran and xtt>(-gran):
|
||||||
|
ytt=0
|
||||||
|
elif xtt>=gran:
|
||||||
|
ytt=xtt-gran
|
||||||
|
elif xtt<=(-gran):
|
||||||
|
ytt=xtt+gran
|
||||||
|
return ytt
|
||||||
23
TEMA8/MM2.py
Обычный файл
@@ -0,0 +1,23 @@
|
|||||||
|
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
|
||||||
|
k1=float(znach[0])
|
||||||
|
T=float(znach[1])
|
||||||
|
k2=float(znach[2])
|
||||||
|
Xm=float(znach[3])
|
||||||
|
A=float(znach[4])
|
||||||
|
F=float(znach[5])
|
||||||
|
N=int(znach[6])
|
||||||
|
|
||||||
|
import math
|
||||||
|
vhod=[]
|
||||||
|
for i in range(N):
|
||||||
|
vhod.append(A*math.sin((2*i*math.pi)/F))
|
||||||
|
|
||||||
|
import MM1 as mod
|
||||||
|
yi1=0;yin1=0;yi2=0
|
||||||
|
vyhod=[]
|
||||||
|
for xt in vhod:
|
||||||
|
xt1=xt-yi2 #отрицательная обратная связь
|
||||||
|
[yi1,yin1]=mod.realdvig(xt1,k1,T,yi1,yin1)
|
||||||
|
yi2=mod.tahogen(yin1,k2,yi2)
|
||||||
|
yt=mod.nechus(yin1,Xm)
|
||||||
|
vyhod.append(yt)
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#Модуль Mod0
|
#Модуль Mod0
|
||||||
import Mod1
|
import Mod1
|
||||||
print('perm1=',Mod1.perm1)
|
print('perm1=',Mod1.perm1*2)
|
||||||
from Mod2 import alpha as al
|
from Mod2 import alpha as al
|
||||||
tt=al()
|
tt=al()
|
||||||
print('tt=',tt)
|
print('tt=',tt*2)
|
||||||
from Mod2 import beta
|
from Mod2 import beta
|
||||||
qq=beta(float(tt))
|
qq=beta(float(tt))
|
||||||
print('qq=',qq)
|
print('qq=',qq*2)
|
||||||
|
|||||||
4
TEMA8/Module1.py
Обычный файл
@@ -0,0 +1,4 @@
|
|||||||
|
def numbers_reading(file_name = str):
|
||||||
|
with open(file_name) as f:
|
||||||
|
fin_list = list(map(float, f.read().split()))
|
||||||
|
return fin_list
|
||||||
17
TEMA8/Module2.py
Обычный файл
@@ -0,0 +1,17 @@
|
|||||||
|
import math
|
||||||
|
def correlation(l1, l2):
|
||||||
|
min_lenght = min(len(l1), len(l2))
|
||||||
|
sum1 = sum(l1[:min_lenght])
|
||||||
|
sum2 = sum(l2[:min_lenght])
|
||||||
|
sum1sq = sum(num ** 2 for num in l1)
|
||||||
|
sum2sq = sum(num ** 2 for num in l2)
|
||||||
|
sum12 = sum(x * y for x, y in zip(l1, l2))
|
||||||
|
|
||||||
|
part1 = min_lenght * sum12 - sum1 * sum2
|
||||||
|
part2 = math.sqrt((min_lenght * sum1sq - sum1 ** 2) * (min_lenght * sum2sq - sum2 ** 2))
|
||||||
|
if part2 == 0:
|
||||||
|
print("Деление на ноль")
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
corr = part1 / part2
|
||||||
|
return corr
|
||||||
18
TEMA8/Module3.py
Обычный файл
@@ -0,0 +1,18 @@
|
|||||||
|
from Module1 import numbers_reading
|
||||||
|
from Module2 import correlation
|
||||||
|
import os
|
||||||
|
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8")
|
||||||
|
|
||||||
|
file1 = input("Введите имя первого файла: ")
|
||||||
|
file2 = input("Введите имя второго файла: ")
|
||||||
|
|
||||||
|
arr1 = numbers_reading(file1)
|
||||||
|
arr2 = numbers_reading(file2)
|
||||||
|
|
||||||
|
if arr1 is None or arr2 is None:
|
||||||
|
print("Не удалось считать данные из файлов.")
|
||||||
|
else:
|
||||||
|
corr = correlation(arr1, arr2)
|
||||||
|
if corr is not None:
|
||||||
|
print(f"Коэффициент корреляции: {corr:.2f}")
|
||||||
13
TEMA8/ModuleIKZ.py
Обычный файл
@@ -0,0 +1,13 @@
|
|||||||
|
import numpy as np
|
||||||
|
import os
|
||||||
|
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8")
|
||||||
|
|
||||||
|
def generate_sinusoidal_signal(amplitude, period, phase, num_samples, filename):
|
||||||
|
n = np.arange(num_samples)
|
||||||
|
omega = 2 * np.pi / period #угловая частота
|
||||||
|
signal = amplitude * np.sin(omega * n + phase)
|
||||||
|
with open(filename, 'w+') as file:
|
||||||
|
for value in signal:
|
||||||
|
file.write(f"{value}\n") # 6 знаков после запятой
|
||||||
|
return signal
|
||||||
3
TEMA8/numbers.txt
Обычный файл
@@ -0,0 +1,3 @@
|
|||||||
|
1 2 3 4 2 34 4 12 4.5 6 4 3.2 4 56 3 5 6
|
||||||
|
1 2.3 44 3 3 4 67 5 5 6 78 4 3 5
|
||||||
|
3 4 5 2 3 5
|
||||||
2
TEMA8/numbers2.txt
Обычный файл
@@ -0,0 +1,2 @@
|
|||||||
|
1 2 3 7 3 6 43.7 5 3 1 3345.0 12 512 34
|
||||||
|
1 3 4 2.2 3 4 67 74 2 46 42 45 7 8.3
|
||||||
172
TEMA8/report.md
Обычный файл
@@ -0,0 +1,172 @@
|
|||||||
|
# Отчет по теме 8
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 8. Модули и структурирование программы
|
||||||
|
## 2. Создание и использование модулей в среде Python.
|
||||||
|
|
||||||
|
## 2.1. Запуск модуля на выполнение путем его импорта.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import os,sys,imp
|
||||||
|
__main__:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
|
||||||
|
>>> os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8")
|
||||||
|
>>> import Mod1
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
>>> Mod1.perm1
|
||||||
|
'5'
|
||||||
|
>>> import Mod1
|
||||||
|
>>> imp.reload(Mod1)
|
||||||
|
Mod1:Введите значение = 3
|
||||||
|
Mod1:Значение perm1= 3
|
||||||
|
<module 'Mod1' from 'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8\\Mod1.py'>
|
||||||
|
>>> Mod1.perm1
|
||||||
|
'3'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.2. Импортированные модули заносятся в словарь – значение атрибута sys.modules.
|
||||||
|
```py
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', '__main__', '_abc', '_bootlocale', '_codecs', '_collections', '_collections_abc', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_operator', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_thread', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'atexit', 'builtins', 'codecs', 'collections', 'collections.abc', 'contextlib', 'copyreg', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'functools', 'genericpath', 'heapq', 'imp', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'mpl_toolkits', 'msvcrt', 'nt', 'ntpath', 'operator', 'os', 'os.path', 'platform', 'pywin32_bootstrap', 'pywin32_system32', 're', 'reprlib', 'select', 'selectors', 'signal', 'site', 'socket', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'subprocess', 'sys', 'threading', 'time', 'token', 'tokenize', 'traceback', 'types', 'warnings', 'winreg', 'zipimport', 'zope']
|
||||||
|
>>> sys.modules.pop('Mod1')
|
||||||
|
<module 'Mod1' from 'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8\\Mod1.py'>
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['__main__', '_abc', '_bootlocale', '_codecs', '_collections', '_collections_abc', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_operator', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_thread', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc',
|
||||||
|
'atexit', 'builtins', 'codecs', 'collections', 'collections.abc', 'contextlib', 'copyreg', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'functools', 'genericpath', 'heapq', 'imp', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'mpl_toolkits', 'msvcrt', 'nt', 'ntpath', 'operator', 'os', 'os.path', 'platform', 'pywin32_bootstrap', 'pywin32_system32', 're', 'reprlib', 'select', 'selectors', 'signal', 'site', 'socket', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'subprocess', 'sys', 'threading', 'time', 'token', 'tokenize', 'traceback', 'types', 'warnings', 'winreg', 'zipimport', 'zope']
|
||||||
|
>>> import Mod1
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', '__main__', '_abc', '_bootlocale', '_codecs', '_collections', '_collections_abc', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_operator', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_thread', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'atexit', 'builtins', 'codecs', 'collections', 'collections.abc', 'contextlib', 'copyreg', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'functools', 'genericpath', 'heapq', 'imp', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'mpl_toolkits', 'msvcrt', 'nt', 'ntpath', 'operator', 'os', 'os.path', 'platform', 'pywin32_bootstrap', 'pywin32_system32', 're', 'reprlib', 'select', 'selectors', 'signal', 'site', 'socket', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'subprocess', 'sys', 'threading', 'time', 'token', 'tokenize', 'traceback', 'types', 'warnings', 'winreg', 'zipimport', 'zope']
|
||||||
|
>>> sys.modules.pop('Mod1')
|
||||||
|
<module 'Mod1' from 'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8\\Mod1.py'>
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['__main__', '_abc', '_bootlocale', '_codecs', '_collections', '_collections_abc', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_operator', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_thread', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc',
|
||||||
|
'atexit', 'builtins', 'codecs', 'collections', 'collections.abc', 'contextlib', 'copyreg', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'functools', 'genericpath', 'heapq', 'imp', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'mpl_toolkits', 'msvcrt', 'nt', 'ntpath', 'operator', 'os', 'os.path', 'platform', 'pywin32_bootstrap', 'pywin32_system32', 're', 'reprlib', 'select', 'selectors', 'signal', 'site', 'socket', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'subprocess', 'sys', 'threading', 'time', 'token', 'tokenize', 'traceback', 'types', 'warnings', 'winreg', 'zipimport', 'zope']
|
||||||
|
```
|
||||||
|
## 2.3. Запуск модуля на выполнение с помощью функции exec().
|
||||||
|
```py
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 5
|
||||||
|
Mod1:Значение perm1= 5
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 3
|
||||||
|
Mod1:Значение perm1= 3
|
||||||
|
>>> perm1
|
||||||
|
'3'
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 6
|
||||||
|
Mod1:Значение perm1= 6
|
||||||
|
>>> perm1
|
||||||
|
'6'
|
||||||
|
>>> exec(open('Mod1.py').read())
|
||||||
|
Mod1:Введите значение = 9
|
||||||
|
Mod1:Значение perm1= 9
|
||||||
|
>>> perm1
|
||||||
|
'9'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2.4. Использование инструкции from … import …
|
||||||
|
|
||||||
|
Пример 1.
|
||||||
|
```py
|
||||||
|
>>> from Mod1 import perm1
|
||||||
|
Mod1:Введите значение = 3
|
||||||
|
Mod1:Значение perm1= 3
|
||||||
|
>>> perm1
|
||||||
|
'3'
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', '__main__', '_abc', '_bootlocale', '_codecs', '_collections', '_collections_abc', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_operator', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_thread', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'atexit', 'builtins', 'codecs', 'collections', 'collections.abc', 'contextlib', 'copyreg', 'encodings', 'encodings.aliases', 'encodings.cp1251', 'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'functools', 'genericpath', 'heapq', 'imp', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'mpl_toolkits', 'msvcrt', 'nt', 'ntpath', 'operator', 'os', 'os.path', 'platform', 'pywin32_bootstrap', 'pywin32_system32', 're', 'reprlib', 'select', 'selectors', 'signal', 'site', 'socket', 'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'subprocess', 'sys', 'threading', 'time', 'token', 'tokenize', 'traceback', 'types', 'warnings', 'winreg', 'zipimport', 'zope'
|
||||||
|
```
|
||||||
|
Mod1 появился в памяти. Программа вызвалась из модуля. perm1 имеет заданное значение 3.
|
||||||
|
|
||||||
|
Пример 2.
|
||||||
|
```py
|
||||||
|
>>> from Mod2 import beta
|
||||||
|
>>> g = beta(2)
|
||||||
|
****BETA****
|
||||||
|
>>> g
|
||||||
|
535.4916555247646
|
||||||
|
>>> print(sorted(sys.modules.keys()))
|
||||||
|
['Mod1', 'Mod2', '__main__', '_abc', '_bootlocale', '_codecs', '_collections', '_collections_abc', '_frozen_importlib', '_frozen_importlib_external', '_functools', '_heapq', '_imp', '_io', '_locale', '_operator', '_signal', '_sitebuiltins', '_socket', '_sre', '_stat', '_thread', '_warnings', '_weakref', '_weakrefset', '_winapi', 'abc', 'atexit', 'builtins', 'codecs', 'collections', 'collections.abc', 'contextlib', 'copyreg', 'encodings', 'encodings.aliases', 'encodings.cp1251',
|
||||||
|
'encodings.latin_1', 'encodings.utf_8', 'enum', 'errno', 'functools', 'genericpath', 'heapq', 'imp', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib.abc', 'importlib.machinery', 'importlib.util', 'io', 'itertools', 'keyword', 'linecache', 'marshal', 'math', 'mpl_toolkits', 'msvcrt', 'nt', 'ntpath', 'operator', 'os', 'os.path', 'platform', 'pywin32_bootstrap', 'pywin32_system32', 're', 'reprlib', 'select', 'selectors', 'signal', 'site', 'socket',
|
||||||
|
'sre_compile', 'sre_constants', 'sre_parse', 'stat', 'subprocess', 'sys', 'threading', 'time', 'token', 'tokenize', 'traceback', 'types', 'warnings', 'winreg', 'zipimport', 'zope']
|
||||||
|
>>> alpha()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'alpha' is not defined
|
||||||
|
>>> from Mod2 import alpha as al
|
||||||
|
>>> al()
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
'3'
|
||||||
|
>>> del al, beta
|
||||||
|
>>> from Mod2 import alpha as al, beta as bt
|
||||||
|
>>> del al, bt
|
||||||
|
>>> from Mod2 import *
|
||||||
|
>>> tt=alpha()
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=0.12
|
||||||
|
>>> uu=beta(float(tt))
|
||||||
|
****BETA****
|
||||||
|
>>> uu
|
||||||
|
1.4578913609506803
|
||||||
|
```
|
||||||
|
## 3. Создание многомодульных программ.
|
||||||
|
## 3.1. Пример простой многомодульной программы.
|
||||||
|
```py
|
||||||
|
>>> import Mod0
|
||||||
|
perm1= 3
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
tt= 3
|
||||||
|
****BETA****
|
||||||
|
qq= 12391.647807916694
|
||||||
|
>>> Mod0.tt;Mod0.qq;Mod0.Mod1.perm1
|
||||||
|
'3'
|
||||||
|
12391.647807916694
|
||||||
|
'3'
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 3.2. Еще пример.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> import MM0
|
||||||
|
k1,T,k2,Xm,A,F,N=8,5,3,10,2,0.5,1000
|
||||||
|
y= [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.0183086292055208, 0, 26.39885775889784, -36.65029553691161, -34.19982663883278, 196.29963397615063, -151.6919482160481, -388.32493988337274, 1057.8073200868555, -308.3186572590445, -2798.051869998873, 5004.749701095182, 1362.331454336744, -17303.76245797908, 20708.797073656922, 23131.712847291765, -96666.92589990808,...]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3.3. Области действия объектов в модулях.
|
||||||
|
```py
|
||||||
|
>>> from Mod2 import alpha as al, beta as bt
|
||||||
|
>>> al(bt())
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
TypeError: beta() missing 1 required positional argument: 'q'
|
||||||
|
>>> bt(al())
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
****BETA****
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs\TEMA8\Mod2.py", line 9, in beta
|
||||||
|
expi=q*math.pi
|
||||||
|
TypeError: can't multiply sequence by non-int of type 'float'
|
||||||
|
>>> t
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 't' is not defined
|
||||||
|
>>> expi
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
NameError: name 'expi' is not defined
|
||||||
|
>>> import Mod0
|
||||||
|
perm1= 55
|
||||||
|
****ALPHA****
|
||||||
|
Значение t=3
|
||||||
|
tt= 33
|
||||||
|
****BETA****
|
||||||
|
qq= 24783.295615833387
|
||||||
|
```
|
||||||
50
TEMA8/result.txt
Обычный файл
@@ -0,0 +1,50 @@
|
|||||||
|
1.4142135623730951
|
||||||
|
1.7820130483767356
|
||||||
|
1.9753766811902755
|
||||||
|
1.9753766811902755
|
||||||
|
1.7820130483767358
|
||||||
|
1.4142135623730951
|
||||||
|
0.9079809994790937
|
||||||
|
0.31286893008046196
|
||||||
|
-0.31286893008046146
|
||||||
|
-0.9079809994790933
|
||||||
|
-1.414213562373095
|
||||||
|
-1.7820130483767356
|
||||||
|
-1.9753766811902753
|
||||||
|
-1.9753766811902755
|
||||||
|
-1.782013048376736
|
||||||
|
-1.4142135623730954
|
||||||
|
-0.9079809994790939
|
||||||
|
-0.3128689300804622
|
||||||
|
0.31286893008046124
|
||||||
|
0.907980999479093
|
||||||
|
1.4142135623730947
|
||||||
|
1.7820130483767356
|
||||||
|
1.9753766811902753
|
||||||
|
1.9753766811902758
|
||||||
|
1.7820130483767351
|
||||||
|
1.4142135623730967
|
||||||
|
0.9079809994790926
|
||||||
|
0.3128689300804642
|
||||||
|
-0.31286893008046274
|
||||||
|
-0.9079809994790913
|
||||||
|
-1.4142135623730958
|
||||||
|
-1.7820130483767345
|
||||||
|
-1.9753766811902755
|
||||||
|
-1.9753766811902758
|
||||||
|
-1.7820130483767354
|
||||||
|
-1.414213562373097
|
||||||
|
-0.9079809994790928
|
||||||
|
-0.31286893008046446
|
||||||
|
0.3128689300804625
|
||||||
|
0.907980999479091
|
||||||
|
1.4142135623730956
|
||||||
|
1.7820130483767345
|
||||||
|
1.9753766811902755
|
||||||
|
1.975376681190276
|
||||||
|
1.7820130483767354
|
||||||
|
1.4142135623730971
|
||||||
|
0.907980999479093
|
||||||
|
0.3128689300804647
|
||||||
|
-0.3128689300804623
|
||||||
|
-0.9079809994790908
|
||||||
66
TEMA8/task.md
Обычный файл
@@ -0,0 +1,66 @@
|
|||||||
|
# Общее контрольное задание по теме 8
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
Общее контрольное задание.
|
||||||
|
Разработайте программу, состоящую из трех модулей:
|
||||||
|
- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколь-ко на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полу-ченный список должен возвращаться в вызывающую программу.
|
||||||
|
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
|
||||||
|
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
|
||||||
|
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
```py
|
||||||
|
|
||||||
|
#Module 1
|
||||||
|
|
||||||
|
def numbers_reading(file_name = str):
|
||||||
|
with open(file_name) as f:
|
||||||
|
fin_list = list(map(float, f.read().split()))
|
||||||
|
return fin_list
|
||||||
|
|
||||||
|
#Module 2
|
||||||
|
import math
|
||||||
|
def correlation(l1, l2):
|
||||||
|
min_lenght = min(len(l1), len(l2))
|
||||||
|
sum1 = sum(l1[:min_lenght])
|
||||||
|
sum2 = sum(l2[:min_lenght])
|
||||||
|
sum1sq = sum(num ** 2 for num in l1)
|
||||||
|
sum2sq = sum(num ** 2 for num in l2)
|
||||||
|
sum12 = sum(x * y for x, y in zip(l1, l2))
|
||||||
|
|
||||||
|
part1 = min_lenght * sum12 - sum1 * sum2
|
||||||
|
part2 = math.sqrt((min_lenght * sum1sq - sum1 ** 2) * (min_lenght * sum2sq - sum2 ** 2))
|
||||||
|
if part2 == 0:
|
||||||
|
print("Деление на ноль")
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
corr = part1 / part2
|
||||||
|
return corr
|
||||||
|
|
||||||
|
#Module3
|
||||||
|
from Module1 import numbers_reading
|
||||||
|
from Module2 import correlation
|
||||||
|
import os
|
||||||
|
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8")
|
||||||
|
|
||||||
|
file1 = input("Введите имя первого файла: ")
|
||||||
|
file2 = input("Введите имя второго файла: ")
|
||||||
|
|
||||||
|
arr1 = numbers_reading(file1)
|
||||||
|
arr2 = numbers_reading(file2)
|
||||||
|
|
||||||
|
if arr1 is None or arr2 is None:
|
||||||
|
print("Не удалось считать данные из файлов.")
|
||||||
|
else:
|
||||||
|
corr = correlation(arr1, arr2)
|
||||||
|
if corr is not None:
|
||||||
|
print(f"Коэффициент корреляции: {corr:.2f}")
|
||||||
|
#Проверка
|
||||||
|
import Module3
|
||||||
|
>>> Введите имя первого файла: numbers.txt
|
||||||
|
>>> Введите имя второго файла: numbers2.txt
|
||||||
|
Коэффициент корреляции: -0.09
|
||||||
|
```
|
||||||
17
TEMA8/task.py
Обычный файл
@@ -0,0 +1,17 @@
|
|||||||
|
'''
|
||||||
|
Общее контрольное задание.
|
||||||
|
Разработайте программу, состоящую из трех модулей:
|
||||||
|
- Модуль 1 содержит функцию считывания числового списка
|
||||||
|
из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке
|
||||||
|
с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу.
|
||||||
|
- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков).
|
||||||
|
Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
|
||||||
|
- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и
|
||||||
|
считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2
|
||||||
|
и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
|
||||||
|
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
|
||||||
|
'''
|
||||||
|
|
||||||
|
from os import chdir
|
||||||
|
import Module3
|
||||||
|
|
||||||
42
TEMA8/test.md
Обычный файл
@@ -0,0 +1,42 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 8
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
По указанному варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||||
|
## Задание 1
|
||||||
|
1. Разработайте функцию с 5 аргументами, создающую последовательность отсчетов синусоидального сигнала с заданными параметрами: амплитуда, период, фаза, число отсчетов (аргу-менты функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
```py
|
||||||
|
#ModuleIZK
|
||||||
|
import numpy as np
|
||||||
|
import os
|
||||||
|
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8")
|
||||||
|
|
||||||
|
def generate_sinusoidal_signal(amplitude, period, phase, num_samples, filename):
|
||||||
|
n = np.arange(num_samples)
|
||||||
|
omega = 2 * np.pi / period #угловая частота
|
||||||
|
signal = amplitude * np.sin(omega * n + phase)
|
||||||
|
with open(filename, 'w+') as file:
|
||||||
|
for value in signal:
|
||||||
|
file.write(f"{value}\n") # 6 знаков после запятой
|
||||||
|
return signal
|
||||||
|
#Проверка
|
||||||
|
|
||||||
|
from ModuleIKZ import generate_sinusoidal_signal
|
||||||
|
|
||||||
|
lst = generate_sinusoidal_signal(2.0, 20, np.pi/4, 50, filename="result.txt")
|
||||||
|
print(lst)
|
||||||
|
>>> [ 1.41421356 1.78201305 1.97537668 1.97537668 1.78201305 1.41421356
|
||||||
|
0.907981 0.31286893 -0.31286893 -0.907981 -1.41421356 -1.78201305
|
||||||
|
-1.97537668 -1.97537668 -1.78201305 -1.41421356 -0.907981 -0.31286893
|
||||||
|
0.31286893 0.907981 1.41421356 1.78201305 1.97537668 1.97537668
|
||||||
|
1.78201305 1.41421356 0.907981 0.31286893 -0.31286893 -0.907981
|
||||||
|
-1.41421356 -1.78201305 -1.97537668 -1.97537668 -1.78201305 -1.41421356
|
||||||
|
-0.907981 -0.31286893 0.31286893 0.907981 1.41421356 1.78201305
|
||||||
|
1.97537668 1.97537668 1.78201305 1.41421356 0.907981 0.31286893
|
||||||
|
-0.31286893 -0.907981 ]
|
||||||
|
|
||||||
|
```
|
||||||
|
Полученный файл [result.txt](result.txt)
|
||||||
31
TEMA8/test.py
Обычный файл
@@ -0,0 +1,31 @@
|
|||||||
|
'''
|
||||||
|
По указанному варианту контрольного задания обратитесь к индивидуальному заданию с таким номером в теме 7, разработайте функцию,
|
||||||
|
на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания
|
||||||
|
исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||||
|
## Задание 1
|
||||||
|
1. Разработайте функцию с 5 аргументами, создающую последовательность отсчетов синусоидального сигнала
|
||||||
|
с заданными параметрами: амплитуда, период, фаза, число отсчетов (аргументы функции). Сигнал должен быть записан
|
||||||
|
в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
'''
|
||||||
|
import numpy as np
|
||||||
|
#ModuleIKZ
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import os
|
||||||
|
|
||||||
|
os.chdir("C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA8")
|
||||||
|
|
||||||
|
def generate_sinusoidal_signal(amplitude, period, phase, num_samples, filename):
|
||||||
|
n = np.arange(num_samples)
|
||||||
|
omega = 2 * np.pi / period #угловая частота
|
||||||
|
signal = amplitude * np.sin(omega * n + phase)
|
||||||
|
with open(filename, 'w+') as file:
|
||||||
|
for value in signal:
|
||||||
|
file.write(f"{value}\n") # 6 знаков после запятой
|
||||||
|
return signal
|
||||||
|
#Проверка
|
||||||
|
|
||||||
|
from ModuleIKZ import generate_sinusoidal_signal
|
||||||
|
|
||||||
|
lst = generate_sinusoidal_signal(2.0, 20, np.pi/4, 50, filename="result.txt")
|
||||||
|
print(lst)
|
||||||
12
TEMA9/Mod3.py
Обычный файл
@@ -0,0 +1,12 @@
|
|||||||
|
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)
|
||||||
20
TEMA9/Module1.py
Обычный файл
@@ -0,0 +1,20 @@
|
|||||||
|
def anomal_object_list(tupl: tuple, T1: float,T2: float):
|
||||||
|
new_tupl = []
|
||||||
|
for i in range(len(tupl)):
|
||||||
|
if T2 < tupl[i] < T1:
|
||||||
|
new_tupl.append(i)
|
||||||
|
new_tupl = tuple(new_tupl)
|
||||||
|
return new_tupl
|
||||||
|
|
||||||
|
def anomal_object_change(general_tuple: tuple, anomal_list: list):
|
||||||
|
X1 = []
|
||||||
|
for i in range(len(general_tuple)):
|
||||||
|
if general_tuple[i] not in anomal_list:
|
||||||
|
X1.append(general_tuple[i])
|
||||||
|
else:
|
||||||
|
if i == 0 or i == len(general_tuple)-1:
|
||||||
|
X1.append(sum(general_tuple)/len(general_tuple))
|
||||||
|
else:
|
||||||
|
X1.append((general_tuple[i-1]+general_tuple[i+1])/2)
|
||||||
|
X1 = tuple(X1)
|
||||||
|
return X1
|
||||||
31
TEMA9/Module2.py
Обычный файл
@@ -0,0 +1,31 @@
|
|||||||
|
from Module1 import anomal_object_change, anomal_object_list
|
||||||
|
import os, pickle
|
||||||
|
os.chdir('C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA9')
|
||||||
|
|
||||||
|
running = True
|
||||||
|
while running:
|
||||||
|
name = input("Введите имя файла: ")
|
||||||
|
try:
|
||||||
|
with open(name, "rb") as f:
|
||||||
|
file_tuple = pickle.load(f)
|
||||||
|
print(file_tuple)
|
||||||
|
try:
|
||||||
|
T1 = float(input("Введите значение T1: "))
|
||||||
|
T2 = float(input("Введите значение T2: "))
|
||||||
|
anomal_tuple = anomal_object_list(file_tuple, T1, T2)
|
||||||
|
if len(anomal_tuple) != 0:
|
||||||
|
anomal_tuple = [file_tuple[i] for i in anomal_tuple]
|
||||||
|
print("Список аномальных значений: ", anomal_tuple)
|
||||||
|
rebuild_list = anomal_object_change(file_tuple, anomal_tuple)
|
||||||
|
print("Новый список: ", rebuild_list)
|
||||||
|
with open("Res33.txt", "w+") as new_file:
|
||||||
|
new_file.write(str(rebuild_list))
|
||||||
|
print("Новый лист записан!")
|
||||||
|
running = False
|
||||||
|
else:
|
||||||
|
print('Лист анмоальных значений пуст!')
|
||||||
|
except ValueError or TypeError:
|
||||||
|
print("Неверно введеные значения T1 или T2")
|
||||||
|
#running = False
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Неверный вывод файла, повторите заново")
|
||||||
1
TEMA9/Res33.txt
Обычный файл
@@ -0,0 +1 @@
|
|||||||
|
(1, 2, 3, 4, 12, 89, 1231, 3, 41, 23, 45, 1342, 12, 12, 1, 5, 2, 4, 3.0, 2, 3, 24)
|
||||||
21
TEMA9/SAU.py
Обычный файл
@@ -0,0 +1,21 @@
|
|||||||
|
class SAU:
|
||||||
|
def __init__(self,zn_param):
|
||||||
|
self.param=zn_param
|
||||||
|
self.ypr=[0,0]
|
||||||
|
|
||||||
|
def zdn_zn(self,upr):
|
||||||
|
self.x=upr
|
||||||
|
|
||||||
|
def model(self):
|
||||||
|
def inerz(x,T,yy):
|
||||||
|
return (x+T*yy)/(T+1)
|
||||||
|
|
||||||
|
y0=self.x-self.ypr[1]*self.param[3] #Обр.связь с усилителем 2
|
||||||
|
y1=self.param[0]*y0 #Усилитель1
|
||||||
|
y2=inerz(y1,self.param[1],self.ypr[0]) #Инерционное звено1
|
||||||
|
y3=inerz(y2,self.param[2],self.ypr[1]) #Инерционное звено2
|
||||||
|
self.ypr[0]=y2
|
||||||
|
self.ypr[1]=y3
|
||||||
|
|
||||||
|
def otobraz(self):
|
||||||
|
print('y=',self.ypr[1])
|
||||||
Двоичные данные
TEMA9/binarfile.bin
Обычный файл
Двоичные данные
TEMA9/image-1.png
Обычный файл
|
После Ширина: | Высота: | Размер: 29 KiB |
Двоичные данные
TEMA9/image.png
Обычный файл
|
После Ширина: | Высота: | Размер: 26 KiB |
18
TEMA9/main_SAU.py
Обычный файл
@@ -0,0 +1,18 @@
|
|||||||
|
prm=[5,7,3.2,0.12]
|
||||||
|
|
||||||
|
from SAU import *
|
||||||
|
import pylab
|
||||||
|
|
||||||
|
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])
|
||||||
|
|
||||||
|
|
||||||
|
pylab.plot(yt)
|
||||||
|
pylab.show()
|
||||||
221
TEMA9/report.md
Обычный файл
@@ -0,0 +1,221 @@
|
|||||||
|
# Отчет по теме 9
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Тема 9. Создание пользовательских классов и объектов
|
||||||
|
|
||||||
|
## 2. Создание классов и их наследников
|
||||||
|
|
||||||
|
### 2.1. Создание автономного класса
|
||||||
|
```py
|
||||||
|
>>> class Class1:
|
||||||
|
... def zad_zn(self,znach):
|
||||||
|
... self.data=znach
|
||||||
|
... def otobrazh(self):
|
||||||
|
... print(self.data)
|
||||||
|
...
|
||||||
|
>>> z1 = Class1()
|
||||||
|
>>> z2 = Class1()
|
||||||
|
>>> z1.zad_zn('экз.класса 1')
|
||||||
|
>>> z2.zad_zn(-632.453)
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
экз.класса 1
|
||||||
|
>>> z2.otobrazh()
|
||||||
|
-632.453
|
||||||
|
>>> z1.data='Новое значение атрибута у экз.1'
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
Новое значение атрибута у экз.1
|
||||||
|
```
|
||||||
|
### 2.2. Создание класса-наследника
|
||||||
|
```py
|
||||||
|
>>> class Class2(Class1):
|
||||||
|
... def otobrazh(self):
|
||||||
|
... print('значение=',self.data)
|
||||||
|
...
|
||||||
|
>>> z3=Class2()
|
||||||
|
>>> dir(z3)
|
||||||
|
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
|
||||||
|
'__getattribute__', '__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()
|
||||||
|
значение= Совсем новое
|
||||||
|
```
|
||||||
|
Сработал метод класса-наследника (Class2)
|
||||||
|
```py
|
||||||
|
>>> z1.otobrazh()
|
||||||
|
Новое значение атрибута у экз.1
|
||||||
|
>>> del z1,z2,z3
|
||||||
|
```
|
||||||
|
Значение z1 не изменилось.
|
||||||
|
|
||||||
|
## 3. Использование классов, содержащихся в модулях
|
||||||
|
[Созданный файл Mod3](Mod3.py)
|
||||||
|
```py
|
||||||
|
>>> import os
|
||||||
|
>>> os.chdir('C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA9')
|
||||||
|
>>> from Mod3 import Class1
|
||||||
|
>>> z4 = Class1()
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in <module>
|
||||||
|
File "C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs\TEMA9\Mod3.py", line 5, in otobrazh
|
||||||
|
print(self.data)
|
||||||
|
AttributeError: 'Class1' object has no attribute 'data'
|
||||||
|
Объясните, почему при выполнении последней инструкции возникла ошибка?
|
||||||
|
```
|
||||||
|
Ошибка возникла, так как мы не вызывали функцию zad_zn(), т.е. мы пытаемся напечатать несущществующий объект
|
||||||
|
```py
|
||||||
|
>>> z4.data='значение данного data у экз.4'
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
значение данного data у экз.4
|
||||||
|
>>> del z4
|
||||||
|
>>> import Mod3
|
||||||
|
>>> z4=Mod3.Class2()
|
||||||
|
>>> z4.zad_zn('Класс из модуля')
|
||||||
|
>>> z4.otobrazh()
|
||||||
|
значение= Класс из модуля
|
||||||
|
>>> Mod3.otobrazh('Объект')
|
||||||
|
значение объекта= Объект
|
||||||
|
```
|
||||||
|
Для z4 мы задали значение через метод zad_zn(), после чего он сохранился внутри класса переменной. При выводе z4.otobrazh() выводится то значение, которое сохранено внутри класса переменной. Mod3.otobrazh() - это метод класса Class2, и при исполнении инструкции Mod3.otobrazh('Объект') он запустит функцию otobrazh внутри класса и выполнит её, выведя "значение объекта= Объект"
|
||||||
|
|
||||||
|
## 4. Использование специальных методов
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class Class3(Class2):
|
||||||
|
... def __init__(self,znach):
|
||||||
|
... self.data=znach
|
||||||
|
... def __add__(self,drug_zn):
|
||||||
|
... return Class3(self.data+drug_zn)
|
||||||
|
... def zad_dr_zn(self,povtor):
|
||||||
|
... self.data*=povtor
|
||||||
|
...
|
||||||
|
>>> z5=Class3('abc')
|
||||||
|
>>> 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
|
||||||
|
```
|
||||||
|
Не совпадает. В dir(z7), по сравнению с dir(Class3), указаны также атрибуты, относящиеся непосредственно к объекту.
|
||||||
|
```py
|
||||||
|
>>> 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'>,)
|
||||||
|
>>> Class1.__bases__
|
||||||
|
(<class 'object'>,)
|
||||||
|
>>> 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 "<stdin>", line 1, in <module>
|
||||||
|
File "<stdin>", line 5, in chten
|
||||||
|
AttributeError: 'Class4' object has no attribute '_Class4__prm'
|
||||||
|
```
|
||||||
|
Мы удалили атрибут, из-за чего и появляется такой вывод
|
||||||
|
|
||||||
|
## 8. Пример представления в виде класса модели системы автоматического регулирования (САР), состоящей из последовательного соединения усилителя и двух инерционных звеньев, охваченных отрицательной обратной связью с усилителем.
|
||||||
|
Создали [модуль с классом](SAU.py) и [программу для тестирования класса](main_SAU.py)
|
||||||
|
|
||||||
|
```py
|
||||||
|
Для значений prm=[2.5,4,1.3,0.8]:
|
||||||
|
|
||||||
|
>>>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
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
```py
|
||||||
|
Для значений prm=[5,7,3.2,0.12]
|
||||||
|
|
||||||
|
>>>y= 0.0
|
||||||
|
y= 0.1488095238095238
|
||||||
|
y= 0.3897392290249433
|
||||||
|
y= 0.6806095454054638
|
||||||
|
y= 0.9909226351160266
|
||||||
|
y= 1.2994207599175436
|
||||||
|
y= 1.5920185212177194
|
||||||
|
y= 1.8600828134550884
|
||||||
|
y= 2.099026493353568
|
||||||
|
y= 2.3071781612214326
|
||||||
|
y= 2.4848898368847023
|
||||||
|
y= 2.633845723665706
|
||||||
|
y= 2.7565379470594364
|
||||||
|
y= 2.855878574700046
|
||||||
|
y= 2.93492096576045
|
||||||
|
y= 2.996667275716888
|
||||||
|
y= 3.043942564463233
|
||||||
|
y= 3.0793193015101665
|
||||||
|
y= 3.1050790642314476
|
||||||
|
y= 3.123200855367947
|
||||||
|
y= 3.1353677230128536
|
||||||
|
```
|
||||||
|

|
||||||
80
TEMA9/task.md
Обычный файл
@@ -0,0 +1,80 @@
|
|||||||
|
# Общее контрольное задание по теме 9
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Создайте и запишите в модуль класс, содержащий следующие компоненты:
|
||||||
|
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
|
||||||
|
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
|
||||||
|
- метод для обеспечения перевода сотрудника из одного отдела в другой;
|
||||||
|
- метод для изменения должности сотрудника;
|
||||||
|
- свойство, содержащее перечень (список) поощрений сотрудника.
|
||||||
|
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
|
||||||
|
```py
|
||||||
|
|
||||||
|
class Workposition:
|
||||||
|
def __init__(self, fio = "Иванов И.И.", otdel = "Моделирование", dolznost = "Младший помощник", oklad = 20000):
|
||||||
|
self.fio = fio
|
||||||
|
self.otdel = otdel
|
||||||
|
self.dolznost = dolznost
|
||||||
|
self.oklad = oklad
|
||||||
|
self.__rewards = []
|
||||||
|
|
||||||
|
def raise_money(self, amount_on = int):
|
||||||
|
if amount_on > 0:
|
||||||
|
print("YAY")
|
||||||
|
self.oklad += amount_on
|
||||||
|
else:
|
||||||
|
print("Сумма увеличения должна быть больше 0!")
|
||||||
|
def position_place(self, new_place = str):
|
||||||
|
self.otdel = new_place
|
||||||
|
|
||||||
|
def position_post(self, new_post = str):
|
||||||
|
self.dolznost = new_post
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def reward(self):
|
||||||
|
return self.__rewards
|
||||||
|
|
||||||
|
def get_reward(self, get_reward=str):
|
||||||
|
self.__rewards.append(f"Поощрение сотрудника: {get_reward}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
employee1 = Workposition("Толчеев В.О.", "Кафедра Управления и информационных технологий", "Профессор", 120000)
|
||||||
|
|
||||||
|
employee2 = Workposition("Бобряков А.В.", "Кафедра Управления и информационных технологий", "Заведующий кафедрой", 150000)
|
||||||
|
|
||||||
|
print(employee1.fio, employee2.fio)
|
||||||
|
|
||||||
|
employee2.position_place("МГТУ")
|
||||||
|
print(employee2.otdel)
|
||||||
|
|
||||||
|
print(f"До повышения: {employee1.oklad}")
|
||||||
|
employee1.raise_money(20000)
|
||||||
|
print(f"После повышения: {employee1.oklad}")
|
||||||
|
|
||||||
|
employee2.position_post("Глава кафедры")
|
||||||
|
print(employee2.dolznost)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
employee2.get_reward("Лучший результат в сфере обучения студентов по кафедре")
|
||||||
|
print(employee2.reward)
|
||||||
|
|
||||||
|
|
||||||
|
>>>Толчеев В.О. Бобряков А.В.
|
||||||
|
МГТУ
|
||||||
|
До повышения: 150000
|
||||||
|
YAY
|
||||||
|
После повышения: 170000
|
||||||
|
Глава кафедры
|
||||||
|
['Лучший результат в сфере обучения студентов по кафедре']
|
||||||
|
```
|
||||||
53
TEMA9/task_module.py
Обычный файл
@@ -0,0 +1,53 @@
|
|||||||
|
class Workposition:
|
||||||
|
def __init__(self, fio = "Иванов И.И.", otdel = "Моделирование", dolznost = "Младший помощник", oklad = 20000):
|
||||||
|
self.fio = fio
|
||||||
|
self.otdel = otdel
|
||||||
|
self.dolznost = dolznost
|
||||||
|
self.oklad = oklad
|
||||||
|
self.__rewards = []
|
||||||
|
|
||||||
|
def raise_money(self, amount_on = int):
|
||||||
|
if amount_on > 0:
|
||||||
|
print("YAY")
|
||||||
|
self.oklad += amount_on
|
||||||
|
else:
|
||||||
|
print("Сумма увеличения должна быть больше 0!")
|
||||||
|
def position_place(self, new_place = str):
|
||||||
|
self.otdel = new_place
|
||||||
|
|
||||||
|
def position_post(self, new_post = str):
|
||||||
|
self.dolznost = new_post
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def reward(self):
|
||||||
|
return self.__rewards
|
||||||
|
|
||||||
|
def get_reward(self, get_reward=str):
|
||||||
|
self.__rewards.append(f"Поощрение сотрудника: {get_reward}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
employee1 = Workposition("Толчеев В.О.", "Кафедра Управления и информационных технологий", "Профессор", 120000)
|
||||||
|
|
||||||
|
employee2 = Workposition("Бобряков А.В.", "Кафедра Управления и информационных технологий", "Заведующий кафедрой", 150000)
|
||||||
|
|
||||||
|
print(employee1.fio, employee2.fio)
|
||||||
|
|
||||||
|
employee2.position_place("МГТУ")
|
||||||
|
print(employee2.otdel)
|
||||||
|
|
||||||
|
print(f"До повышения: {employee1.oklad}")
|
||||||
|
employee1.raise_money(20000)
|
||||||
|
print(f"После повышения: {employee1.oklad}")
|
||||||
|
|
||||||
|
employee2.position_post("Глава кафедры")
|
||||||
|
print(employee2.dolznost)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
employee2.get_reward("Лучший результат в сфере обучения студентов по кафедре")
|
||||||
|
print(employee2.reward)
|
||||||
|
|
||||||
93
TEMA9/test.md
Обычный файл
@@ -0,0 +1,93 @@
|
|||||||
|
# Индивидуальное контрольное задание по модулю 3
|
||||||
|
|
||||||
|
Махнов Георгий, А-01-23
|
||||||
|
|
||||||
|
## Задание 8
|
||||||
|
M3_8
|
||||||
|
1) Создайте модуль М1, содержащий две функции:
|
||||||
|
|
||||||
|
-функция 1: аргументы - кортеж Х с последовательностью отсчетов некоторого сигнала и два числовых параметра Т1 и Т2; в функции должен создаваться список с индексами "аномальных" отсчетов сигнала, удовлетворяющих неравенствам X < T1 или X > T2;
|
||||||
|
|
||||||
|
- функция 2: аргументы - кортеж Х с отсчетами сигнала и список "аномальных" значений; в функции должен создаваться новый кортеж Х1, в котором элементы, не являющиеся "аномальными", совпадают с соответствующими элементами из Х, а "аномальные" значения заменяются по правилу: если это первый или последний элемент, то он заменяется на среднее значение по кортежу Х, а остальные - заменяются на полусумму соседних по индексу элементов.
|
||||||
|
|
||||||
|
2) Создайте еще один модуль М2, в котором должны выполняться операции:
|
||||||
|
|
||||||
|
- запрашивается и вводится имя бинарного файла с данными (кортежем); проверяется наличие файла и при отсутствии - повторение запроса;
|
||||||
|
|
||||||
|
- запрашиваются и вводятся граничные значения Т1 и Т2 с проверкой Т1,T2;
|
||||||
|
|
||||||
|
- из указанного файла считывается кортеж Х с сигналом;
|
||||||
|
|
||||||
|
- с применением функции 1 создается список с индексами "аномальных" отсчетов; результат отображается на экране;
|
||||||
|
|
||||||
|
- если список "аномальных отсчетов не пустой, то с применением функции 2 создается кортеж Х1 с "исправленным" сигналом, отображается на экране и записывается в текстовый файл Res33.txt; в ином случае выдается сообщение об отсутствии "аномальных" отсчетов.
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
|
||||||
|
Модуль 1
|
||||||
|
|
||||||
|
```py
|
||||||
|
def anomal_object_list(tupl: tuple, T1: float,T2: float):
|
||||||
|
new_tupl = []
|
||||||
|
for i in range(len(tupl)):
|
||||||
|
if T2 < tupl[i] < T1:
|
||||||
|
new_tupl.append(i)
|
||||||
|
new_tupl = tuple(new_tupl)
|
||||||
|
return new_tupl
|
||||||
|
|
||||||
|
def anomal_object_change(general_tuple: tuple, anomal_list: list):
|
||||||
|
X1 = []
|
||||||
|
for i in range(len(general_tuple)):
|
||||||
|
if general_tuple[i] not in anomal_list:
|
||||||
|
X1.append(general_tuple[i])
|
||||||
|
else:
|
||||||
|
if i == 0 or i == len(general_tuple)-1:
|
||||||
|
X1.append(sum(general_tuple)/len(general_tuple))
|
||||||
|
else:
|
||||||
|
X1.append((general_tuple[i-1]+general_tuple[i+1])/2)
|
||||||
|
X1 = tuple(X1)
|
||||||
|
return X1
|
||||||
|
```
|
||||||
|
|
||||||
|
Модуль 2
|
||||||
|
|
||||||
|
```py
|
||||||
|
from Module1 import anomal_object_change, anomal_object_list
|
||||||
|
import os, pickle
|
||||||
|
os.chdir('C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA9')
|
||||||
|
|
||||||
|
running = True
|
||||||
|
while running:
|
||||||
|
name = input("Введите имя файла: ")
|
||||||
|
try:
|
||||||
|
with open(name, "rb") as f:
|
||||||
|
file_tuple = pickle.load(f)
|
||||||
|
try:
|
||||||
|
T1 = float(input("Введите значение T1: "))
|
||||||
|
T2 = float(input("Введите значение T2: "))
|
||||||
|
anomal_tuple = anomal_object_list(file_tuple, T1, T2)
|
||||||
|
if len(anomal_tuple) != 0:
|
||||||
|
anomal_tuple = [file_tuple[i] for i in anomal_tuple]
|
||||||
|
print("Список аномальных значений: ", anomal_tuple)
|
||||||
|
rebuild_list = anomal_object_change(file_tuple, anomal_tuple)
|
||||||
|
print("Новый список: ", rebuild_list)
|
||||||
|
with open("Res33.txt", "w+") as new_file:
|
||||||
|
new_file.write(str(rebuild_list))
|
||||||
|
print("Новый лист записан!")
|
||||||
|
running = False
|
||||||
|
else:
|
||||||
|
print('Лист анмоальных значений пуст!')
|
||||||
|
except ValueError or TypeError:
|
||||||
|
print("Неверно введеные значения T1 или T2")
|
||||||
|
#running = False
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Неверный вывод файла, повторите заново")
|
||||||
|
|
||||||
|
|
||||||
|
>>> Введите имя файла: binarfile.bin
|
||||||
|
Введите значение T1: 12
|
||||||
|
Введите значение T2: 5
|
||||||
|
Список аномальных значений: [7]
|
||||||
|
Новый список: (1, 2, 3, 4, 12, 89, 1231, 3, 41, 23, 45, 1342, 12, 12, 1, 5, 2, 4, 3.0, 2, 3, 24)
|
||||||
|
Новый лист записан!
|
||||||
|
```
|
||||||