diff --git a/TEMA8/task.md b/TEMA8/task.md new file mode 100644 index 0000000..29e4876 --- /dev/null +++ b/TEMA8/task.md @@ -0,0 +1,130 @@ +\# Общее контрольное задание по Теме 8 + +Соловьёва Екатерина, А-01-23 + +\## Задание + +Общее контрольное задание. + +Разработайте программу, состоящую из трех модулей: + +\* Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. + +\* Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. + +\* Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. + +Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы. + + + +\## Решение + +Mod1 + +```py + +def reading (file): + +  nums = \[] + +  with open(file, 'r') as file: + +  for line in file: + +  nums.extend(map(float, line.split())) + +  return nums + + + +``` + +Mod2 + +```py + +import math + + + +def correlation(list1, list2): + +  n = min(len(list1), len(list2)) + +  if n < 2: + +  return None + +  + +  x, y = list1\[:n], list2\[:n] + +  mean\_x, mean\_y = sum(x)/n, sum(y)/n + +  + +  num = sum((x\[i]-mean\_x)\*(y\[i]-mean\_y) for i in range(n)) + +  den = math.sqrt(sum((x\[i]-mean\_x)\*\*2 for i in range(n)) \* + +  sum((y\[i]-mean\_y)\*\*2 for i in range(n))) + +  + +  return num/den if den != 0 else None + +``` + +Mod3 + +```py + +from Mod1 import reading + +from Mod2 import correlation + + + +file1 = input("Введите имя первого файла: ") + +file2 = input("Введите имя второго файла: ") + + + +arr1 = reading(file1) + +arr2 = reading(file2) + + + +if arr1 is None or arr2 is None: + +  print("Не удалось считать данные из файлов.") + +else: + +  corr = correlation(arr1, arr2) + +  if corr is not None: + +  print(f"Коэффициент корреляции: {corr:.2f}") + +``` + +\## Вывод + +```py + +=================================================== RESTART: C:/Users/Ekaterina/OneDrive/Desktop/Solovyova/python-labs/TEMA8/Mod3.py =================================================== + +Введите имя первого файла: data1.txt + +Введите имя второго файла: data2.txt + +Коэффициент корреляции: -0.88 + +``` + + +