Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

4.1 KiB

Тест по модулю 3

Выполнил: Корнеев М.А.

Задание

  1. Создайте модуль М1, содержащий две функции:
  • функция 1: аргумент - имя текстового файла с данными: в каждой строке - название города, число вузов, число студентов в каждом из этих вузов (значения разделены знаком "#"); функция должна прочитать данные из файла, создать из них 3 списка, соответственно, с названиями городов, с числами вузов и со списками чисел студентов - эти списки возвращаются в вызывающую программу;

  • функция 2: аргументы - 3 списка, аналогичных результатам функции 1; функция должна создать и вернуть словарь с ключами - названиями городов и значениями - списками с числом вузов в городе и общим числом студентов.

  1. Создайте еще один модуль М2, в котором должны выполняться операции:
  • запрашивается имя файла с данными, проверяется его наличие и при отсутствии - повторение запроса;

  • вызывается функция 1 и отображаются ее результаты;

  • вызывается функция 2 со списками, полученными из функции 1, и отображается полученный словарь.

  1. Создайте модуль М0 - главную программу, которая вызывает М2, отображает в виде столбиковой диаграммы числа вузов в городах и записывает словарь из функции 2 и списки из функции 1 в бинарный файл с именем, совпадающим с именем текстового файла с исходными данными и с расширением bin,

  2. Проверьте работу функции с файлом, в который запишите

Нижний Новгород#6#23000

Краснодар#3#15600

Тамбов#2#12800

Брянск#3#17700

Решение

M0.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

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

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}')

Вывод программы:

Введите имя файла: test.txt
Cities: ['Нижний Новгород', 'Краснодар', 'Тамбов', 'Брянск']
Number vuz: ['6', '3', '2', '3']
Number_studs: ['23000', '15600', '12800', '17700']
Dict: {'Нижний Новгород': ['6', '23000'], 'Краснодар': ['3', '15600'], 'Тамбов': ['2', '12800'], 'Брянск': ['3', '17700']}

график