форкнуто от main/python-labs
main
Родитель
a745cdf46f
Сommit
1e6c09714a
@ -0,0 +1,10 @@
|
|||||||
|
import M2
|
||||||
|
|
||||||
|
res = M2.main()
|
||||||
|
if res:
|
||||||
|
c, p, o = res
|
||||||
|
with open("Res3030.txt", "w", encoding="utf-8") as f:
|
||||||
|
f.write("Результаты:\n")
|
||||||
|
for country, value in zip(c, p):
|
||||||
|
f.write(f"{country}: {value}\n")
|
||||||
|
f.write(f"\nОбщее: {o}")
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
import pylab
|
||||||
|
|
||||||
|
def calc(d):
|
||||||
|
pop = 0
|
||||||
|
res = 0
|
||||||
|
cnt = []
|
||||||
|
per = []
|
||||||
|
for c, v in d.items():
|
||||||
|
pop += v[0]
|
||||||
|
res += v[1]
|
||||||
|
cnt.append(c)
|
||||||
|
per.append(v[1]/v[0] if v[0]>0 else 0)
|
||||||
|
return cnt, per, res/pop if pop>0 else 0
|
||||||
|
|
||||||
|
def plot(d):
|
||||||
|
pylab.bar(d.keys(), [v[1] for v in d.values()])
|
||||||
|
pylab.title('Ресурс по странам')
|
||||||
|
pylab.xlabel('Страны')
|
||||||
|
pylab.ylabel('Ресурс')
|
||||||
|
pylab.show()
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
import os
|
||||||
|
import M1
|
||||||
|
|
||||||
|
def main():
|
||||||
|
fname = input("Файл (data.txt): ")
|
||||||
|
if not os.path.isfile(fname):
|
||||||
|
print("Файл не найден")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Чтение данных
|
||||||
|
data = {}
|
||||||
|
with open(fname, 'r', encoding='utf-8') as f:
|
||||||
|
for line in f:
|
||||||
|
c, p, r = line.strip().split()
|
||||||
|
data[c] = [float(p), float(r)]
|
||||||
|
|
||||||
|
print("Данные:", data)
|
||||||
|
|
||||||
|
# Расчёт
|
||||||
|
c, p, o = M1.calc(data)
|
||||||
|
|
||||||
|
print("\nРесурс на душу:")
|
||||||
|
for country, val in zip(c, p):
|
||||||
|
print(f"{country}: {val:.3f}")
|
||||||
|
print(f"\nОбщее: {o:.3f}")
|
||||||
|
|
||||||
|
# График
|
||||||
|
M1.plot(data)
|
||||||
|
|
||||||
|
return c, p, o
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
Результаты:
|
||||||
|
США: 0.07682119205298013
|
||||||
|
Россия: 0.10342465753424657
|
||||||
|
Австралия: 0.5
|
||||||
|
Китай: 0.009216909216909217
|
||||||
|
Индия: 0.007279151943462898
|
||||||
|
Германия: 0.03975903614457831
|
||||||
|
|
||||||
|
Общее: 0.023178226514486387
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
США 302 23.2
|
||||||
|
Россия 146 15.1
|
||||||
|
Австралия 28 14
|
||||||
|
Китай 1443 13.3
|
||||||
|
Индия 1415 10.3
|
||||||
|
Германия 83 3.3
|
||||||
|
После Ширина: | Высота: | Размер: 13 KiB |
@ -0,0 +1,132 @@
|
|||||||
|
# Индивидуальное контрольное задание по теме 9
|
||||||
|
|
||||||
|
Зеленкина Катерина, А-02-23
|
||||||
|
Вариант 6
|
||||||
|
|
||||||
|
## Задание
|
||||||
|
1) Создайте модуль М1, содержащий две функции:
|
||||||
|
- функция 1: аргумент - словарь с исходными данными (ключи - страны, значения - списки с 2 значениями: население, объем некоторого ресурса); функция должна создать два списка: список стран и список с элементами - для каждой страны значение ресурса на душу населения, а также значение отношения суммарных ресурсов к суммарному населению;
|
||||||
|
- функция 2: аргумент - словарь, такой же, как в функции1; функция должна построить столбиковую диаграмму, демонстрирующую распределение ресурса по странам.
|
||||||
|
|
||||||
|
2) Создайте еще один модуль М2, в котором должны выполняться операции:
|
||||||
|
- запрашивается и вводится имя бинарного файла, проверяется его наличие, и если он существует, то из него считывается объект-словарь с исходными данными;
|
||||||
|
- вызывается функция 1 и отображаются результаты;
|
||||||
|
- вызывается функция 2.
|
||||||
|
|
||||||
|
3) Создайте модуль М0 - главную программу, которая вызывает М2 и после завершения ее работы записывает полученные результаты в текстовый файл Res3030.txt.
|
||||||
|
|
||||||
|
4) Проверьте программу с данными о запасах угля в разных странах:
|
||||||
|
|
||||||
|
США 302 23.2
|
||||||
|
|
||||||
|
Россия 146 15.1
|
||||||
|
|
||||||
|
Австралия 28 14
|
||||||
|
|
||||||
|
Китай 1443 13.3
|
||||||
|
|
||||||
|
Индия 1415 10.3
|
||||||
|
|
||||||
|
Германия 83 3.3
|
||||||
|
|
||||||
|
## Решение
|
||||||
|
Содержимое M1
|
||||||
|
```py
|
||||||
|
import pylab
|
||||||
|
|
||||||
|
def calc(d):
|
||||||
|
pop = 0
|
||||||
|
res = 0
|
||||||
|
cnt = []
|
||||||
|
per = []
|
||||||
|
for c, v in d.items():
|
||||||
|
pop += v[0]
|
||||||
|
res += v[1]
|
||||||
|
cnt.append(c)
|
||||||
|
per.append(v[1]/v[0] if v[0]>0 else 0)
|
||||||
|
return cnt, per, res/pop if pop>0 else 0
|
||||||
|
|
||||||
|
def plot(d):
|
||||||
|
pylab.bar(d.keys(), [v[1] for v in d.values()])
|
||||||
|
pylab.title('Ресурс по странам')
|
||||||
|
pylab.xlabel('Страны')
|
||||||
|
pylab.ylabel('Ресурс')
|
||||||
|
pylab.show()
|
||||||
|
```
|
||||||
|
|
||||||
|
Содержимое M2:
|
||||||
|
```py
|
||||||
|
import os
|
||||||
|
import M1
|
||||||
|
|
||||||
|
def main():
|
||||||
|
fname = input("Файл (data.txt): ")
|
||||||
|
if not os.path.isfile(fname):
|
||||||
|
print("Файл не найден")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Чтение данных
|
||||||
|
data = {}
|
||||||
|
with open(fname, 'r', encoding='utf-8') as f:
|
||||||
|
for line in f:
|
||||||
|
c, p, r = line.strip().split()
|
||||||
|
data[c] = [float(p), float(r)]
|
||||||
|
|
||||||
|
print("Данные:", data)
|
||||||
|
|
||||||
|
# Расчёт
|
||||||
|
c, p, o = M1.calc(data)
|
||||||
|
|
||||||
|
print("\nРесурс на душу:")
|
||||||
|
for country, val in zip(c, p):
|
||||||
|
print(f"{country}: {val:.3f}")
|
||||||
|
print(f"\nОбщее: {o:.3f}")
|
||||||
|
|
||||||
|
# График
|
||||||
|
M1.plot(data)
|
||||||
|
|
||||||
|
return c, p, o
|
||||||
|
```
|
||||||
|
|
||||||
|
Содержимое M0:
|
||||||
|
```py
|
||||||
|
import M2
|
||||||
|
|
||||||
|
res = M2.main()
|
||||||
|
if res:
|
||||||
|
c, p, o = res
|
||||||
|
with open("Res3030.txt", "w", encoding="utf-8") as f:
|
||||||
|
f.write("Результаты:\n")
|
||||||
|
for country, value in zip(c, p):
|
||||||
|
f.write(f"{country}: {value}\n")
|
||||||
|
f.write(f"\nОбщее: {o}")
|
||||||
|
```
|
||||||
|
|
||||||
|
Создали файл data.txt с данными:
|
||||||
|
```py
|
||||||
|
США 302 23.2
|
||||||
|
Россия 146 15.1
|
||||||
|
Австралия 28 14
|
||||||
|
Китай 1443 13.3
|
||||||
|
Индия 1415 10.3
|
||||||
|
Германия 83 3.3
|
||||||
|
```
|
||||||
|
|
||||||
|
Вывод:
|
||||||
|
```py
|
||||||
|
Файл (data.txt): data.txt
|
||||||
|
Данные: {'США': [302.0, 23.2], 'Россия': [146.0, 15.1], 'Австралия': [28.0, 14.0], 'Китай': [1443.0, 13.3], 'Индия': [1415.0, 10.3], 'Германия': [83.0, 3.3]}
|
||||||
|
|
||||||
|
Ресурс на душу:
|
||||||
|
США: 0.077
|
||||||
|
Россия: 0.103
|
||||||
|
Австралия: 0.500
|
||||||
|
Китай: 0.009
|
||||||
|
Индия: 0.007
|
||||||
|
Германия: 0.040
|
||||||
|
|
||||||
|
Общее: 0.023
|
||||||
|
```
|
||||||
|
|
||||||
|
График:
|
||||||
|

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