ЛБ4
.docx
Инженерная школа природных ресурсов
Направление подготовки Химическая технология
Отделение химической инженерии
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА PYTHON
Отчет по лабораторной работе № 4
Строки, списки и кортежи
Выполнил студент гр. ХИМ54 А.В. Чижова
(Подпись)
24.11.2025 г.
Отчет принят:
Преподаватель
доцент ОХИ ИШПР, к.т.н. В.А. Чузлов
(Подпись)
_____ _____________ 2025 г.
Томск 2025 г.
Задание 1
Давление насыщенных паров (ДНП) по Рейду не подчиняется линейному закону. Для точной оценки данного показателя необходимо использовать индексы смешения для каждого компонента, которые можно определить по формуле:
|
(1) |
Где
– индекс смешения ДНП i-го
компонента;
– давление насыщенных паров i-го
компонента, кПа.
Зная ДНП компонентов, входящих в состав потока, по формуле (1) можно найти значения индексов ДНП для каждого компонента. Далее необходимо определить индекс ДНП смеси, складывая по линейному закону (с учетом объемной доли в смеси) индексы ДНП компонентов:
|
(2) |
Где
– индекс ДНП для смеси компонентов;
– индекс смешения ДНП i-го
компонента;
– объемная доля i-го
компонента.
Через значение индекса ДНП смеси можно перейти к величине ДНП:
|
(3) |
Где
– ДНП смеси компонентов, кПа;
– индекс ДНП для смеси компонентов.
Необходимо рассчитать ДНП потока, содержащего следующие компоненты:
Углеводород |
ДНП, МПа |
Объемные доли |
|
5.374 |
0.01 |
|
1.304 |
0.01 |
|
0.4962 |
0.04 |
|
0.359 |
0.05 |
|
0.140 |
0.3 |
|
0.108 |
0.2 |
|
0.034 |
0.1 |
|
0.011 |
0.1 |
|
0.0037 |
0.09 |
|
0.0013 |
0.06 |
|
0.0005 |
0.04 |
Программная реализация:
pi = [5.374, 1.304, 0.4962, 0.359, 0.140, 0.108, 0.034, 0.011, 0.0037, 0.0013, 0.0005]
q = [0.01, 0.01, 0.04, 0.05, 0.3, 0.2, 0.1, 0.1, 0.09, 0.06, 0.04]
n_m = []
for i in range(len(pi)):
n = (pi[i] / 6.8947) ** 1.25
n_m.append(n*q[i])
n_mix = sum(n_m)
p_mix = 6.8947 * n_mix **(1/1.25)
print(f'ДНП потока равно {p_mix:.4f}')
Ответ:
ДНП потока равно 0.2381
Задание 2
Для расчета мольного объема углеводородов (см3/моль) при 20 °C и 1 ат хорошие результаты дает формула Куртца и Липкина:
|
(4) |
Где
– число групп
,
и
в открытых цепях;
– число групп С
и
в кольцах (исключая места соединения
колец);
– число групп
в местах соединения колец;
– число двойных связей в молекуле
(учитывая двойные связи в циклах); С =
31.2 – постоянная величина для всех
углеводородов за исключением н-парафинов;
С = 32.6 – постоянная величина для нормальных
алифатических цепей.
Аддитивно-групповой метод определения мольного объема (см3/моль) базируется на величинах инкрементов атомов и структурных групп:
|
(5) |
Где
– число атомов, связей и циклов в
соединении;
– инкременты атомов и структурных
групп, приведенные ниже:
Атом или структурная группа |
Инкремент |
C, H, O, N |
+7.0 |
F |
+10.5 |
Cl |
+24.5 |
Br |
+31.5 |
I |
+38.5 |
S |
+21.0 |
Двойная связь |
+7.0 |
Тройная связь |
+14.0 |
Кольцо (цикл) |
-7.0 |
Используя формулы (4) – (5), вычислите мольный объем:
2,3,4,5,6-пентаметилгепта-1,3,5-триен
Можно представить формулу данного вещества в следующем виде:
в этом случае будет проще посчитать количество вхождений каждой подстроки (атома или структурной группы) в общую формулу, которую также нужно представить в виде строки для получения доступа к методам, специфичным для строк.
Программная реализация:
formula = "CH2=C(CH3)-C(CH3)=C(CH3)-C(CH3)=C(CH3)-CH3"
N1 = formula.count("CH3") + formula.count("CH2")
N2 = formula.count("-CH2=") + formula.count("-CH=")
N3 = formula.count("-CH=")
N4 = formula.count("=")
C = 31.2
Vm_1 = 16.28 * N1 + 13.5 * N2 + 9.7 * N3 - 6.2 * N4 + C
print(f'По формуле Куртца и Липкина = {Vm_1:.2f} см3/моль')
C_H_O_N = formula.count("C") + (formula.count("CH3") *3 + formula.count("CH2") * 2) + + formula.count("O") + formula.count("N")
F = formula.count("F")
Cl = formula.count("Cl")
Br = formula.count("Br")
I = formula.count("I")
S = formula.count("S")
r = formula.count("=")
t = formula.count("=-")
Vm_2 = C_H_O_N * (+7.0) + F * (+10.5) + Cl * (+24.5) + Br * (+31.5) + I * (+38.5) + S * (+21.0) + r * (+7.0) + t * (+14.0)
print(f'По формуле (5) = {Vm_2:.2f} см3/моль')
Ответ:
По формуле Куртца и Липкина = 126.56 см3/моль
По формуле (5) = 245.00 см3/моль
Задание 3
Заполните матрицу размером 5 × 5 случайными целыми числами из интервала [1, 100]. Выведите значения её элементов на экран. Найдите максимальный элемент в каждой строке. Среди максимальных элементов каждой строки найдите минимальный.
Программная реализация:
from random import randint
rows, cols = 5, 5
low, high = 1, 100
a = [[randint(low, high) for _ in range(cols)] for _ in range(rows)]
# вывод в виде матрицы
for row in a:
for x in row:
print(f'{x:>2}', end=' ')
print()
print("\nМаксимумы в строках:")
maximals = [max(row) for row in a]
print(maximals)
print("\nМинимальное число:")
print(min(maximals))
Ответ:
15 22 68 8 91
29 59 93 96 12
51 86 43 2 85
65 31 97 16 15
9 80 1 17 54
Максимумы в строках:
[91, 96, 86, 97, 80]
Минимальное число:
80
Задание 4
Заполните матрицу a 4×5 случайными целыми числами из интервала [-5,10]. Выведите значения ее элементов на экран. Найдите произведение минимального элемента матрицы a на количество элементов > 5.
Программная реализация:
from random import randint
rows, cols = 4, 5
low, high = -5, 10
a = [[randint(low, high) for _ in range(cols)] for _ in range(rows)]
# вывод в виде матрицы
for row in a:
for x in row:
print(f'{x:>2}', end=' ')
print()
min_a = min(min(row) for row in a)
count = sum(x > 5 for row in a for x in row)
result = min_a * count
print(f"\nmin: {min_a}, количество числел >5: {count}, результат: {result}")
Ответ:
5 -2 0 7 2
-3 9 7 8 7
4 10 7 1 1
1 0 -3 1 10
min: -3, количество числел >5: 8, результат: -24
