форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
47 строки
2.5 KiB
Markdown
47 строки
2.5 KiB
Markdown
# Индивидуальное контрольное задание по Теме 8
|
|
Таболин Иван, А-01-23
|
|
Вариант 7
|
|
## Задание
|
|
По указанному преподавателем варианту контрольного задания
|
|
обратитесь к индивидуальному заданию с таким номером в теме 7,
|
|
разработайте функцию, на ее основе создайте модуль.
|
|
Создайте второй модуль, в котором должны быть инструкции для ввода/создания
|
|
исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
|
|
|
Вариант 7 из ИКЗ по Теме 7
|
|
|
|
Разработайте функцию с 2 параметрами: х и А, реализующую преобразование входного сигнала x по формуле: y=i, если i*A<=x<(i+1)*A, y=-i, если -(i+1)*A>=x>-i*A, где i принимает значения от 1 до А*х. Если не выполнится ни одно из неравенств ни при каком i, то y=0. Создайте список со 100 значениями входного сигнала х – случайными, треугольно (triangular) распределенными числами в диапазоне значений от -5 до 25. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при А=1. Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
|
## Решение
|
|
Модуль 1
|
|
```py
|
|
# Mod1
|
|
# Функция
|
|
def preob(x, A):
|
|
max_i=int(A*x)
|
|
for i in range(1, max_i+1):
|
|
if i*A<=x and x<(i+1)*A:
|
|
return i
|
|
elif -(i+1)*A>=x and x>(-i)*A:
|
|
return -i
|
|
return 0
|
|
```
|
|
Модуль 2
|
|
```py
|
|
# Mod2
|
|
# Генерация входных данных и применение функции
|
|
import random as rn
|
|
from Mod1_IKZ import preob
|
|
x=[]
|
|
for i in range(100):
|
|
x.append(rn.triangular(-5,25))
|
|
y=[]
|
|
for i in range(len(x)):
|
|
y.append(preob(x[i],1))
|
|
filename=input('Введите имя файла:')
|
|
file=open(filename,'w')
|
|
file.write('x[i] y[i]')
|
|
for i in range(len(x)):
|
|
s=str(x[i])+' '+str(y[i]) + '\n'
|
|
file.write(s)
|
|
file.close()
|
|
``` |