diff --git a/TEMA8/task.md b/TEMA8/task.md index 84766b1..885c85d 100644 --- a/TEMA8/task.md +++ b/TEMA8/task.md @@ -1,150 +1,71 @@ - # Общее контрольное задание по теме 8 - + # Общее контрольное задание по теме 8 Филиппов Даниил Юрьевич, А-01-23 - - - # Задание: - + # Задание: 1. Разработать программу, состоящую из трех модулей: +- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. -\- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. - - - -\- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. - - - -\- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. - +- Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. +- Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. Затем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки. Подготовить два текстовых файла с числовыми данными и проверить по ним работу программы. + # Решение - # Решение - - ## 1. Модуль 1 - Чтение данных из файла - + ## 1. Модуль 1 - Чтение данных из файла ```py - def read (file): - -  """"Чтение данных из файла""" - -  nums = \[] - -  with open(file, 'r') as file: # Открытие файла для чтения - -  for line in file: - -  nums.extend(map(float, line.split())) # Добавление всех элементов в список - -  return nums - + """"Чтение данных из файла""" + nums = [] + with open(file, 'r') as file: # Открытие файла для чтения + for line in file: + nums.extend(map(float, line.split())) # Добавление всех элементов в список + return nums ``` - - - ## 2. Модуль 2 - Расчёт коэффициента корреляции - + ## 2. Модуль 2 - Расчёт коэффициента корреляции ```py - def correlation(list1, list2): - -  """Расчёт коэффициента корреляции""" - -  n = min(len(list1), len(list2)) # Общая длина - -  list1 = list1\[:n] - -  list2 = list2\[:n] - -  mean1 = sum(list1) / n - -  mean2 = sum(list2) / n - -  chislitel = sum((list1\[i] - mean1) \* (list2\[i] - mean2) for i in range(n)) - -  #Числитель формулы корреляции - -  znamenatel1 = sum((x - mean1) \*\* 2 for x in list1) # Знаменатель формулы корреляции - -  znamenatel2 = sum((y - mean2) \*\* 2 for y in list2) - - - -  if znamenatel1 == 0 or znamenatel2 == 0: # Проверка деления на 0 - -  return 0 - -  - -  return chislitel/(znamenatel1 \* znamenatel2) \*\* 0.5 - + """Расчёт коэффициента корреляции""" + n = min(len(list1), len(list2)) # Общая длина + list1 = list1[:n] + list2 = list2[:n] + mean1 = sum(list1) / n + mean2 = sum(list2) / n + chislitel = sum((list1[i] - mean1) * (list2[i] - mean2) for i in range(n)) + #Числитель формулы корреляции + znamenatel1 = sum((x - mean1) ** 2 for x in list1) # Знаменатель формулы корреляции + znamenatel2 = sum((y - mean2) ** 2 for y in list2) + + if znamenatel1 == 0 or znamenatel2 == 0: # Проверка деления на 0 + return 0 + + return chislitel/(znamenatel1 * znamenatel2) ** 0.5 ``` - - - ## 3. Модуль 3 - Запрос у пользователя и ввод имён файлов с исходными данными - + ## 3. Модуль 3 - Запрос у пользователя и ввод имён файлов с исходными данными ```py - import Modul1 - import Modul2 - file1 = input("Введите имя первого файла: ") - file2 = input("Введите имя второго файла: ") - list1 = Modul1.read(file1) - list2 = Modul1.read(file2) - corr = Modul2.correlation(list1, list2) - print("Коэффициент корреляции:", corr) - ``` - - Были подготовлены два файла с данными data1.txt и data2.txt - - - - - ## 4. Тестирование - + ## 4. Тестирование ```py - >>> import Modul3 - Введите имя первого файла: data1.txt - Введите имя второго файла: data2.txt - Коэффициент корреляции: 0.9960784162656539 - ``` - - - - - - - - - - - - - -