|
|
|
|
@ -0,0 +1,105 @@
|
|
|
|
|
Жалнин Вадим А-01-23
|
|
|
|
|
Вариант теста по модулю 3 - 18
|
|
|
|
|
```
|
|
|
|
|
M3_19
|
|
|
|
|
1) Создайте модуль М1, содержащий 2 функции:
|
|
|
|
|
- функция 1: аргумент - список или кортеж с отсчетами некоторого сигнала; функция должна определить и вернуть число элементов, значение которых превышает значение предыдущего элемента;
|
|
|
|
|
- функция 2: аргумент - список или кортеж с последовательностью отсчетов сигнала; функция должна рассчитать список с накопленными суммами: первый элемент равен первому элементу исходной последовательности, второй - равен сумме двух первых элементов последовательности, третий - сумме первых трех элементов и т.д.
|
|
|
|
|
2) Создайте еще один модуль М2, в котором должны выполняться следующие операции:
|
|
|
|
|
- запрашивается имя бинарного файла с выборкой, проверяется его наличие и при отсутствии - повторяется запрос;
|
|
|
|
|
- выборка вводится из файла;
|
|
|
|
|
- с помощью функции 1 производится определение числа элементов со значениями, превышающими значения их предшественников;
|
|
|
|
|
- с помощью функции 2 рассчитывается список с кумулятивными суммами;
|
|
|
|
|
- выборка отображается в виде графика.
|
|
|
|
|
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает результаты расчета на экране.
|
|
|
|
|
4) Проведите расчеты при 2-х разных исходных файлах.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
"m1.py"
|
|
|
|
|
```
|
|
|
|
|
```python
|
|
|
|
|
def count_increasing(data):
|
|
|
|
|
count = 0
|
|
|
|
|
i = 1
|
|
|
|
|
while i < len(data):
|
|
|
|
|
if data[i] > data[i-1]:
|
|
|
|
|
count = count + 1
|
|
|
|
|
i = i + 1
|
|
|
|
|
return count
|
|
|
|
|
def cumulative_sum(data):
|
|
|
|
|
result = []
|
|
|
|
|
total = 0
|
|
|
|
|
for x in data:
|
|
|
|
|
total = total + x
|
|
|
|
|
result.append(total)
|
|
|
|
|
return result
|
|
|
|
|
```
|
|
|
|
|
```
|
|
|
|
|
"module2.py"
|
|
|
|
|
```
|
|
|
|
|
```python
|
|
|
|
|
import pickle
|
|
|
|
|
import m1
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
while True:
|
|
|
|
|
filename = input("Имя файла: ")
|
|
|
|
|
try:
|
|
|
|
|
f = open(filename, 'rb')
|
|
|
|
|
signal = pickle.load(f)
|
|
|
|
|
f.close()
|
|
|
|
|
break
|
|
|
|
|
except:
|
|
|
|
|
print("не найден, пробуйте еще раз.")
|
|
|
|
|
increasing = m1.count_increasing(signal)
|
|
|
|
|
cumulative = m1.cumulative_sum(signal)
|
|
|
|
|
plt.plot(signal)
|
|
|
|
|
plt.title("График выборки")
|
|
|
|
|
plt.show()
|
|
|
|
|
return signal, increasing, cumulative
|
|
|
|
|
```
|
|
|
|
|
```
|
|
|
|
|
main.py
|
|
|
|
|
```
|
|
|
|
|
```python
|
|
|
|
|
import module2
|
|
|
|
|
import pickle
|
|
|
|
|
data1 = [1, 3, 2, 5, 4, 7, 6, 9, 8]
|
|
|
|
|
f1 = open("file1.bin", "wb")
|
|
|
|
|
pickle.dump(data1, f1)
|
|
|
|
|
f1.close()
|
|
|
|
|
data2 = [10, 8, 12, 11, 15, 13, 17, 16]
|
|
|
|
|
f2 = open("file2.bin", "wb")
|
|
|
|
|
pickle.dump(data2, f2)
|
|
|
|
|
f2.close()
|
|
|
|
|
print("проверка первым файлом")
|
|
|
|
|
sig1, inc1, cum1 = module2.work_with_file()
|
|
|
|
|
print("сигнал:", sig1)
|
|
|
|
|
print("увеличивающихся:", inc1)
|
|
|
|
|
print("накопленная сумма:", cum1)
|
|
|
|
|
print()
|
|
|
|
|
print("проверка вторым файлом")
|
|
|
|
|
sig2, inc2, cum2 = module2.work_with_file()
|
|
|
|
|
print("сигнал:", sig2)
|
|
|
|
|
print("увеличивающихся:", inc2)
|
|
|
|
|
print("накопленная сумма:", cum2)
|
|
|
|
|
```
|
|
|
|
|
вывод в терминал:
|
|
|
|
|
```powershell
|
|
|
|
|
проверка первым файлом
|
|
|
|
|
Имя файла: file4.bin
|
|
|
|
|
не найден, пробуйте еще раз.
|
|
|
|
|
Имя файла: file1.bin
|
|
|
|
|
сигнал: [1, 3, 2, 5, 4, 7, 6, 9, 8]
|
|
|
|
|
увеличивающихся: 4
|
|
|
|
|
накопленная сумма: [1, 4, 6, 11, 15, 22, 28, 37, 45]
|
|
|
|
|
|
|
|
|
|
проверка вторым файлом
|
|
|
|
|
Имя файла: file2.bin
|
|
|
|
|
сигнал: [10, 8, 12, 11, 15, 13, 17, 16]
|
|
|
|
|
увеличивающихся: 3
|
|
|
|
|
накопленная сумма: [10, 18, 30, 41, 56, 69, 86, 102]
|
|
|
|
|
```
|
|
|
|
|
![[figure1.png]]
|
|
|
|
|
![[figure2.png]]
|
|
|
|
|
Каждый элемент – это список элементов из соответствующей строки файла
|