diff --git a/TEMA9/test.md b/TEMA9/test.md new file mode 100644 index 0000000..d087d96 --- /dev/null +++ b/TEMA9/test.md @@ -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) \ No newline at end of file