форкнуто от main/python-labs
Родитель
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']}
|
||||
```
|
||||

|
||||
Загрузка…
Ссылка в новой задаче