3.5 KiB
Общее контрольное задание по теме 8
Грудинин Егор, А-03-23
Задание
Разработайте программу, состоящую из трех модулей:
-
Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколь-ко на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полу-ченный список должен возвращаться в вызывающую программу.
-
Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу.
-
Модуль 3 запрашивает у пользователя и вводит имена двух файлов с исходными данными, дважды вызывает функцию из модуля 1 и считывает два списка из двух текстовых файлов. За-тем вызывает функцию расчета коэффициента корреляции с помощью функции из модуля 2 и отображает рассчитанное значение на экране с округлением до трех цифр после точки.
Подготовьте два текстовых файла с числовыми данными и проверьте по ним работу программы.
Решение
Задача 1
Содержание модуля M1:
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:
1 2 3
3 4 5
6 7
8
Проверка:
>>> import M1
>>> M1.readFile('test_task.txt')
[1, 2, 3, 3, 4, 5, 6, 7, 8]
Задача 2
Содержание модуля M2:
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
>>> import M2
>>> M2.corr([1,2,3,4,5,6,7], [2,1,6,7,10,11,14])
0.9743547036924464
Задача 3
Содержание модуля M3:
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:
1 2 3 4 5 1 2 3 4 5
Содержание файла test2.txt:
2 3 6 8 10 1 2 3 4 9
>>> import M3
Введите имя первого файла: test1.txt
Введите имя второго файла: test2.txt
0.901