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

1 / кр2

.docx
Скачиваний:
1
Добавлен:
16.05.2025
Размер:
280.19 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА №41

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

Доцент, к.т.н

С. А. Чернышев

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

КОНТРОЛЬНАЯ РАБОТА №2

по дисциплине: Технологии программирования

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

Z0411

24.01.23

М. В. Карелина

номер группы

подпись, дата

инициалы, фамилия

Студенческий билет №

2020/3477

Санкт-Петербург

2023

Вариант 10

Напишите классы «Холодильник» и «Морозильная камера», в которые можно добавлять (и удалять) экземпляры класса «Продукты». В конструктор «Холодильника» и «Морозильной камеры» следует передавать параметр их текущей рабочей температуры. Класс «Продукты» должен содержать параметры «Наименование продукта», «максимальная температура хранения» и «минимальная температура хранения». У классов «Холодильник» и «Морозильная камера» должны быть реализованы методы: поиск продукта по наименованию, подсчёт общего хранящегося количества продуктов. При добавлении продуктов в «Холодильник» (или «Морозильную камеру») требуется сравнить допустимый диапазон хранения продукта с текущей температурой «Холодильника» (или «Морозильной камеры») в случае, если текущая температура «Холодильника» (или «Морозильной камеры») не входит в диапазон, то продукт не добавляется в «Холодильник» или «Морозильную камеру». Требуется реализовать возможность вывода текущих состояний объектов в терминал.

Код программы:

class Product: def __init__(self, name: str, min_temp: float, max_temp: float): self.name = name #наименование продукта self.min_temp = min_temp #минимальная температура хранения self.max_temp = max_temp #максимальная температура хранения def __str__(self): text = f'\n Name {self.name}, \n Min temperature {self.min_temp}, \n Max temperature {self.max_temp}.' return text def main(): prod1 = Product('Fish', -2, 0) prod2 = Product('Cheese', 5, 10) print('Product 1:', prod1) print('Product 2:', prod2) if __name__ == "__main__": main()

from product import Product from typing import List #холодильник class Refrigerator: #метод инициализации холодильника #temperature - задаёт текущубю рабочую температуру #products - необязательный параметр, задаёт список продуктов def __init__(self, temperature: float, products: List[Product] = []): self.temperature = temperature #текущая рабочая температура холодильника self.products = [] #продукты в холодильнике for it in products: self.add(it) #метод для добавления продукта в холодильник def add(self, product: Product): #добавляем продукт только в случае, когда рабочая температура холодильника #совпадает с диапазонами хранения if self.temperature >= product.min_temp and self.temperature <= product.max_temp: self.products.append(product) else: print(f'{product} \n !could not add!') #не могу добавить продукт #метод поиска продукта по наименованию #если продукт найден, возвращает его #иначе возвращает None def find(self, name: str): for it in self.products: if it.name == name: return it return None #метод возвращает кол-во хранящихся продуктов в холодильнике def count(self): return len(self.products) #печать текущего состояния холодильника и #список продуктов в нём def print(self): print(f'Current temperature: {self.temperature}') i = 1 #счётчик продуктов for it in self.products: print(f'Product {i}: ', it) print() i+=1 def main(): ref = Refrigerator(6.0) #создаём холодильник с температурой 6 градусов prod1 = Product('Fish', -2, 0) #рыба prod2 = Product('Cheese', 5, 10) #сыр prod3 = Product('Sausage', 4, 6) #сосиски prod4 = Product('Ice Cream', -30, -20) #мороженое ref.add(prod1) #пробуем добавить рыбу (будет напечатана ошибка) ref.add(prod2) #пробуем добавить сыр ref.add(prod3) #пробуем добавить сосиски ref.add(prod4) #пробуем добавить мороженое print() ref.print() #печатаем состояние холодильника print(f'Num of products: {ref.count()}') #печатаем кол-во продуктов в холодильнике pr = ref.find('Cheese') #пытаемся найти сыр в холодильнике if pr is not None: #если он найден, выводим в терминал print('\nResult of search: ', pr) else: print('Could not find Cheese') if __name__ == "__main__": main()

from product import Product from refrigerator import Refrigerator from typing import List #холодильная камера class Freezer(Refrigerator): pass def main(): fr = Freezer(-25) #создаём холодильную камеру с температурой -25 градус prod1 = Product('Fish', -2, 0) #рыба prod2 = Product('Cheese', 5, 10) #сыр prod3 = Product('Sausage', 4, 6) #сосиски prod4 = Product('Ice Cream', -30, -20) #мороженое fr.add(prod1) #пробуем добавить рыбу (будет напечатана ошибка) fr.add(prod2) #пробуем добавить сыр fr.add(prod3) #пробуем добавить сосиски fr.add(prod4) #пробуем добавить мороженое print() fr.print() #печатаем состояние холодильника print(f'Num of products: {fr.count()}') #печатаем кол-во продуктов в холодильной камере pr = fr.find('Cheese') #пытаемся найти сыр в холодильной камере if pr is not None: #если он найден, выводим в терминал print('\nResult of search: ', pr) else: print('Could not find Cheese') if __name__ == "__main__": main()

Код тестов:

from product import Product from refrigerator import Refrigerator from freezer import Freezer import unittest class ProdTest(unittest.TestCase): def test_add(self): ref = Refrigerator(6.0) #создаём холодильник с температурой 6 градусов fr = Freezer(-24) #создаём холодильную камеру с температурой -24 градуса prod1 = Product('Fish', -2, 0) #рыба prod2 = Product('Cheese', 5, 10) #сыр prod3 = Product('Sausage', 4, 6) #сосиски prod4 = Product('Ice Cream', -30, -20) #мороженое ref.add(prod1) ref.add(prod2) ref.add(prod3) ref.add(prod4) fr.add(prod1) fr.add(prod2) fr.add(prod3) fr.add(prod4) self.assertEqual(ref.products, [prod2, prod3]) self.assertEqual(fr.products, [prod4]) def test_count(self): ref = Refrigerator(6.0) #создаём холодильник с температурой 6 градусов fr = Freezer(-24) #создаём холодильную камеру с температурой -24 градуса prod1 = Product('Fish', -2, 0) #рыба prod2 = Product('Cheese', 5, 10) #сыр prod3 = Product('Sausage', 4, 6) #сосиски prod4 = Product('Ice Cream', -30, -20) #мороженое ref.add(prod1) ref.add(prod2) ref.add(prod3) ref.add(prod4) fr.add(prod1) fr.add(prod2) fr.add(prod3) fr.add(prod4) self.assertEqual(ref.count(), 2) self.assertEqual(fr.count(), 1) def test_find(self): ref = Refrigerator(6.0) #создаём холодильник с температурой 6 градусов fr = Freezer(-24) #создаём холодильную камеру с температурой -24 градуса prod1 = Product('Fish', -2, 0) #рыба prod2 = Product('Cheese', 5, 10) #сыр prod3 = Product('Sausage', 4, 6) #сосиски prod4 = Product('Ice Cream', -30, -20) #мороженое ref.add(prod1) ref.add(prod2) ref.add(prod3) ref.add(prod4) fr.add(prod1) fr.add(prod2) fr.add(prod3) fr.add(prod4) self.assertEqual(ref.find('Cheese'), prod2) self.assertEqual(ref.find('Ice Cream'), None) self.assertEqual(fr.find('Cheese'), None) self.assertEqual(fr.find('Ice Cream'), prod4) if __name__ == '__main__': unittest.main()

Скриншоты выполнения

Скриншот выполнения тестов

Вывод

Я ознакомилась с основными способами объявления и

использования функций, аннотаций типов и классов в Python.

Соседние файлы в папке 1