\## 4.9 Изменение значений объектов с помощью функций
## 4.9 Изменение значений объектов с помощью функций
```py
```py
@ -495,7 +494,7 @@ inerz(x, T, ypred)
>>> def func3(b):
>>> def func3(b):
... b=5\*b+67
... b=5*b+67
...
...
@ -505,11 +504,11 @@ inerz(x, T, ypred)
90
90
>>> sps1=\[1,2,3,4] #Список – изменяемый тип объекта
>>> sps1=[1,2,3,4] #Список – изменяемый тип объекта
>>> def func2(sps):
>>> def func2(sps):
... sps\[1]=99
... sps[1]=99
...
...
@ -517,7 +516,7 @@ inerz(x, T, ypred)
>>> print(sps1)
>>> print(sps1)
\[1, 99, 3, 4]
[1, 99, 3, 4]
>>> kort=(1,2,3,4) #Кортеж – неизменяемый тип объекта
>>> kort=(1,2,3,4) #Кортеж – неизменяемый тип объекта
@ -525,21 +524,21 @@ inerz(x, T, ypred)
Traceback (most recent call last):
Traceback (most recent call last):
File "<pyshell#90>", line 1, in <module>
File "<pyshell#90>", line 1, in <module>
func2(kort)
func2(kort)
File "<pyshell#86>", line 2, in func2
File "<pyshell#86>", line 2, in func2
sps\[1]=99
sps[1]=99
TypeError: 'tuple' object does not support item assignment
TypeError: 'tuple' object does not support item assignment
```
```
\# 5. Специальные типы пользовательских функций.
# 5. Специальные типы пользовательских функций.
\## 5.1 Анонимные функции
## 5.1 Анонимные функции
@ -577,7 +576,7 @@ lambda \[<Список аргументов >]: <Возвращаемое зна
```
```
\## 5.2 Функции-генераторы
## 5.2 Функции-генераторы
Функции-генераторы – функции, которые используются в итерационных процессах, позволяя на каждой итерации получать одно из значений. Для этого в функцию включают инструкцию yield приостанавливающую её выполнение и возвращающую очередное значение.
Функции-генераторы – функции, которые используются в итерационных процессах, позволяя на каждой итерации получать одно из значений. Для этого в функцию включают инструкцию yield приостанавливающую её выполнение и возвращающую очередное значение.
@ -625,9 +624,9 @@ lambda \[<Список аргументов >]: <Возвращаемое зна
Traceback (most recent call last):
Traceback (most recent call last):
File "<pyshell#106>", line 1, in <module>
File "<pyshell#106>", line 1, in <module>
print(alp.\_\_next\_\_())
print(alp.\_\_next\_\_())
StopIteration
StopIteration
@ -637,9 +636,9 @@ StopIteration
\# 6. Локализация объектов
# 6. Локализация объектов
\## 6.1 Примеры на локализацию объектов
## 6.1 Примеры на локализацию объектов
```py
```py
@ -651,7 +650,7 @@ StopIteration
... glb=8
... glb=8
... return loc1\*arg
... return loc1*arg
...
...
@ -679,19 +678,19 @@ StopIteration
... glb=8
... glb=8
... return loc1\*arg
... return loc1*arg
>>> res=func8(glb)
>>> res=func8(glb)
Traceback (most recent call last):
Traceback (most recent call last):
File "<pyshell#114>", line 1, in <module>
File "<pyshell#114>", line 1, in <module>
res=func8(glb)
res=func8(glb)
File "<pyshell#113>", line 3, in func8
File "<pyshell#113>", line 3, in func8
print(glb)
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
@ -715,7 +714,7 @@ UnboundLocalError: cannot access local variable 'glb' where it is not associated
... glb=8
... glb=8
... return loc1\*arg
... return loc1*arg
...
...
@ -737,7 +736,7 @@ UnboundLocalError: cannot access local variable 'glb' where it is not associated
\# 6.2 Функции для выявления локализации объектов
## 6.2 Функции для выявления локализации объектов
```py
```py
@ -767,33 +766,33 @@ True
```
```
\# 6.3 Локализация объектов при использовании вложенных функций
## 6.3 Локализация объектов при использовании вложенных функций
1\.Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
1.Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
2\.Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
2.Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
3\.Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
3.Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
Y=b1+b2\*X
Y=b1+b2*X
и имеющую аргументы b1, b2 и X.
и имеющую аргументы b1, b2 и X.
\## Решение:
## Решение:
1\.
1.
```py
```py
@ -30,53 +30,53 @@ Y=b1+b2\*X
... """Функция для реализации задержки сигнала в определенный момент времени x - исходный сигнал T - заданная задержка"""
... """Функция для реализации задержки сигнала в определенный момент времени x - исходный сигнал T - заданная задержка"""
... return\[0] \*T+x
... return[0] *T+x
...
...
>>> x=\[1,2,3,4]
>>> x=[1,2,3,4]
>>> y=crDelay(x,4)
>>> y=crDelay(x,4)
>>> print(y)
>>> print(y)
\[0, 0, 0, 0, 1, 2, 3, 4]
[0, 0, 0, 0, 1, 2, 3, 4]
```
```
2\.
2.
```py
```py
>>> def raschet\_gistogrammy(viborka,kol\_int):
>>> def raschet_gistogrammy(viborka,kol_int):
... Min=min(viborka)
... Min=min(viborka)
... Max=max(viborka)
... Max=max(viborka)
... shirina\_int=(Max-Min)/kol\_int
... shirina_int=(Max-Min)/kol_int
... x=\[0]\*kol\_int
... x=[0]*kol_int
... for znach in viborka:
... for znach in viborka:
... num\_int=int((znach-Max)/shirina\_int)
... num_int=int((znach-Max)/shirina_int)
... if num\_int == kol\_int:
... if num_int == kol_int:
... num\_int = kol\_int - 1
... num_int = kol_int - 1
... x\[num\_int] += 1
... x[num_int] += 1
... print("Гистограмма:")
... print("Гистограмма:")
... for i in range(kol\_int):
... for i in range(kol_int):
... start = Max + i \* shirina\_int
... start = Max + i * shirina_int
... end = Max + (i + 1) \* shirina\_int
... end = Max + (i + 1) * shirina_int
... print(f"\[{start:.2f}, {end:.2f}]: {x\[i]}")
... print(f"[{start:.2f}, {end:.2f}]: {x[i]}")
... return x
... return x
@ -84,33 +84,33 @@ Y=b1+b2\*X
>>> import random
>>> import random
>>> rand=\[random.gauss(0, 1) for \_ in range(100)]
10. Разработайте функцию c 3 аргументами, реализующую запись заданной последовательности – списка или кортежа (аргумент функции) в текстовый файл с заданным именем (аргумент функции) с заданным числом (аргумент функции) элементов на строке файла, разделенных запятыми. Проверьте её на записи в файл кортежа с 50 случайными, нормально распределенными числами с математическим ожиданием 23 и дисперсией 144 по 3 элемента в строке.
## Выполнение:
```py
>>> def writef(obj,file,elem):
... """Запись последовательности списка или кортежа в текстовый файл с заданным числом элементов на строке"""
... with open (file,'w') as f:
... for i in range (0, len(obj), elem):
... line=obj[i:i+elem]
... f.write(','.join(str(x) for x in line) + '\n')
...
...
>>> numbers = [random.gauss(23,144) for x in range(50)]