From fad1a92cca379eb2a9765734421d0dc72d60e769 Mon Sep 17 00:00:00 2001 From: PodolskyNK Date: Fri, 19 Dec 2025 11:00:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=98=D0=9A=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA8/main_test.py | 28 ++++++++++++++++++++++++++++ TEMA8/module_pulse.py | 30 ++++++++++++++++++++++++++++++ TEMA8/signal.txt | 20 ++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 TEMA8/main_test.py create mode 100644 TEMA8/module_pulse.py create mode 100644 TEMA8/signal.txt diff --git a/TEMA8/main_test.py b/TEMA8/main_test.py new file mode 100644 index 0000000..df9f589 --- /dev/null +++ b/TEMA8/main_test.py @@ -0,0 +1,28 @@ +# main_test.py + +from module_pulse import generate_pulse_signal + +def main(): + print("Генератор импульсного сигнала (вариант 4)\n") + + ampl = float(input("Амплитуда: ")) + pulse_len = int(input("Длительность импульса (отсчёты): ")) + period = int(input("Период (импульс+пауза, отсчёты): ")) + n_samples = int(input("Число отсчётов: ")) + filename = input("Имя файла для записи (например signal.txt): ").strip() + + signal = generate_pulse_signal(ampl, pulse_len, period, n_samples, filename) + + print("\nГотово.") + print(f"Сигнал записан в файл: {filename}") + print("Первые 30 отсчётов (или меньше):") + print(signal[:30]) + + # чтобы было видно структуру по периодам: + print("\nСигнал по строкам (индекс: значение) для первых 30:") + for i in range(min(30, len(signal))): + print(i, ":", signal[i]) + + +if __name__ == "__main__": + main() diff --git a/TEMA8/module_pulse.py b/TEMA8/module_pulse.py new file mode 100644 index 0000000..c792bce --- /dev/null +++ b/TEMA8/module_pulse.py @@ -0,0 +1,30 @@ +# module_pulse.py + +def generate_pulse_signal(ampl, pulse_len, period, n_samples, filename): + + if not isinstance(pulse_len, int) or pulse_len <= 0: + raise ValueError("pulse_len должен быть целым > 0") + if not isinstance(period, int) or period <= 0: + raise ValueError("period должен быть целым > 0") + if period < pulse_len: + raise ValueError("period должен быть >= pulse_len (иначе пауза отрицательная)") + if not isinstance(n_samples, int) or n_samples <= 0: + raise ValueError("n_samples должен быть целым > 0") + if not isinstance(filename, str) or filename.strip() == "": + raise ValueError("filename должен быть непустой строкой") + + signal = [] + for i in range(n_samples): + pos_in_period = i % period + if pos_in_period < pulse_len: + signal.append(ampl) + else: + signal.append(0) + + # запись столбцом + with open(filename, "w", encoding="utf-8") as f: + for i in range(len(signal)): + f.write(str(signal[i]) + "\n") + + + return signal diff --git a/TEMA8/signal.txt b/TEMA8/signal.txt new file mode 100644 index 0000000..543aede --- /dev/null +++ b/TEMA8/signal.txt @@ -0,0 +1,20 @@ +5.0 +5.0 +5.0 +0 +0 +0 +0 +0 +5.0 +5.0 +5.0 +0 +0 +0 +0 +0 +5.0 +5.0 +5.0 +0