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

ЛБ11

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

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

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

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

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

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

Основы объектно-ориентированного программирования (ООП)

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

(Подпись)

01.01.2026 г.

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

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

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

(Подпись)

_____ _____________ 2026 г.

Томск 2026 г.

Задание 1

Необходимо реализовать собственный итератор HCGen, генерирующий последовательность формул алканов от CH4 до заданного пользователем конечного числа атомов углерода в молекуле алкана.

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

class HCGen:

def __init__(self, n: int) -> None:

if not isinstance(n, int) or n < 0:

raise ValueError(f'{n} is not a positive integer number')

self._n: int = n

self._i: int = 0

return

def __iter__(self):

return self

def __next__(self) -> str | StopIteration:

self._i += 1

if(self._i == 1):

return 'CH4'

if self._i <= self._n:

return f'C{self._i}H{(self._i+1)*2}'

else:

raise StopIteration

hc_gen = HCGen(10)

for hc in hc_gen:

print(hc, end=' ')

Ответ:

CH4 C2H6 C3H8 C4H10 C5H12 C6H14 C7H16 C8H18 C9H20 C10H22

Задание 2

Дополните реализацию класса HCGen возможностью задавать начальное значение числа атомов углерода в молекуле алкана, а также возможностью задавать шаг, с которым итератор будет выдавать формулы алканов. Начальные значения числа атомов углерода и шага по умолчанию должны быть равны 1.

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

class HCGen:

def __init__(self, start: int, end: int, step: int = 1) -> None:

if not isinstance(start, int) or not isinstance(end, int) or not isinstance(step, int) or start < 0 or step < 0 or start > end:

raise ValueError('Incorrect values')

self._end: int = end

self._step: int = step

self._i: int = start

return

def __iter__(self):

return self

def __next__(self) -> str | StopIteration:

if(self._i == 1):

self._i += self._step

return 'CH4'

if self._i <= self._end:

result = f'C{self._i}H{(self._i+1)*2}'

self._i += self._step

return result

else:

raise StopIteration

hc_gen = HCGen(5, 15)

for hc in hc_gen:

print(hc, end=' ')

print()

hc_gen = HCGen(3, 7, 2)

for hc in hc_gen:

print(hc, end=' ')

Ответ:

C5H12 C6H14 C7H16 C8H18 C9H20 C10H22 C11H24 C12H26 C13H28 C14H30 C15H32

C3H8 C5H12 C7H16

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