# Общее контрольное задание по теме 8 ## Бушманов А.С. А-01-23 ## Задание: Разработайте программу, состоящую из трех модулей: - Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. - Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. - Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. ## Решение: ```python #1 def read_file(filename): numbers = [] f = open(filename, "r", encoding="utf-8") for line in f: parts = line.split() # разбиваем строку по пробелам for p in parts: numbers.append(float(p)) # добавляем число в список f.close() return numbers #2 import math def correlation(l1, l2): n = min(len(l1), len(l2)) x = l1[:n] y = l2[:n] sx = sum(x) sy = sum(y) sxx = 0 syy = 0 sxy = 0 for i in range(n): sxx += x[i] * x[i] syy += y[i] * y[i] sxy += x[i] * y[i] num = n * sxy - sx * sy den = math.sqrt((n * sxx - sx * sx) * (n * syy - sy * sy)) return num / den #3 import module1 import module2 file1 = input("Введите имя первого файла: ") file2 = input("Введите имя второго файла: ") a = module1.read_file(file1) b = module1.read_file(file2) r = module2.correlation(a, b) print(f"Coef cor: {r:.3f}") ``` ## Ответ: ```python import module3.py Введите имя первого файла: data1.txt Введите имя второго файла: data2.txt Coef cor: 0.105 ``` ## Файлы: data1.txt ``` 2 7 1 8 2 8 1 8 2 8 ``` data2.txt ``` 3 1 4 1 5 9 2 6 5 3 ```