# Общее контрольное задание по Теме 8 Лазарев Данил, А-01-23 ## Задание Разработайте программу, состоящую из трех модулей: - Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. - Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. - Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. ## Решение Модуль1: ``` def f(filename): numbers = [] file = open(filename, 'r') for i in file: line_numbers = i.strip().split() for j in line_numbers: numbers.append(float(j)) file.close() return numbers ``` Модуль 2: ``` import math import statistics as st def correlation(list1, list2): n = min(len(list1), len(list2)) x = list1[:n] y = list2[:n] Xsr = st.mean(x) Ysr = st.mean(y) cov = st.covariance(x,y) Xso = st.stdev(x) Yso = st.stdev(y) R_paired = cov / ( Xso*Yso) return R_paired ``` Модуль 3: ``` import random import math mean1 = random.uniform(0, 50) std1 = random.uniform(0.1, 1) file1 = open("rand1.txt", "w") for i in range(20): num = round(random.normalvariate(mean1, std1),2) file1.write(f"{num}") if i < 19: file1.write(" ") file1.close() # Создание второго файла mean2 = random.uniform(0, 50) std2 = random.uniform(0.1, 1) file2 = open("rand2.txt", "w") for i in range(20): num = round(random.normalvariate(mean2, std2),2) file2.write(f"{num}") if i < 19: file2.write(" ") file2.close() import M1 import M2 def main(): file1 = input("Введите имя первого файла: ") file2 = input("Введите имя второго файла: ") list1 = M1.f(file1) list2 = M1.f(file2) print(len(list1)) correlation = M2.correlation(list1, list2) print(f"Парный коэффициент корреляции: {correlation:.3f}") main() ``` Выполнение программы: ``` import M0 >> Введите имя первого файла: rand1.txt >> Введите имя второго файла: rand2.txt >> Парный коэффициент корреляции: 0.149 ```