# Общее контрольное задание по теме 8 Грудинин Егор, А-03-23 ## Задание Разработайте программу, состоящую из трех модулей: - Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколь-ко на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полу-ченный список должен возвращаться в вызывающую программу. - Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. - Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. ## Решение ### Задача 1 Содержание модуля M1: ```py def readFile(fName): fp = open(fName, 'r') data = fp.read() fp.close() ls = list(map(int, data.replace('\n', ' ').split(' '))) return ls ``` Содержание файла test_task.txt: ```py 1 2 3 3 4 5 6 7 8 ``` Проверка: ```py >>> import M1 >>> M1.readFile('test_task.txt') [1, 2, 3, 3, 4, 5, 6, 7, 8] ``` ### Задача 2 Содержание модуля M2: ```py def corr(l1, l2): N = len(l1) m1 = sum(l1) / N m2 = sum(l2) / N a1 = 0 a2 = 0 a3 = 0 for i in range(N): a1 += (l1[i] - m1) * (l2[i] - m2) a2 += (l1[i] - m1) ** 2 a3 += (l2[i] - m2) ** 2 res = a1 / (((a2) * (a3)) ** 0.5) return res ``` ```py >>> import M2 >>> M2.corr([1,2,3,4,5,6,7], [2,1,6,7,10,11,14]) 0.9743547036924464 ``` ### Задача 3 Содержание модуля M3: ```py from M1 import readFile from M2 import corr name1 = input('Введите имя первого файла: ') name2 = input('Введите имя второго файла: ') l1 = readFile(name1) l2 = readFile(name2) print(round(corr(l1, l2), 3)) ``` Содержание файла test1.txt: ```py 1 2 3 4 5 1 2 3 4 5 ``` Содержание файла test2.txt: ```py 2 3 6 8 10 1 2 3 4 9 ``` ```py >>> import M3 Введите имя первого файла: test1.txt Введите имя второго файла: test2.txt 0.901 ```