Загрузил(а) файлы в 'TEMA9'

main
KorneevMaxA 3 дней назад
Родитель 3b13ebc021
Сommit 643fd82f3d

@ -0,0 +1,98 @@
# Тест по модулю 3
Выполнил: Корнеев М.А.
## Задание
1) Создайте модуль М1, содержащий две функции:
- функция 1: аргумент - имя текстового файла с данными: в каждой строке - название города, число вузов, число студентов в каждом из этих вузов (значения разделены знаком "#"); функция должна прочитать данные из файла, создать из них 3 списка, соответственно, с названиями городов, с числами вузов и со списками чисел студентов - эти списки возвращаются в вызывающую программу;
- функция 2: аргументы - 3 списка, аналогичных результатам функции 1; функция должна создать и вернуть словарь с ключами - названиями городов и значениями - списками с числом вузов в городе и общим числом студентов.
2) Создайте еще один модуль М2, в котором должны выполняться операции:
- запрашивается имя файла с данными, проверяется его наличие и при отсутствии - повторение запроса;
- вызывается функция 1 и отображаются ее результаты;
- вызывается функция 2 со списками, полученными из функции 1, и отображается полученный словарь.
3) Создайте модуль М0 - главную программу, которая вызывает М2, отображает в виде столбиковой диаграммы числа вузов в городах и записывает словарь из функции 2 и списки из функции 1 в бинарный файл с именем, совпадающим с именем текстового файла с исходными данными и с расширением bin,
4) Проверьте работу функции с файлом, в который запишите
Нижний Новгород#6#23000
Краснодар#3#15600
Тамбов#2#12800
Брянск#3#17700
## Решение
M0.py
```py
import M2
import matplotlib.pyplot as plt
import pickle
plt.bar(M2.city, list(map(int,M2.n_vuz)))
plt.ylim(0, 10)
plt.show()
fp=open(f"{M2.f_name.split('.')[0]}.bin",'wb')
pickle.dump(M2.dict1,fp)
pickle.dump(M2.city,fp)
pickle.dump(M2.n_vuz,fp)
pickle.dump(M2.n_studs,fp)
fp.close()
```
M1.py
```py
def read_file(name):
f = open(name, mode = 'r')
sps1 = []
sps2 = []
sps3 = []
for stroka in f:
sps = []
strok=stroka.rstrip('\n')
sps=strok.split('#')
sps1.append(sps[0])
sps2.append(sps[1])
sps3.append(sps[2])
f.close()
return sps1,sps2,sps3
def make_dict(sps1,sps2,sps3):
dict1 = {}
for i in range(len(sps1)):
dict1[sps1[i]] = [sps2[i], sps3[i]]
return dict1
```
M2.py
```py
import os
import M1
flag = True
f_name = ''
while flag:
f_name = input('Введите имя файла: ')
if os.path.isfile(f_name):
flag = False
city, n_vuz, n_studs = M1.read_file(f_name)
print(f'Cities: {city}\nNumber vuz: {n_vuz}\nNumber_studs: {n_studs}')
dict1 = M1.make_dict(city, n_vuz, n_studs)
print(f'Dict: {dict1}')
```
Вывод программы:
```txt
Введите имя файла: test.txt
Cities: ['Нижний Новгород', 'Краснодар', 'Тамбов', 'Брянск']
Number vuz: ['6', '3', '2', '3']
Number_studs: ['23000', '15600', '12800', '17700']
Dict: {'Нижний Новгород': ['6', '23000'], 'Краснодар': ['3', '15600'], 'Тамбов': ['2', '12800'], 'Брянск': ['3', '17700']}
```
![график](Figure_2.png)
Загрузка…
Отмена
Сохранить