ЛБ5
.docx
Инженерная школа природных ресурсов
Направление подготовки Химическая технология
Отделение химической инженерии
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА PYTHON
Отчет по лабораторной работе № 5
Словари и множества
Выполнил студент гр. ХИМ54 А.В. Чижова
(Подпись)
26.11.2025 г.
Отчет принят:
Преподаватель
доцент ОХИ ИШПР, к.т.н. В.А. Чузлов
(Подпись)
_____ _____________ 2025 г.
Томск 2025 г.
Задание 1
Необходимо создать словарь, в котором ключами будут числа от 1 до 10, а значениями эти же числа, возведенные в квадрат, если число чётное, и в степень 1/2, если число нечётное. Выведите элементы (пары ключ: значение) для данного словаря на экран.
Выведите элементы (пары ключ: значение) для данного словаря в порядке уменьшения величины значений.
Программная реализация:
a = {i: i**2 if i % 2 == 0 else i**(1/2) for i in range(1, 11)}
print("Словарь:")
for key, value in a.items():
print(f"{key}: {value:.2f}")
print("\n" + "="*40)
print("Сортировка по убыванию значений:")
for key, value in sorted(a.items(), key=lambda x: x[1], reverse=True):
print(f"{key}: {value:.2f}")
Ответ:
Словарь:
1: 1.00
2: 4.00
3: 1.73
4: 16.00
5: 2.24
6: 36.00
7: 2.65
8: 64.00
9: 3.00
10: 100.00
========================================
Сортировка по убыванию значений:
10: 100.00
8: 64.00
6: 36.00
4: 16.00
2: 4.00
9: 3.00
7: 2.65
5: 2.24
3: 1.73
1: 1.00
Задание 2
Пусть дан словарь со значениями молекулярных масс нормальных алканов C1-C2:
Используя эти данные, заполните словарь, в котором ключами будут брутто-формулы нормальных алканов C1-C5 (общая формула CnH2n+2), а значениями - соответствующие плотности (г / см3) для данных компонентов, вычисленные по формуле:
|
(1) |
где
– молекулярная масса i-го
алкана.
Программная реализация:
import math
alkanes_molar_mass = {
'C1': 16,
'C2': 30,
'C3': 44,
'C4': 58,
'C5': 72,
}
density_dict = {}
for formula, molar_mass in alkanes_molar_mass.items():
density = 1.07 - math.exp(3.56073 - 2.93886 * molar_mass ** 0.1)
density_dict[formula] = density
print("Плотности алканов:")
for formula, density in density_dict.items():
print(f"{formula}H{2*int(formula[1:])+2}: {density:.4f}")
Ответ:
Плотности алканов:
C1H4: 0.3418
C2H6: 0.5037
C3H8: 0.5881
C4H10: 0.6426
C5H12: 0.6819
Задание 3
Даны следующие свойства углеводородов:
Углеводород |
Молекулярная масса |
SG* |
i-Pentane |
72.151001 |
0.623442 |
n-Pentane |
72.151001 |
0.629729 |
n-Hexane |
86.177902 |
0.662664 |
n-Heptane |
100.205002 |
0.686815 |
n-Octane |
114.232002 |
0.705377 |
n-Nonane |
128.259003 |
0.720247 |
n-Decane |
142.285004 |
0.732721 |
|
156.313004 |
0.742846 |
|
170.339005 |
0.751145 |
|
184.367004 |
0.758814 |
|
198.380005 |
0.762913 |
|
212.410004 |
0.770405 |
*SG (specific gravity) - относительная плотность, безразмерное число, отношение плотности вещества к плотности воды при 15° С.
Для легких углеводородов и нефтяных фракций с молекулярной массой в интервале 70-300 [г / моль] температуру кипения [K] можно определить по следующей формуле:
|
(2) |
где
– температура кипения углеводорода
или нефтяной фракции, К; М – молярная
масса углеводорода или средняя молярная
масса фракции, г/моль; SG
– относительная плотность по воде при
15° С.
Создайте словарь для хранения свойств углеводородов, приведенных в исходных данных, в следующем виде:
Используя формулу (2), рассчитайте температуру кипения (в °C) для каждого углеводорода и сохраните результаты в словарь, созданный в первом пункте. Выведите обновленный словарь на экран.
Создайте новый словарь на основе исходного, в который войдут только углеводороды, выкипающие в пределах 45 – 180 °C и выведите элементы этого словаря на экран.
Программная реализация:
import math
data = {
'i-Pentane': {
'molar_mass': 72.151001,
'SG': 0.623442},
'n-Pentane': {
'molar_mass': 72.151001,
'SG': 0.629729},
'n-Hexane': {
'molar_mass': 86.177902,
'SG': 0.662664},
'n-Heptane': {
'molar_mass': 100.205002,
'SG': 0.686815},
'n-Octane': {
'molar_mass': 114.232002,
'SG': 0.705377},
'n-Nonane': {
'molar_mass': 128.259003,
'SG': 0.720247},
'n-Decane': {
'molar_mass': 142.285004,
'SG': 0.732721},
'n-C_11': {
'molar_mass': 156.313004,
'SG': 0.742846},
'n-C_12': {
'molar_mass': 170.339005,
'SG': 0.751145},
'n-C_13': {
'molar_mass': 184.367004,
'SG': 0.758814},
'n-C_14': {
'molar_mass': 198.380005,
'SG': 0.762913},
'n-C_15': {
'molar_mass': 212.410004,
'SG': 0.770405},
}
for compound, properties in data.items():
M = properties['molar_mass']
SG = properties['SG']
exponent = 3.7741e-3 * M + 2.98404 * SG - 4.25288e-8 * M * SG
T_b_K = 3.76587 * (math.exp(exponent)) * M**0.40167 * SG**(-1.58262)
properties['T_b_K'] = T_b_K
print("1. Словарь с температурами кипения в Кельвинах:")
for compound, properties in data.items():
print(f"{compound}: {properties}")
print("\n" + "="*60)
for compound, properties in data.items():
T_b_C = properties['T_b_K'] - 273.15 # Конвертация K -> °C
properties['T_b_C'] = T_b_C
print("2. Обновленный словарь с температурами в °C:")
for compound, properties in data.items():
print(f"{compound}: T_b = {properties['T_b_C']:.2f} °C")
print("\n" + "="*60)
filtered_data = {}
for compound, properties in data.items():
if 45 <= properties['T_b_C'] <= 180:
filtered_data[compound] = properties
print("3. Углеводороды с температурой кипения 45-180 °C:")
for compound, properties in filtered_data.items():
print(f"{compound}: T_b = {properties['T_b_C']:.2f} °C")
Ответ:
1. Словарь с температурами кипения в Кельвинах:
i-Pentane: {'molar_mass': 72.151001, 'SG': 0.623442, 'T_b_K': 374.31405892928973}
n-Pentane: {'molar_mass': 72.151001, 'SG': 0.629729, 'T_b_K': 375.39397483717386}
n-Hexane: {'molar_mass': 86.177902, 'SG': 0.662664, 'T_b_K': 432.6252975822744}
n-Heptane: {'molar_mass': 100.205002, 'SG': 0.686815, 'T_b_K': 492.1578061636203}
n-Octane: {'molar_mass': 114.232002, 'SG': 0.705377, 'T_b_K': 554.2122168915225}
n-Nonane: {'molar_mass': 128.259003, 'SG': 0.720247, 'T_b_K': 619.1603921676252}
n-Decane: {'molar_mass': 142.285004, 'SG': 0.732721, 'T_b_K': 687.4801397296258}
n-C_11: {'molar_mass': 156.313004, 'SG': 0.742846, 'T_b_K': 759.1791500350278}
n-C_12: {'molar_mass': 170.339005, 'SG': 0.751145, 'T_b_K': 834.5311696677487}
n-C_13: {'molar_mass': 184.367004, 'SG': 0.758814, 'T_b_K': 914.528198581931}
n-C_14: {'molar_mass': 198.380005, 'SG': 0.762913, 'T_b_K': 996.6748126192266}
n-C_15: {'molar_mass': 212.410004, 'SG': 0.770405, 'T_b_K': 1087.5827682919921}
============================================================
2. Обновленный словарь с температурами в °C:
i-Pentane: T_b = 101.16 °C
n-Pentane: T_b = 102.24 °C
n-Hexane: T_b = 159.48 °C
n-Heptane: T_b = 219.01 °C
n-Octane: T_b = 281.06 °C
n-Nonane: T_b = 346.01 °C
n-Decane: T_b = 414.33 °C
n-C_11: T_b = 486.03 °C
n-C_12: T_b = 561.38 °C
n-C_13: T_b = 641.38 °C
n-C_14: T_b = 723.52 °C
n-C_15: T_b = 814.43 °C
============================================================
3. Углеводороды с температурой кипения 45-180 °C:
i-Pentane: T_b = 101.16 °C
n-Pentane: T_b = 102.24 °C
n-Hexane: T_b = 159.48 °C
