форкнуто от main/python-labs
Родитель
5e499cc963
Сommit
af3fb08055
@ -0,0 +1,22 @@
|
|||||||
|
# M0.py
|
||||||
|
import pickle
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import M2
|
||||||
|
|
||||||
|
def write_bin(filename,data):
|
||||||
|
with open(filename,"wb") as f:
|
||||||
|
pickle.dump(data,f)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
CC2=M2.run()
|
||||||
|
x=[]
|
||||||
|
i=0
|
||||||
|
while i<len(CC2):
|
||||||
|
x.append(i)
|
||||||
|
i=i+1
|
||||||
|
plt.plot(x,CC2)
|
||||||
|
plt.grid(True)
|
||||||
|
plt.show()
|
||||||
|
write_bin("RES2a.bin",CC2)
|
||||||
|
|
||||||
|
main()
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
# M1.py
|
||||||
|
|
||||||
|
def func1(CC):
|
||||||
|
CC1 = []
|
||||||
|
CC2 = []
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while i < len(CC):
|
||||||
|
value = CC[i]
|
||||||
|
j = 0
|
||||||
|
exists = 0
|
||||||
|
while j < len(CC1):
|
||||||
|
if CC1[j] == value:
|
||||||
|
exists = 1
|
||||||
|
break
|
||||||
|
j = j + 1
|
||||||
|
if exists == 0:
|
||||||
|
CC1.append(value)
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while i < len(CC1):
|
||||||
|
value = CC1[i]
|
||||||
|
count = 0
|
||||||
|
j = 0
|
||||||
|
while j < len(CC):
|
||||||
|
if CC[j] == value:
|
||||||
|
count = count + 1
|
||||||
|
j = j + 1
|
||||||
|
CC2.append(count)
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
return CC1, CC2
|
||||||
|
|
||||||
|
|
||||||
|
def func2(filename, CC, n):
|
||||||
|
with open(filename, "w", encoding="utf-8") as f:
|
||||||
|
i = 0
|
||||||
|
in_line = 0
|
||||||
|
while i < len(CC):
|
||||||
|
if in_line > 0:
|
||||||
|
f.write(" ")
|
||||||
|
f.write(str(CC[i]))
|
||||||
|
in_line = in_line + 1
|
||||||
|
|
||||||
|
if in_line == n:
|
||||||
|
f.write("\n")
|
||||||
|
in_line = 0
|
||||||
|
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
if in_line != 0:
|
||||||
|
f.write("\n")
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
# M2.py
|
||||||
|
|
||||||
|
import M1
|
||||||
|
|
||||||
|
def to_value(text):
|
||||||
|
s = text.strip()
|
||||||
|
if s.isdigit():
|
||||||
|
return int(s)
|
||||||
|
return s
|
||||||
|
|
||||||
|
def run():
|
||||||
|
filename = input()
|
||||||
|
MM = []
|
||||||
|
with open(filename, "r", encoding="utf-8") as f:
|
||||||
|
for line in f:
|
||||||
|
parts = line.split()
|
||||||
|
i = 0
|
||||||
|
while i < len(parts):
|
||||||
|
MM.append(to_value(parts[i]))
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
CC1, CC2 = M1.func1(MM)
|
||||||
|
print(CC1)
|
||||||
|
print(CC2)
|
||||||
|
M1.func2("RES2.txt", CC1, 3)
|
||||||
|
return CC2
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
Иванов
|
||||||
|
Петров
|
||||||
|
Сидоров
|
||||||
|
Иванов
|
||||||
|
Смирнов
|
||||||
|
Кузнецов
|
||||||
|
Петров
|
||||||
|
Иванов
|
||||||
|
Орлов
|
||||||
|
Орлов
|
||||||
|
Сидоров
|
||||||
|
Сидоров
|
||||||
|
Петров
|
||||||
|
Смирнов
|
||||||
|
Иванов
|
||||||
|
Кузнецов
|
||||||
|
Кузнецов
|
||||||
|
Петров
|
||||||
|
Орлов
|
||||||
|
Смирнов
|
||||||
|
Иванов
|
||||||
|
Петров
|
||||||
|
Сидоров
|
||||||
|
Иванов
|
||||||
|
Смирнов
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
21
|
||||||
|
25
|
||||||
|
23
|
||||||
|
27
|
||||||
|
22
|
||||||
|
24
|
||||||
|
26
|
||||||
|
20
|
||||||
|
21
|
||||||
|
25
|
||||||
|
23
|
||||||
|
27
|
||||||
|
22
|
||||||
|
24
|
||||||
|
26
|
||||||
|
20
|
||||||
|
21
|
||||||
|
25
|
||||||
|
23
|
||||||
|
27
|
||||||
|
22
|
||||||
|
24
|
||||||
|
26
|
||||||
|
20
|
||||||
|
21
|
||||||
|
25
|
||||||
|
23
|
||||||
|
27
|
||||||
|
22
|
||||||
|
24
|
||||||
|
26
|
||||||
|
20
|
||||||
|
21
|
||||||
|
25
|
||||||
|
23
|
||||||
|
27
|
||||||
|
22
|
||||||
|
24
|
||||||
|
26
|
||||||
|
20
|
||||||
|
21
|
||||||
|
25
|
||||||
|
23
|
||||||
|
27
|
||||||
|
22
|
||||||
|
24
|
||||||
|
26
|
||||||
|
20
|
||||||
|
21
|
||||||
|
25
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
Иванов Петров Сидоров
|
||||||
|
Смирнов Кузнецов Орлов
|
||||||
Двоичный файл не отображается.
@ -0,0 +1,174 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 9
|
||||||
|
|
||||||
|
Коломейцев Дмитрий, А-02-23
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
|
||||||
|
Вариант M3_5
|
||||||
|
|
||||||
|
1) Создайте модуль М1, содержащий две функции:
|
||||||
|
|
||||||
|
- функция 1: аргумент - список СС с числовыми или символьными значениями; по этому списку рассчитывается новый список СС1 с неповторяющимися значениями из исходного списка и числовой список СС2 с целочисленными элементами, равными числам повторений значений из СС1 в СС; эти два списка - результаты функции.
|
||||||
|
|
||||||
|
- функция 2: аргументы - имя текстового файла, список с числовыми или символьными значениями и целое число; элементы из входного списка должны быть записаны в указанный файл, причем число элементов в строке файла должно равняться указанному целому числу.
|
||||||
|
|
||||||
|
2) Создайте еще один модуль М2, в котором должны:
|
||||||
|
|
||||||
|
- запрашиваться имя текстового файла с исходными данными, проверяться его наличие и при отсутствии - повторение запроса;
|
||||||
|
|
||||||
|
- считывание значений из каждой строки файла и формирование из них списка ММ;
|
||||||
|
|
||||||
|
- вызов функции 1 с ММ и отображение результатов;
|
||||||
|
|
||||||
|
- вызов функции 2 с передачей ей списка СС1 из функции 1 для записи в файл RES2.txt по 3 элемента в строке.
|
||||||
|
|
||||||
|
3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика полученный список СС2 и записывает его в бинарный файл RES2a.bin.
|
||||||
|
|
||||||
|
4) Подготовьте 2 файла: один с 50 целочисленными случайными значениями из диапазона от 20 до 27, второй - с некоторым набором повторяющихся символьных значений, например, фамилий, и проверьте с ними разработанную программу.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
|
||||||
|
Содержание M1:
|
||||||
|
```py
|
||||||
|
# M1.py
|
||||||
|
|
||||||
|
def func1(CC):
|
||||||
|
CC1 = []
|
||||||
|
CC2 = []
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while i < len(CC):
|
||||||
|
value = CC[i]
|
||||||
|
j = 0
|
||||||
|
exists = 0
|
||||||
|
while j < len(CC1):
|
||||||
|
if CC1[j] == value:
|
||||||
|
exists = 1
|
||||||
|
break
|
||||||
|
j = j + 1
|
||||||
|
if exists == 0:
|
||||||
|
CC1.append(value)
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while i < len(CC1):
|
||||||
|
value = CC1[i]
|
||||||
|
count = 0
|
||||||
|
j = 0
|
||||||
|
while j < len(CC):
|
||||||
|
if CC[j] == value:
|
||||||
|
count = count + 1
|
||||||
|
j = j + 1
|
||||||
|
CC2.append(count)
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
return CC1, CC2
|
||||||
|
|
||||||
|
|
||||||
|
def func2(filename, CC, n):
|
||||||
|
with open(filename, "w", encoding="utf-8") as f:
|
||||||
|
i = 0
|
||||||
|
in_line = 0
|
||||||
|
while i < len(CC):
|
||||||
|
if in_line > 0:
|
||||||
|
f.write(" ")
|
||||||
|
f.write(str(CC[i]))
|
||||||
|
in_line = in_line + 1
|
||||||
|
|
||||||
|
if in_line == n:
|
||||||
|
f.write("\n")
|
||||||
|
in_line = 0
|
||||||
|
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
if in_line != 0:
|
||||||
|
f.write("\n")
|
||||||
|
```
|
||||||
|
|
||||||
|
Содержание M2:
|
||||||
|
```py
|
||||||
|
# M2.py
|
||||||
|
|
||||||
|
import M1
|
||||||
|
|
||||||
|
def to_value(text):
|
||||||
|
s = text.strip()
|
||||||
|
if s.isdigit():
|
||||||
|
return int(s)
|
||||||
|
return s
|
||||||
|
|
||||||
|
def run():
|
||||||
|
filename = input()
|
||||||
|
MM = []
|
||||||
|
with open(filename, "r", encoding="utf-8") as f:
|
||||||
|
for line in f:
|
||||||
|
parts = line.split()
|
||||||
|
i = 0
|
||||||
|
while i < len(parts):
|
||||||
|
MM.append(to_value(parts[i]))
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
CC1, CC2 = M1.func1(MM)
|
||||||
|
print(CC1)
|
||||||
|
print(CC2)
|
||||||
|
M1.func2("RES2.txt", CC1, 3)
|
||||||
|
return CC2
|
||||||
|
```
|
||||||
|
|
||||||
|
Содержание главного модуля M0:
|
||||||
|
```py
|
||||||
|
# M0.py
|
||||||
|
import pickle
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import M2
|
||||||
|
|
||||||
|
def write_bin(filename,data):
|
||||||
|
with open(filename,"wb") as f:
|
||||||
|
pickle.dump(data,f)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
CC2=M2.run()
|
||||||
|
x=[]
|
||||||
|
i=0
|
||||||
|
while i<len(CC2):
|
||||||
|
x.append(i)
|
||||||
|
i=i+1
|
||||||
|
plt.plot(x,CC2)
|
||||||
|
plt.grid(True)
|
||||||
|
plt.show()
|
||||||
|
write_bin("RES2a.bin",CC2)
|
||||||
|
|
||||||
|
main()
|
||||||
|
```
|
||||||
|
|
||||||
|
1 запуск:
|
||||||
|
```py
|
||||||
|
import M0
|
||||||
|
NUM50.txt
|
||||||
|
# Числа
|
||||||
|
[21, 25, 23, 27, 22, 24, 26, 20]
|
||||||
|
# Количество повторений
|
||||||
|
[7, 7, 6, 6, 6, 6, 6, 6]
|
||||||
|
```
|
||||||
|

|
||||||
|
|
||||||
|
2 запуск:
|
||||||
|
```py
|
||||||
|
import M0
|
||||||
|
NAMES.txt
|
||||||
|
# Имена
|
||||||
|
['Иванов', 'Петров', 'Сидоров', 'Смирнов', 'Кузнецов', 'Орлов']
|
||||||
|
# Количество повторений
|
||||||
|
[6, 5, 4, 4, 3, 3]
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Содержимое RES2.txt после отработки программы:
|
||||||
|
```py
|
||||||
|
Иванов Петров Сидоров
|
||||||
|
Смирнов Кузнецов Орлов
|
||||||
|
```
|
||||||
|
RES2a.bin создался успешно, данные занесены в бинарном виде.
|
||||||
|
После Ширина: | Высота: | Размер: 16 KiB |
|
После Ширина: | Высота: | Размер: 12 KiB |
@ -1,7 +0,0 @@
|
|||||||
# Индивидуальное контрольное задание по теме 9
|
|
||||||
|
|
||||||
Коломейцев Дмитрий, А-02-23
|
|
||||||
|
|
||||||
## Задание
|
|
||||||
|
|
||||||
## Решение
|
|
||||||
Загрузка…
Ссылка в новой задаче