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

ЛБ6

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

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

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

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

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА PYTHON

Отчет по лабораторной работе № 6

Словари и множества

Выполнил студент гр. ХИМ54 А.В. Чижова

(Подпись)

01.01.2026 г.

Отчет принят:

Преподаватель

доцент ОХИ ИШПР, к.т.н. В.А. Чузлов

(Подпись)

_____ _____________ 2026 г.

Томск 2026 г.

Задание 1

Даны экспериментальные значения кривой истинных температур кипения (ИТК) нефтяной фракции:

Процент выкипания, % об.

10

30

50

70

90

Температура по кривой ИТК, 0С

160.56

188.33

209.44

230.56

255.00

Необходимо определить температуры выкипания для данной фракции по методу ASTM D86.

Для определения температур выкипания фракции по методу ASTM D86 по данным кривой ИТК, необходимо использовать следующее уравнение:

(1)

где ИТК(50) - наблюдаемая истинная температура выкипания 50 % об . фракции, °F ; ASTM D86 (50) - температура выкипания 50 % об . фракции по ASTM D86, °F

Перевести °C в °F можно следующим образом:

(2)

Для определения разницы между соседними фракциями, необходимо использовать следующее уравнение:

(3)

где - наблюдаемая разность истинных температур выкипания между двумя точками, °F; - разность истинных температур выкипания между двумя точками по методу ASTM D86, °F; A и B - константы, для различных диапазонов выкипания фракций, представленные ниже:

i

Диапазон выкипания

А

В

1

90 % - 70 %

3.0419

0.75497

2

70 % - 50 %

2.5282

0.82002

3

50 % - 30 %

3.0305

0.80076

4

30 % - 10 %

4.9004

0.71644

Для определения температуры по ASTM D86 при заданном проценте выкипания, необходимо воспользоваться следующими формулами:

(4)

Программная реализация:

def fahrenheit_to_celsius(f):

return (f-32)*5/9

itk_f = {}

for percent in itk:

itk_f[percent] = celsius_to_fahrenheit(itk[percent])

ASTM_D86_50 = math.exp(math.log(itk_f[50]/0.87180)/1.0258)

X1 = itk_f[90] - itk_f[70]

X2 = itk_f[70] - itk_f[50]

X3 = itk_f[50] - itk_f[30]

X4 = itk_f[30] - itk_f[10]

Y1 = (X1 / const[0]['A']) ** (1/const[0]['B'])

Y2 = (X2 / const[1]['A']) ** (1/const[1]['B'])

Y3 = (X3 / const[2]['A']) ** (1/const[2]['B'])

Y4 = (X4 / const[3]['A']) ** (1/const[3]['B'])

ASTM_D86_10 = ASTM_D86_50 - Y3 - Y4

ASTM_D86_30 = ASTM_D86_50 - Y3

ASTM_D86_70 = ASTM_D86_50 + Y2

ASTM_D86_90 = ASTM_D86_50 + Y2 + Y1

result_f = {

10: ASTM_D86_10,

30: ASTM_D86_30,

50: ASTM_D86_50,

70: ASTM_D86_70,

90: ASTM_D86_90,

}

result = {}

for percent in result_f:

result[percent] = fahrenheit_to_celsius(result_f[percent])

print(result)

Ответ:

{10: 178.21973628400863, 30: 192.4281342251063, 50: 205.49684141763177, 70: 220.6410767776274, 90: 239.7622885760454}

Задание 2

Температуру плавления углеводородов различных гомологических рядов с числом атомов углерода C7-C40 можно оценить с приемлемой точностью (ошибка 1-1.5 %) по следующим формулам:

(6)

где , , – температура плавления парафиновых, нафтеновых и ароматических углеводородов, соответственно, К; М – молекулярная масса соответствующего углеводорода, г/моль.

Данные по углеводородам различных классов и их молекулярным массам сохранены в следующем словаре

Рассчитайте температуру плавления, используя формулу (6) и данные из словаря data. Результаты сохраните в отдельный словарь, в котором ключами будут имена компонентов, а значениями рассчитанные температуры плавления этих компонентов.

Программная реализация:

import math

data = {

'5-Mnonane': {

'formula': 'C10H22',

'M': 142.285004,

'family': 'P',

},

'n-C22': {

'formula': 'C22H46',

'M': 310.588013,

'family': 'P',

},

'n-Nonane': {

'formula': 'C9H20',

'M': 128.259003,

'family': 'P',

},

'n-BUTYLCYCLOHEXANE': {

'formula': 'C10H20',

'M': 140.270000,

'family': 'N',

},

'n-Dodecyl-BZ': {

'formula': 'C18H30',

'M': 246.419006,

'family': 'A',

},

'n-Hexyl-BZ': {

'formula': 'C12H18',

'M': 162.274002,

'family': 'A',

},

'CYCLOPENTANE': {

'formula': 'C9H18',

'M': 126.240000,

'family': 'N',

},

}

result = {}

for hydrocarbon in data:

if(data[hydrocarbon]['family'] == 'P'):

result[hydrocarbon] = 397 - math.exp(6.5096 - 0.14187 * data[hydrocarbon]['M'] ** 0.47)

elif(data[hydrocarbon]['family'] == 'N'):

result[hydrocarbon] = 370 - math.exp(6.52504 - 0.04945 * data[hydrocarbon]['M'] ** (2/3))

elif(data[hydrocarbon]['family'] == 'M'):

result[hydrocarbon] = 395 - math.exp(6.53599 - 0.04912 * data[hydrocarbon]['M'] ** (2/3))

print(result)

Ответ:

{'5-Mnonane': 240.78951653856552, 'n-C22': 315.1598206640788, 'n-Nonane': 229.55863884636645, 'n-BUTYLCYCLOHEXANE': 190.52145169100916, 'CYCLOPENTANE': 173.50681974496078}

Задание 3

Необходимо создать список a , содержащий 30 случайных целых чисел из интервала [0,25] (воспользуйтесь функцией randint() из модуля random). Необходимо определить сколько в нем встречается уникальных чисел.

Программная реализация:

import random

a = [random.randint(0, 25) for _ in range(30)]

count_unique = 0

for num in a:

if(a.count(num) == 1):

count_unique += 1

print(a)

print(count_unique)

Ответ:

[24, 12, 25, 15, 14, 3, 0, 20, 5, 6, 11, 25, 3, 14, 19, 20, 3, 22, 1, 14, 3, 12, 10, 9, 19, 1, 8, 11, 8, 10]

7

Задание 4

Необходимо создать список a, содержащий 20 случайных целых чисел из интервала [0,20] , и список b содержащий 15 случайных целых чисел из интервала [10,30] . Выведите все числа, которые входят как в список a , так и в список b в порядке возрастания.

Программная реализация:

import random

a = [random.randint(0, 20) for _ in range(20)]

b = [random.randint(10, 30) for _ in range(15)]

both = list()

for num in a:

if(b.__contains__(num)):

both.append(num)

both = list(set(both))

both.sort()

print(both)

Ответ:

[10, 13, 14, 18, 20]

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