Добавил:
свои люди в ТПУ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛБ4

.docx
Скачиваний:
0
Добавлен:
14.01.2026
Размер:
152.1 Кб
Скачать

Инженерная школа природных ресурсов

Направление подготовки Химическая технология

Отделение химической инженерии

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА 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

Соседние файлы в предмете Программирование на Python