форкнуто от main/python-labs
Родитель
8450546fd2
Сommit
9f86858a37
@ -0,0 +1,8 @@
|
||||
import M2, pickle
|
||||
|
||||
fp = open("Res1212.bin", "wb")
|
||||
pickle.dump(M2.KK, fp)
|
||||
pickle.dump(M2.CC, fp)
|
||||
pickle.dump(M2.HH, fp)
|
||||
print("Полученные списки записаны в файл 'Res1212.bin'")
|
||||
fp.close()
|
||||
@ -0,0 +1,16 @@
|
||||
def createNumberList(T1, T2, M):
|
||||
import random
|
||||
CC = random.sample(range(T1, T2, 1), M)
|
||||
return CC
|
||||
|
||||
def createListOfClosestNumbers(CC, KK):
|
||||
HH = []
|
||||
for i in range(len(CC)):
|
||||
delta = abs(CC[i] - KK[0])
|
||||
num = 0
|
||||
for j in range(1, len(KK)):
|
||||
if (abs(CC[i] - KK[j]) < delta):
|
||||
delta = abs(CC[i] - KK[j])
|
||||
num = j
|
||||
HH.append(KK[num])
|
||||
return HH
|
||||
@ -0,0 +1,17 @@
|
||||
import M1, random
|
||||
|
||||
[T1, T2] = [0, 0]
|
||||
|
||||
while True:
|
||||
[T1, T2] = input("Введите значения T1, T2: ").split(",")
|
||||
[T1, T2] = [int(T1), int(T2)]
|
||||
if (T1 < T2): break
|
||||
print("Значение T1 должно быть меньше значения T2")
|
||||
|
||||
M = int(input("Введите значение M: "))
|
||||
if M > T2 - T1: M = T2 - T1
|
||||
|
||||
CC = M1.createNumberList(T1, T2, M)
|
||||
KK = [random.randint(T1, T2 - 1) for x in range(500)]
|
||||
HH = M1.createListOfClosestNumbers(CC, KK)
|
||||
print("Список HH:", HH)
|
||||
Двоичный файл не отображается.
@ -0,0 +1,126 @@
|
||||
# Тест по модулю 3. Вариант 7
|
||||
|
||||
Степанов Артём, А-02-23
|
||||
|
||||
## Задание
|
||||
|
||||
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
|
||||
>>> # Содержимое модуля M1.py
|
||||
>>>
|
||||
def createNumberList(T1, T2, M):
|
||||
import random
|
||||
CC = random.sample(range(T1, T2, 1), M)
|
||||
return CC
|
||||
|
||||
def createListOfClosestNumbers(CC, KK):
|
||||
HH = []
|
||||
for i in range(len(CC)):
|
||||
delta = abs(CC[i] - KK[0])
|
||||
num = 0
|
||||
for j in range(1, len(KK)):
|
||||
if (abs(CC[i] - KK[j]) < delta):
|
||||
delta = abs(CC[i] - KK[j])
|
||||
num = j
|
||||
HH.append(KK[num])
|
||||
return HH
|
||||
>>>
|
||||
>>> # Содержимое модуля M2.py
|
||||
>>>
|
||||
import M1, random
|
||||
|
||||
[T1, T2] = [0, 0]
|
||||
|
||||
while True:
|
||||
[T1, T2] = input("Введите значения T1, T2: ").split(",")
|
||||
[T1, T2] = [int(T1), int(T2)]
|
||||
if (T1 < T2): break
|
||||
print("Значение T1 должно быть меньше значения T2")
|
||||
|
||||
M = int(input("Введите значение M: "))
|
||||
if M > T2 - T1: M = T2 - T1
|
||||
|
||||
CC = M1.createNumberList(T1, T2, M)
|
||||
KK = [random.randint(T1, T2 - 1) for x in range(500)]
|
||||
HH = M1.createListOfClosestNumbers(CC, KK)
|
||||
print("Список HH:", HH)
|
||||
>>>
|
||||
>>> # Содержимое модуля M0.py
|
||||
>>>
|
||||
import M2, pickle
|
||||
|
||||
fp = open("Res1212.bin", "wb")
|
||||
pickle.dump(M2.KK, fp)
|
||||
pickle.dump(M2.CC, fp)
|
||||
pickle.dump(M2.HH, fp)
|
||||
print("Полученные списки записаны в файл 'Res1212.bin'")
|
||||
fp.close()
|
||||
>>>
|
||||
>>> Пример работы программы на первом наборе параметров
|
||||
>>>
|
||||
>>> import os, pickle
|
||||
>>> os.chdir("C:\\Users\\u206-02\\Desktop\\StepanovAV\\python-labs\\TEMA9\\test")
|
||||
>>> os.getcwd()
|
||||
'C:\\Users\\u206-02\\Desktop\\StepanovAV\\python-labs\\TEMA9\\test'
|
||||
>>> import M0
|
||||
Введите значения T1, T2: 34, 78
|
||||
Введите значение M: 10
|
||||
Список HH: [61, 77, 46, 57, 68, 38, 60, 34, 72, 40]
|
||||
Полученные списки записаны в файл 'Res1212.bin'
|
||||
>>> fp = open("Res1212.bin", "rb")
|
||||
>>> K = pickle.load(fp)
|
||||
>>> C = pickle.load(fp)
|
||||
>>> H = pickle.load(fp)
|
||||
>>> K
|
||||
[76, 60, 52, ..., 35, 65, 49]
|
||||
>>> C
|
||||
[61, 77, 46, 57, 68, 38, 60, 34, 72, 40]
|
||||
>>> H
|
||||
[61, 77, 46, 57, 68, 38, 60, 34, 72, 40]
|
||||
>>>
|
||||
>>> Пример работы программы на втором наборе параметров
|
||||
>>>
|
||||
>>> import sys
|
||||
>>> sys.modules.pop("M0")
|
||||
<module 'M0' from 'C:\\Users\\u206-02\\Desktop\\StepanovAV\\python-labs\\TEMA9\\test\\M0.py'>
|
||||
>>> sys.modules.pop("M1")
|
||||
<module 'M1' from 'C:\\Users\\u206-02\\Desktop\\StepanovAV\\python-labs\\TEMA9\\test\\M1.py'>
|
||||
>>> sys.modules.pop("M2")
|
||||
<module 'M2' from 'C:\\Users\\u206-02\\Desktop\\StepanovAV\\python-labs\\TEMA9\\test\\M2.py'>
|
||||
>>> import M0
|
||||
Введите значения T1, T2: 25, 30
|
||||
Введите значение M: 8
|
||||
Список HH: [25, 29, 26, 27, 28]
|
||||
Полученные списки записаны в файл 'Res1212.bin'
|
||||
>>> fp = open("Res1212.bin", "rb")
|
||||
>>> K = pickle.load(fp)
|
||||
>>> C = pickle.load(fp)
|
||||
>>> H = pickle.load(fp)
|
||||
>>> K
|
||||
[29, 29, 28, ..., 25, 27, 26]
|
||||
>>> C
|
||||
[25, 29, 26, 27, 28]
|
||||
>>> H
|
||||
[25, 29, 26, 27, 28]
|
||||
```
|
||||
Загрузка…
Ссылка в новой задаче