#Тема 8 общее задание ## Задание Разработайте программу, состоящую из трех модулей: - Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Получен-ный список должен возвращаться в вызывающую программу. - Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. - Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. ## Решение Модуль чтения readerfile.py ```py def reader(filename): num = [] with open(filename, 'r', encoding = 'utf-8') as file: for line in file: elements = line.strip().split() for elem in elements: number = float(elem) num.append(number) return num ``` Модуль калькулятора корреляции correlate.py ```py import math def correlation(numbers1, numbers2): if not numbers1 or not numbers2: print('пусто') return(0) n = min(len(numbers1), len(numbers2)) x = numbers1[:n] y = numbers2[:n] meanx = sum(x)/n meany = sum(y)/n sum1 = 0 sum2 = 0 sum3 = 0 for i in range (n): sum1 += ((x[i] - meanx)*(y[i] - meany)) sum2 += ((x[i] - meanx)**2) sum3 += ((y[i] - meany)**2) print(sum1,sum2,sum3) return (sum1/math.sqrt(sum2*sum3)) ``` Главный модуль mainfile.py ```py from readerfile import reader from correlate import correlation def main(): print("_________Калькулятор корреляции_________") file1 = input("Первый файл: ").strip() file2 = input("Второй файл: ").strip() numbers1 = reader(file1) numbers2 = reader(file2) print(numbers1) print(numbers2) cor = correlation(numbers1, numbers2) print("Коэффициент корреляции - ", cor) ``` Результат работы программы: ```py >>> import mainfile >>> mainfile.main() _________Калькулятор корреляции_________ Первый файл: num1.txt Второй файл: num2.txt [44.0, 50.0, 43.0, 30.0, 24.0, 10.0, 9.0, 1.0, 5.0, 29.0, 19.0, 14.0, 21.0] [30.0, 60.0, 58.0, 40.0, 34.0, 20.0, 19.0, 16.0, 15.0, 39.0, 28.0, 24.0, 31.0] 2420.0 2930.0 2519.6923076923076 Коэффициент корреляции - 0.8906514939994264 ``` Выводится содержимое файлов, а также суммы, полученные в correlate.py, для проверки достоверности работы расчетов