Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

86 строки
3.3 KiB
Markdown

# Общее контрольное задание по теме 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
```