форкнуто от main/python-labs
Родитель
37b15e5294
Сommit
f1f9be3b08
@ -0,0 +1,90 @@
|
|||||||
|
20 1
|
||||||
|
20 2
|
||||||
|
20 2
|
||||||
|
20 2
|
||||||
|
21 2
|
||||||
|
22 1
|
||||||
|
23 1
|
||||||
|
23 1
|
||||||
|
23 2
|
||||||
|
24 1
|
||||||
|
24 1
|
||||||
|
24 2
|
||||||
|
24 2
|
||||||
|
25 1
|
||||||
|
26 1
|
||||||
|
26 1
|
||||||
|
26 2
|
||||||
|
26 2
|
||||||
|
26 2
|
||||||
|
27 2
|
||||||
|
27 2
|
||||||
|
28 1
|
||||||
|
28 1
|
||||||
|
28 2
|
||||||
|
29 2
|
||||||
|
29 2
|
||||||
|
30 1
|
||||||
|
30 1
|
||||||
|
30 1
|
||||||
|
30 2
|
||||||
|
30 2
|
||||||
|
31 1
|
||||||
|
31 1
|
||||||
|
31 1
|
||||||
|
31 1
|
||||||
|
31 2
|
||||||
|
31 2
|
||||||
|
32 1
|
||||||
|
32 1
|
||||||
|
32 2
|
||||||
|
32 2
|
||||||
|
32 2
|
||||||
|
32 2
|
||||||
|
33 1
|
||||||
|
33 1
|
||||||
|
33 1
|
||||||
|
33 1
|
||||||
|
33 2
|
||||||
|
33 2
|
||||||
|
33 2
|
||||||
|
33 2
|
||||||
|
34 2
|
||||||
|
34 2
|
||||||
|
34 2
|
||||||
|
35 2
|
||||||
|
35 2
|
||||||
|
36 1
|
||||||
|
36 1
|
||||||
|
36 1
|
||||||
|
37 2
|
||||||
|
37 2
|
||||||
|
37 2
|
||||||
|
38 1
|
||||||
|
38 1
|
||||||
|
38 1
|
||||||
|
38 2
|
||||||
|
38 2
|
||||||
|
38 2
|
||||||
|
39 1
|
||||||
|
39 1
|
||||||
|
39 2
|
||||||
|
39 2
|
||||||
|
40 1
|
||||||
|
40 2
|
||||||
|
41 1
|
||||||
|
41 2
|
||||||
|
41 2
|
||||||
|
42 1
|
||||||
|
42 1
|
||||||
|
42 2
|
||||||
|
42 2
|
||||||
|
42 2
|
||||||
|
43 1
|
||||||
|
43 2
|
||||||
|
44 1
|
||||||
|
44 2
|
||||||
|
44 2
|
||||||
|
45 1
|
||||||
|
45 1
|
||||||
|
45 2
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
import random
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def create_binary_file(filename="input_data.bin", len1=40, len2=50, min_val=20, max_val=45):
|
||||||
|
krt1 = tuple(random.randint(min_val, max_val) for _ in range(len1))
|
||||||
|
krt2 = tuple(random.randint(min_val, max_val) for _ in range(len2))
|
||||||
|
|
||||||
|
with open(filename, 'wb') as f:
|
||||||
|
pickle.dump(krt1, f)
|
||||||
|
pickle.dump(krt2, f)
|
||||||
|
print(f"Бинарный файл '{filename}' создан с двумя кортежами.")
|
||||||
|
print(f"KRT1: {krt1[:5]}... (длина {len(krt1)})")
|
||||||
|
print(f"KRT2: {krt2[:5]}... (длина {len(krt2)})")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
create_binary_file()
|
||||||
|
После Ширина: | Высота: | Размер: 34 KiB |
@ -0,0 +1,188 @@
|
|||||||
|
## Модуль 3
|
||||||
|
|
||||||
|
Добровольска Елизавета, А-02-23
|
||||||
|
Вариант 10
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Разработайте функцию по заданию и на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных
|
||||||
|
для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||||
|
Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами:
|
||||||
|
амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции).
|
||||||
|
Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Для создания бинарного файла был создан модуль TEST с таким кодом:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import random
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def create_binary_file(filename="input_data.bin", len1=40, len2=50, min_val=20, max_val=45):
|
||||||
|
krt1 = tuple(random.randint(min_val, max_val) for _ in range(len1))
|
||||||
|
krt2 = tuple(random.randint(min_val, max_val) for _ in range(len2))
|
||||||
|
|
||||||
|
with open(filename, 'wb') as f:
|
||||||
|
pickle.dump(krt1, f)
|
||||||
|
pickle.dump(krt2, f)
|
||||||
|
print(f"Бинарный файл '{filename}' создан с двумя кортежами.")
|
||||||
|
print(f"KRT1: {krt1[:5]}... (длина {len(krt1)})")
|
||||||
|
print(f"KRT2: {krt2[:5]}... (длина {len(krt2)})")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
create_binary_file()
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее приведен текст модуля 1:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import math
|
||||||
|
|
||||||
|
def process_tuples(tuple1, tuple2):
|
||||||
|
temp_list = []
|
||||||
|
for item in tuple1:
|
||||||
|
temp_list.append((item, 1))
|
||||||
|
for item in tuple2:
|
||||||
|
temp_list.append((item, 2))
|
||||||
|
|
||||||
|
temp_list.sort(key=lambda x: x[0])
|
||||||
|
|
||||||
|
sps1 = [item[0] for item in temp_list]
|
||||||
|
sps2 = [item[1] for item in temp_list]
|
||||||
|
|
||||||
|
return sps1, sps2
|
||||||
|
|
||||||
|
def calculate_stats(numeric_list):
|
||||||
|
n = len(numeric_list)
|
||||||
|
mean = sum(numeric_list) / n
|
||||||
|
|
||||||
|
min_val = min(numeric_list)
|
||||||
|
max_val = max(numeric_list)
|
||||||
|
|
||||||
|
|
||||||
|
sorted_list = sorted(numeric_list)
|
||||||
|
if n % 2 == 1:
|
||||||
|
median = sorted_list[n // 2]
|
||||||
|
else:
|
||||||
|
median = (sorted_list[n // 2 - 1] + sorted_list[n // 2]) / 2
|
||||||
|
if n <= 1:
|
||||||
|
std_dev = 0.0
|
||||||
|
else:
|
||||||
|
variance = sum((x - mean) ** 2 for x in numeric_list) / (n - 1)
|
||||||
|
std_dev = math.sqrt(variance)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"Среднее": mean,
|
||||||
|
"Наименьшее": min_val,
|
||||||
|
"Наибольшее": max_val,
|
||||||
|
"Медиана": median,
|
||||||
|
"Стандартное отклонение": std_dev
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее приведен текст модуля 2:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
from M1 import process_tuples, calculate_stats
|
||||||
|
|
||||||
|
def process_data_and_save_results():
|
||||||
|
filename = ""
|
||||||
|
|
||||||
|
while not os.path.exists(filename):
|
||||||
|
filename = input("Введите имя бинарного файла с данными (например, input_data.bin): ")
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
print(f"Файл '{filename}' не найден. Попробуйте еще раз.")
|
||||||
|
|
||||||
|
|
||||||
|
with open(filename, 'rb') as f:
|
||||||
|
krt1 = pickle.load(f)
|
||||||
|
krt2 = pickle.load(f)
|
||||||
|
print(f"\nДанные успешно считаны из файла '{filename}'.")
|
||||||
|
print(f"KRT1 (первые 5 элементов): {krt1[:5]}")
|
||||||
|
print(f"KRT2 (первые 5 элементов): {krt2[:5]}")
|
||||||
|
|
||||||
|
sps1, sps2 = process_tuples(krt1, krt2)
|
||||||
|
print("\n--- Результаты функции 1 ---")
|
||||||
|
print(f"SPS1 (упорядоченный список элементов): {sps1[:10]}... (длина {len(sps1)})")
|
||||||
|
print(f"SPS2 (список происхождения элементов): {sps2[:10]}... (длина {len(sps2)})")
|
||||||
|
|
||||||
|
|
||||||
|
stats = calculate_stats(sps1)
|
||||||
|
print("\n--- Результаты функции 2 (для SPS1) ---")
|
||||||
|
for key, value in stats.items():
|
||||||
|
print(f"{key}: {value:.2f}")
|
||||||
|
|
||||||
|
output_filename = "Res22.txt"
|
||||||
|
with open(output_filename, 'w') as f:
|
||||||
|
for val1, val2 in zip(sps1, sps2):
|
||||||
|
f.write(f"{val1} {val2}\n")
|
||||||
|
print(f"\nРезультаты функции 1 записаны в файл '{output_filename}'.")
|
||||||
|
|
||||||
|
return sps1
|
||||||
|
```
|
||||||
|
|
||||||
|
И текст основной прогрммы M0:
|
||||||
|
|
||||||
|
```py
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from M2 import process_data_and_save_results
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("--- Запуск главной программы M0 ---")
|
||||||
|
|
||||||
|
|
||||||
|
sps1_for_plot = process_data_and_save_results()
|
||||||
|
|
||||||
|
|
||||||
|
plt.figure(figsize=(10, 6))
|
||||||
|
plt.plot(sps1_for_plot, marker='.', linestyle='-', color='skyblue', label='SPS1 Values')
|
||||||
|
plt.title("График упорядоченного списка SPS1")
|
||||||
|
plt.xlabel("Индекс отсчета")
|
||||||
|
plt.ylabel("Значение элемента")
|
||||||
|
plt.grid(True)
|
||||||
|
plt.legend()
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
print("\n Программа завершена")
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод программы:
|
||||||
|
|
||||||
|
```py
|
||||||
|
================ RESTART: C:\Users\u522-16\Desktop\tema9\TEST.py ===============
|
||||||
|
Бинарный файл 'input_data.bin' создан с двумя кортежами.
|
||||||
|
KRT1: (33, 24, 43, 33, 42)... (длина 40)
|
||||||
|
KRT2: (34, 33, 32, 38, 27)... (длина 50)
|
||||||
|
>>>
|
||||||
|
================= RESTART: C:\Users\u522-16\Desktop\tema9\M0.py ================
|
||||||
|
--- Запуск главной программы M0 ---
|
||||||
|
Введите имя бинарного файла с данными (например, input_data.bin): input_data.bin
|
||||||
|
|
||||||
|
Данные успешно считаны из файла 'input_data.bin'.
|
||||||
|
KRT1 (первые 5 элементов): (33, 24, 43, 33, 42)
|
||||||
|
KRT2 (первые 5 элементов): (34, 33, 32, 38, 27)
|
||||||
|
|
||||||
|
--- Результаты функции 1 ---
|
||||||
|
SPS1 (упорядоченный список элементов): [20, 20, 20, 20, 21, 22, 23, 23, 23, 24]... (длина 90)
|
||||||
|
SPS2 (список происхождения элементов): [1, 2, 2, 2, 2, 1, 1, 1, 2, 1]... (длина 90)
|
||||||
|
|
||||||
|
--- Результаты функции 2 (для SPS1) ---
|
||||||
|
Среднее: 33.02
|
||||||
|
Наименьшее: 20.00
|
||||||
|
Наибольшее: 45.00
|
||||||
|
Медиана: 33.00
|
||||||
|
Стандартное отклонение: 6.87
|
||||||
|
|
||||||
|
Результаты функции 1 записаны в файл 'Res22.txt'.
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Загрузка…
Ссылка в новой задаче