Skip to content
1 change: 1 addition & 0 deletions __init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

30 changes: 15 additions & 15 deletions bun.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
class Bun:
"""
Модель булочки для бургера.
Булочке можно дать название и назначить цену.
"""

def __init__(self, name: str, price: float):
self.name = name
self.price = price

def get_name(self) -> str:
return self.name

def get_price(self) -> float:
return self.price
class Bun:
"""
Модель булочки для бургера.
Булочке можно дать название и назначить цену.
"""
def __init__(self, name: str, price: float):
self.name = name
self.price = price
def get_name(self) -> str:
return self.name
def get_price(self) -> float:
return self.price
96 changes: 48 additions & 48 deletions burger.py
Original file line number Diff line number Diff line change
@@ -1,48 +1,48 @@
from typing import List

from praktikum.bun import Bun
from praktikum.ingredient import Ingredient


class Burger:
"""
Модель бургера.
Бургер состоит из булочек и ингредиентов (начинка или соус).
Ингредиенты можно перемещать и удалять.
Можно распечать чек с информацией о бургере.
"""

def __init__(self):
self.bun = None
self.ingredients: List[Ingredient] = []

def set_buns(self, bun: Bun):
self.bun = bun

def add_ingredient(self, ingredient: Ingredient):
self.ingredients.append(ingredient)

def remove_ingredient(self, index: int):
del self.ingredients[index]

def move_ingredient(self, index: int, new_index: int):
self.ingredients.insert(new_index, self.ingredients.pop(index))

def get_price(self) -> float:
price = self.bun.get_price() * 2

for ingredient in self.ingredients:
price += ingredient.get_price()

return price

def get_receipt(self) -> str:
receipt: List[str] = [f'(==== {self.bun.get_name()} ====)']

for ingredient in self.ingredients:
receipt.append(f'= {str(ingredient.get_type()).lower()} {ingredient.get_name()} =')

receipt.append(f'(==== {self.bun.get_name()} ====)\n')
receipt.append(f'Price: {self.get_price()}')

return '\n'.join(receipt)
from typing import List
from praktikum.bun import Bun
from praktikum.ingredient import Ingredient
class Burger:
"""
Модель бургера.
Бургер состоит из булочек и ингредиентов (начинка или соус).
Ингредиенты можно перемещать и удалять.
Можно распечать чек с информацией о бургере.
"""
def __init__(self):
self.bun = None
self.ingredients: List[Ingredient] = []
def set_buns(self, bun: Bun):
self.bun = bun
def add_ingredient(self, ingredient: Ingredient):
self.ingredients.append(ingredient)
def remove_ingredient(self, index: int):
del self.ingredients[index]
def move_ingredient(self, index: int, new_index: int):
self.ingredients.insert(new_index, self.ingredients.pop(index))
def get_price(self) -> float:
price = self.bun.get_price() * 2
for ingredient in self.ingredients:
price += ingredient.get_price()
return price
def get_receipt(self) -> str:
receipt: List[str] = [f'(==== {self.bun.get_name()} ====)']
for ingredient in self.ingredients:
receipt.append(f'= {str(ingredient.get_type()).lower()} {ingredient.get_name()} =')
receipt.append(f'(==== {self.bun.get_name()} ====)\n')
receipt.append(f'Price: {self.get_price()}')
return '\n'.join(receipt)
66 changes: 33 additions & 33 deletions database.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
from typing import List

from praktikum.bun import Bun
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING


class Database:
"""
Класс с методами по работе с базой данных.
"""

def __init__(self):
self.buns: List[Bun] = []
self.ingredients: List[Ingredient] = []

self.buns.append(Bun("black bun", 100))
self.buns.append(Bun("white bun", 200))
self.buns.append(Bun("red bun", 300))

self.ingredients.append(Ingredient(INGREDIENT_TYPE_SAUCE, "hot sauce", 100))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_SAUCE, "sour cream", 200))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_SAUCE, "chili sauce", 300))

self.ingredients.append(Ingredient(INGREDIENT_TYPE_FILLING, "cutlet", 100))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_FILLING, "dinosaur", 200))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_FILLING, "sausage", 300))

def available_buns(self) -> List[Bun]:
return self.buns

def available_ingredients(self) -> List[Ingredient]:
return self.ingredients
from typing import List
from praktikum.bun import Bun
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING
class Database:
"""
Класс с методами по работе с базой данных.
"""
def __init__(self):
self.buns: List[Bun] = []
self.ingredients: List[Ingredient] = []
self.buns.append(Bun("black bun", 100))
self.buns.append(Bun("white bun", 200))
self.buns.append(Bun("red bun", 300))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_SAUCE, "hot sauce", 100))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_SAUCE, "sour cream", 200))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_SAUCE, "chili sauce", 300))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_FILLING, "cutlet", 100))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_FILLING, "dinosaur", 200))
self.ingredients.append(Ingredient(INGREDIENT_TYPE_FILLING, "sausage", 300))
def available_buns(self) -> List[Bun]:
return self.buns
def available_ingredients(self) -> List[Ingredient]:
return self.ingredients
40 changes: 20 additions & 20 deletions ingredient.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
class Ingredient:
"""
Модель ингредиента.
Ингредиент: начинка или соус.
У ингредиента есть тип (начинка или соус), название и цена.
"""

def __init__(self, ingredient_type: str, name: str, price: float):
self.type = ingredient_type
self.name = name
self.price = price

def get_price(self) -> float:
return self.price

def get_name(self) -> str:
return self.name

def get_type(self) -> str:
return self.type
class Ingredient:
"""
Модель ингредиента.
Ингредиент: начинка или соус.
У ингредиента есть тип (начинка или соус), название и цена.
"""
def __init__(self, ingredient_type: str, name: str, price: float):
self.type = ingredient_type
self.name = name
self.price = price
def get_price(self) -> float:
return self.price
def get_name(self) -> str:
return self.name
def get_type(self) -> str:
return self.type
14 changes: 7 additions & 7 deletions ingredient_types.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""
Перечисление с типами ингредиентов.
SAUCE – соус
FILLING – начинка
"""
INGREDIENT_TYPE_SAUCE = 'SAUCE'
INGREDIENT_TYPE_FILLING = 'FILLING'
"""
Перечисление с типами ингредиентов.
SAUCE – соус
FILLING – начинка
"""
INGREDIENT_TYPE_SAUCE = 'SAUCE'
INGREDIENT_TYPE_FILLING = 'FILLING'
82 changes: 41 additions & 41 deletions praktikum.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
from typing import List

from praktikum.bun import Bun
from praktikum.burger import Burger
from praktikum.database import Database
from praktikum.ingredient import Ingredient


def main():
# Инициализируем базу данных
database: Database = Database()

# Создадим новый бургер
burger: Burger = Burger()

# Считаем список доступных булок из базы данных
buns: List[Bun] = database.available_buns()

# Считаем список доступных ингредиентов из базы данных
ingredients: List[Ingredient] = database.available_ingredients()

# Соберём бургер
burger.set_buns(buns[0])

burger.add_ingredient(ingredients[1])
burger.add_ingredient(ingredients[4])
burger.add_ingredient(ingredients[3])
burger.add_ingredient(ingredients[5])

# Переместим слой с ингредиентом
burger.move_ingredient(2, 1)

# Удалим ингредиент
burger.remove_ingredient(3)

# Распечатаем рецепт бургера
print(burger.get_receipt())


if __name__ == "__main__":
main()
from typing import List
from praktikum.bun import Bun
from praktikum.burger import Burger
from praktikum.database import Database
from praktikum.ingredient import Ingredient
def main():
# Инициализируем базу данных
database: Database = Database()
# Создадим новый бургер
burger: Burger = Burger()
# Считаем список доступных булок из базы данных
buns: List[Bun] = database.available_buns()
# Считаем список доступных ингредиентов из базы данных
ingredients: List[Ingredient] = database.available_ingredients()
# Соберём бургер
burger.set_buns(buns[0])
burger.add_ingredient(ingredients[1])
burger.add_ingredient(ingredients[4])
burger.add_ingredient(ingredients[3])
burger.add_ingredient(ingredients[5])
# Переместим слой с ингредиентом
burger.move_ingredient(2, 1)
# Удалим ингредиент
burger.remove_ingredient(3)
# Распечатаем рецепт бургера
print(burger.get_receipt())
if __name__ == "__main__":
main()
Loading