форкнуто от 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']}
|
||||||
|
```
|
||||||
|

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