# Тест по модулю 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)