From 0b10f61827b0935e2953765deb10bf14193e7a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=E2=84=96=204=20=D0=B0=D1=83=D0=B4=D0=B8?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20=D0=96-206?= Date: Mon, 8 Dec 2025 15:34:46 +0300 Subject: [PATCH] test --- TEMA8/Fig1.png | Bin 0 -> 18340 bytes TEMA8/test_mod.md | 206 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 TEMA8/Fig1.png create mode 100644 TEMA8/test_mod.md diff --git a/TEMA8/Fig1.png b/TEMA8/Fig1.png new file mode 100644 index 0000000000000000000000000000000000000000..31cf58b797d58cf18fafa6db1c6f534140f5843f GIT binary patch literal 18340 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 literal 0 HcmV?d00001 diff --git a/TEMA8/test_mod.md b/TEMA8/test_mod.md new file mode 100644 index 0000000..8a4e0d6 --- /dev/null +++ b/TEMA8/test_mod.md @@ -0,0 +1,206 @@ +# Тест модуля 3 + +Похил Анастасия, А-02-23, вариант 22 + +## Задание +1) Создайте модуль Мm1, содержащий две функции: + +- функция 1: аргументы - имя текстового файла с числовыми данными (может быть разное число значений на каждой строке) и пороговое значение КК; считываются значения из указанного файла и записываются в два новых текстовых файла, имена которых совпадают с именем входного файла с добавлением 1 и 2 - в первый файл записываются значения, превышающие заданный порог, а во второй - не превышающие его. Исходные данные в виде списка возвращаются в вызывающую программу; + +- функция 2: аргумент - имя текстового файла с исходными данными; считываются значения из указанного файла, формируются в виде списка и по нему рассчитываются: среднее, медиана, наименьшее и наибольшее значения, стандартное отклонение - это возвращаемые результаты функции. + +2) Создайте еще один модуль Мm2, в котором должны: + +- запрашиваться имя файла с исходными данными, проверяться его наличие и при отсутствии - повторение запроса; + +- запрос порогового значения КК; + +- вызов функции 1 с указанным именем; + +- трижды вызвать функцию 2: с именем указанного в ответе на запрос файла, а также с каждым из файлов, созданных в функции 1; отобразить результаты расчетов. + +3) Создайте модуль Мm0 - главную программу, которая вызывает М2, отображает исходные данные в виде графика и записывает их в бинарный файл RES2a.bin. + +4) Подготовьте 2 файла с не менее, чем с 20 числовыми значениями с разным числом элементов на разных строках и проверьте с ними разработанную программу. + + +## Решение +```py +#Mmod1 +import statistics + +def funkciya1(imya_faila, KK): + f = open(imya_faila, 'r') + stroki = f.readlines() + f.close() + vse_chisla = [] + + + for stroka in stroki: + slova = stroka.split() + + for slovo in slova: + if slovo: + chislo = float(slovo) + vse_chisla.append(chislo) + + if imya_faila.endswith('.txt'): + osnova = imya_faila[:-4] + else: + osnova = imya_faila + + imya1 = osnova + '1.txt' + imya2 = osnova + '2.txt' + + f1 = open(imya1, 'w') + + f2 = open(imya2, 'w') + + + for chislo in vse_chisla: + if chislo > KK: + f1.write(str(chislo) + '\n') + else: + f2.write(str(chislo) + '\n') + + f1.close() + f2.close() + + return vse_chisla + + +def funkciya2(imya_faila): + f = open(imya_faila, 'r') + stroki = f.readlines() + f.close() + chisla = [] + + for stroka in stroki: + slova = stroka.split() + + for slovo in slova: + if slovo: + chisla.append(float(slovo)) + + if len(chisla) == 0: + return None + + + srednee = statistics.mean(chisla) + mediana = statistics.median(chisla) + minimum = min(chisla) + maximum = max(chisla) + std = statistics.stdev(chisla) + + return [srednee, mediana, minimum, maximum, std] + +``` +2) +```py +# Модуль Мmod2 +import Mmod1 +import os + +while True: + imya = input("Введите имя файла с данными: ") + if os.path.exists(imya): + break + else: + print(f"Ошибка: файл '{imya}' не найден!") + +KK_str = input("пороговое значение КК: ") +KK = float(KK_str) +vse_chisla = Mmod1.funkciya1(imya, KK) + + +print("Для исходного файла:") +rez1 = Mmod1.funkciya2(imya) +if rez1: + print(rez1[0]) + print({rez1[1]) + print(rez1[2]) + print(rez1[3]) + print(rez1[4]) +else: + print(" ") + + + +if imya.endswith('.txt'): + osnova = imya[:-4] +else: + osnova = imya + +imya1 = osnova + '1.txt' + +print(f"Для файла '{imya1}':") +if os.path.exists(imya1): + rez2 = Mmod1.funkciya2(imya1) + if rez2: + print(rez2[0]) + print(rez2[1]) + print(rez2[2]) + print(rez2[3]) + print(rez2[4]) + else: + print("") + + +imya2 = osnova + '2.txt' + +print(f"Для файла '{imya2}':") +if os.path.exists(imya2): + rez3 = Mmod1.funkciya2(imya2) + if rez3: + print(rez3[0]) + print(rez3[1]) + print(rez3[2]) + print(rez3[3]) + print(rez3[4]) + else: + print("") +``` +3) +````py +#Mmod0 +import Mmod2 +import matplotlib.pyplot as plt + +with open("data.txt", "r") as f: + d = [float(x) for line in f for x in line.split()] + +plt.plot(d) +plt.show() + +with open("RES2a.bin", "wb") as f: + f.write(struct.pack("i", len(d))) + for x in d: + f.write(struct.pack("f", x)) +``` + + +# Результат +```py +Введите имя файла с данными: data.txt +пороговое значение КК: 6 +Для исходного файла: +10.5 +10.5 +1.0 +20.0 +5.916079783099616 +Для файла 'data1.txt': +13.5 +13.5 +7.0 +20.0 +4.183300132670378 +Для файла 'data2.txt': +3.5 +3.5 +1.0 +6.0 +1.8708286933869707 +``` + +![](Fig1.PNG) \ No newline at end of file