Изменил(а) на 'TEMA9/test1.md'

main
BerezhkovDA 1 месяц назад
Родитель 546f73ddfd
Сommit 5d981615c0

@ -1,117 +1,125 @@
# # Тест по модулю 3, тема 9 (вариант 7)
Бережков Дмитрий А-01-23
## Задание:
M3_7
1) Создайте модуль М1, содержащий две функции:
- функция 1: аргументы - три целочисленных параметра: Т1, Т2 и М; функция должна рассчитать и вернуть список СС с М неповторяющимися целыми числами в интервале значений между Т1 и Т2;
- функция 2: аргументы - список СС с неповторяющимися целыми числами и список или кортеж КК с целыми числами; функция должна создать список НН, с числом элементов, равным длине СС, и с целыми значениями из КК, близкими к соответствующим элементам в СС; так, элемент КК[i] считается близким к элементу CC[j], если для него абсолютная разность |KK[i]-CC[j]| - наименьшая по всем CC[j].
2) Создайте еще один модуль М2, в котором должны выполняться операции:
- запрашиваются у пользователя целочисленные границы диапазона значений Т1 и Т2; проверяется T1<T2 и, если это не выполняется - запрос повторяется;
- запрашивается у пользователя целое число М - число значений в списке СС; если М>(T2-T1), то принимается М=Т2-Т1;
- с помощью функции 1 создается и отображается список СС;
- создается список КК с 500 случайными целыми числами в диапазоне значений от Т1 до Т2;
- с помощью функции 2 рассчитывается список НН; результат отображается на экране.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и записывает списки КК, СС и НН в бинарный файл Res1212.bin.
4) Проверьте программу при двух наборах исходных данных:
- Т1=34, Т2=78, М= 10
- Т1=25, Т2=30, М=8.
## Решение:
```py
import random
def func1(T1, T2, M):
"""
Рассчет списка СС с M неповторяющимися целыми числами
в интервале между T1 и T2
"""
if T2 - T1 < M:
M = T2 - T1
CC = random.sample(range(T1, T2), M)
return CC
def func2(CC, KK):
"""
Создание списка НН (с числом элементов, равным длине СС) с целыми значениями из КК,
близкими к соответствующим элементам в СС
"""
HH = []
for i in CC:
cl = min(KK, key= lambda x: abs(x - i))
HH.append(cl)
return HH
```
```py
import M1
import random
def main():
while True:
try:
T1 = int(input("Введите первую границу: "))
T2 = int(input("Введите вторую границу: "))
if T1 < T2:
break
else:
print("Ошибка. Первая граница должна быть меньше второй границы.")
except ValueError:
print("Ошибка: введите целое число.")
while True:
try:
M = int(input("Введите количество значений в списке СС: "))
break
except ValueError:
print("Ошибка: введите целое число.")
if M > (T2 - T1):
M = T2 - T1
CC = M1.func1(T1, T2, M)
print("Список СС:", CC)
KK = [random.randint(T1, T2) for _ in range(500)]
HH = M1.func2(CC, KK)
print("Список НН:", HH)
return KK, CC, HH
```
```py
import M2
import pickle
CC, KK, HH = M2.main()
data_M2 = {'CC': CC,'KK': KK,'HH': HH}
filename = "Res1212.bin"
with open(filename, 'wb') as file:
pickle.dump(data_M2, file)
```
## Тестированние:
```py
Введите первую границу: 34
Введите вторую границу: 78
Введите количество значений в списке СС: 10
Список СС: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70]
Список НН: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70]
```
```py
Ђ•0 }”(ЊCC”]”(K?K.K=K$K$K/KIK/KFKCKKK/KHKFK2K@KJK8KJK3K,K;KGK)K3K"KHK%K8K>KDKNK4K"K(K$KKKMK+K&KMKNKBK=K'K2K'K4KIKNK<K&K.K-K=K"K>K0K5K"K,K0K@K6KDKBK(KCK(KIKLKLK5KIK;K6K)K(KMK"KLK:K:KCK-KLK)K9K7KJK/K@K9KHK%K,K(KIKNK<K9K&K$KCKJKMK5K"K>K#K+K)K=K)KJK(K"K,KFK4K+KNK%KMKBKIK&K*K9K-K4K*K(K%K-K6K8K/K&KJK4K,K?KEK1K7K"K:K-K5K(K@K>K9K5K'K'K%K"K"K1KGK>K(KIK-K=KMKDKBK(KNKFKJK)K;K8KKKGK+K.KIKEK5K8K3K:K'K$K?KEKJK0K5K#KLKFK#KLK3K7K+K2K&KLK>K+K2KBK0K:K)K$K9KFK3KNK<K-K*K9K'K3K.K9K2K3KDKAKGKHKEKAK7KNK-KFK0K*K/K5KFKLKHKNKEK2K+K9K7K:K/KEK9K7K&K5KIK=KCK0KIK*KNK2K0K8KKKBK@KBK;KBK0K=K2K(K(K-KAKCK>KNK@KJKMK5KDK;KIK:K<K0K.K+KFK2K%K1K:K&K0KAK$K@KKK5K.K1K*K@KJK,K&KCKMKLK(K9KCK3K=K=K(KKK$K@KCK;KJKKK>K,K1K?KKK+KAK;K,K4KHKBKAK1K=KEK@K)KNK*K*K"KJK=K@KBK1KHK@K"KAK4K$K#K7K8KKK6K@KKK:KBK.KIK#K*K&K5K,K)K?KHK)K)K=K7KBK1KKK%K.KKK4K7K-K6K2K-KKKLK6KIK;K&K(KNK2KGK1K)K1K,KJKMKIK6KMK+K/K8KLK8KAKKKEK&K,K$K=KLK?K.K#K-K@K/K:K&K#K"K0K@KKKGK-KMK4KIK7K;KEK"K"K3K*KBK#KGK@KHK0K(KIKFK5K;KBK>K4K6K5K'K'K=K7K.K,K=K)KFK-KHKDKFKCK)K)KLKEK&K6KJK'K%K?K3K@K(K'eЊKK”]”(K8K2KMK$K%K5K)KKKLKFeЊHH”]”(K8K2KMK$K%K5K)KKKLKFeu.
```
```py
Введите первую границу: 25
Введите вторую границу: 30
Введите количество значений в списке СС: 8
Список СС: [28, 25, 27, 26, 29]
Список НН: [28, 25, 27, 26, 29]
```
```py
Ђ }”(ЊCC”]”(KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK”]”(KKKKKHH”]”(KKKKKeu.
```
# # Тест по модулю 3, тема 9 (вариант 7)
Бережков Дмитрий А-01-23
## Задание:
M3_7
1) Создайте модуль М1, содержащий две функции:
- функция 1: аргументы - три целочисленных параметра: Т1, Т2 и М; функция должна рассчитать и вернуть список СС с М неповторяющимися целыми числами в интервале значений между Т1 и Т2;
- функция 2: аргументы - список СС с неповторяющимися целыми числами и список или кортеж КК с целыми числами; функция должна создать список НН, с числом элементов, равным длине СС, и с целыми значениями из КК, близкими к соответствующим элементам в СС; так, элемент КК[i] считается близким к элементу CC[j], если для него абсолютная разность |KK[i]-CC[j]| - наименьшая по всем CC[j].
2) Создайте еще один модуль М2, в котором должны выполняться операции:
- запрашиваются у пользователя целочисленные границы диапазона значений Т1 и Т2; проверяется T1<T2 и, если это не выполняется - запрос повторяется;
- запрашивается у пользователя целое число М - число значений в списке СС; если М>(T2-T1), то принимается М=Т2-Т1;
- с помощью функции 1 создается и отображается список СС;
- создается список КК с 500 случайными целыми числами в диапазоне значений от Т1 до Т2;
- с помощью функции 2 рассчитывается список НН; результат отображается на экране.
3) Создайте модуль М0 - главную программу, которая вызывает М2 и записывает списки КК, СС и НН в бинарный файл Res1212.bin.
4) Проверьте программу при двух наборах исходных данных:
- Т1=34, Т2=78, М= 10
- Т1=25, Т2=30, М=8.
## Решение:
```py
import random
def func1(T1, T2, M):
"""
Рассчет списка СС с M неповторяющимися целыми числами
в интервале между T1 и T2
"""
if T2 - T1 < M:
M = T2 - T1
CC = random.sample(range(T1, T2), M)
return CC
def func2(CC, KK):
"""
Создание списка НН (с числом элементов, равным длине СС) с целыми значениями из КК,
близкими к соответствующим элементам в СС
"""
HH = []
for i in CC:
cl = min(KK, key= lambda x: abs(x - i))
HH.append(cl)
return HH
```
```py
import M1
import random
def main():
while True:
try:
T1 = int(input("Введите первую границу: "))
T2 = int(input("Введите вторую границу: "))
if T1 < T2:
break
else:
print("Ошибка. Первая граница должна быть меньше второй границы.")
except ValueError:
print("Ошибка: введите целое число.")
while True:
try:
M = int(input("Введите количество значений в списке СС: "))
break
except ValueError:
print("Ошибка: введите целое число.")
if M > (T2 - T1):
M = T2 - T1
CC = M1.func1(T1, T2, M)
print("Список СС:", CC)
KK = [random.randint(T1, T2) for _ in range(500)]
HH = M1.func2(CC, KK)
print("Список НН:", HH)
return KK, CC, HH
```
```py
import M2
import pickle
CC, KK, HH = M2.main()
data_M2 = {'CC': CC,'KK': KK,'HH': HH}
filename = "Res1212.bin"
with open(filename, 'wb') as file:
pickle.dump(data_M2, file)
```
## Тестированние:
Вывод с тестовыми значениями 1 (Т1=34, Т2=78, М= 10)
```py
Введите первую границу: 34
Введите вторую границу: 78
Введите количество значений в списке СС: 10
Список СС: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70]
Список НН: [56, 50, 77, 36, 37, 53, 41, 75, 76, 70]
```
Бинарный файл:
```py
Ђ•0 }”(ЊCC”]”(K?K.K=K$K$K/KIK/KFKCKKK/KHKFK2K@KJK8KJK3K,K;KGK)K3K"KHK%K8K>KDKNK4K"K(K$KKKMK+K&KMKNKBK=K'K2K'K4KIKNK<K&K.K-K=K"K>K0K5K"K,K0K@K6KDKBK(KCK(KIKLKLK5KIK;K6K)K(KMK"KLK:K:KCK-KLK)K9K7KJK/K@K9KHK%K,K(KIKNK<K9K&K$KCKJKMK5K"K>K#K+K)K=K)KJK(K"K,KFK4K+KNK%KMKBKIK&K*K9K-K4K*K(K%K-K6K8K/K&KJK4K,K?KEK1K7K"K:K-K5K(K@K>K9K5K'K'K%K"K"K1KGK>K(KIK-K=KMKDKBK(KNKFKJK)K;K8KKKGK+K.KIKEK5K8K3K:K'K$K?KEKJK0K5K#KLKFK#KLK3K7K+K2K&KLK>K+K2KBK0K:K)K$K9KFK3KNK<K-K*K9K'K3K.K9K2K3KDKAKGKHKEKAK7KNK-KFK0K*K/K5KFKLKHKNKEK2K+K9K7K:K/KEK9K7K&K5KIK=KCK0KIK*KNK2K0K8KKKBK@KBK;KBK0K=K2K(K(K-KAKCK>KNK@KJKMK5KDK;KIK:K<K0K.K+KFK2K%K1K:K&K0KAK$K@KKK5K.K1K*K@KJK,K&KCKMKLK(K9KCK3K=K=K(KKK$K@KCK;KJKKK>K,K1K?KKK+KAK;K,K4KHKBKAK1K=KEK@K)KNK*K*K"KJK=K@KBK1KHK@K"KAK4K$K#K7K8KKK6K@KKK:KBK.KIK#K*K&K5K,K)K?KHK)K)K=K7KBK1KKK%K.KKK4K7K-K6K2K-KKKLK6KIK;K&K(KNK2KGK1K)K1K,KJKMKIK6KMK+K/K8KLK8KAKKKEK&K,K$K=KLK?K.K#K-K@K/K:K&K#K"K0K@KKKGK-KMK4KIK7K;KEK"K"K3K*KBK#KGK@KHK0K(KIKFK5K;KBK>K4K6K5K'K'K=K7K.K,K=K)KFK-KHKDKFKCK)K)KLKEK&K6KJK'K%K?K3K@K(K'eЊKK”]”(K8K2KMK$K%K5K)KKKLKFeЊHH”]”(K8K2KMK$K%K5K)KKKLKFeu.
```
Вывод с тестовыми значениями 1 (Т1=25, Т2=30, М= 8)
```py
Введите первую границу: 25
Введите вторую границу: 30
Введите количество значений в списке СС: 8
Список СС: [28, 25, 27, 26, 29]
Список НН: [28, 25, 27, 26, 29]
```
Бинарный файл:
```py
Ђ }”(ЊCC”]”(KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK”]”(KKKKKHH”]”(KKKKKeu.
```

Загрузка…
Отмена
Сохранить