# функция для максимальной стоимости товара, скидки по карте и цены со скидкой
class cena:
    def __init__(self, st = 0, sk = 0, m_cen = 0):
        self.st = a
        self.sk = b
        self.m_cen = m_c

# функция для отображения максимальной стоимости
def show(self, st = 0):
    return self.st

# функция для отображения скидки
def show_1(self, sk = 0):
    return self.sk

# функция для отображения цены со скидкой
def show_2 (self, m_cen = 0):
    return int(self.st - self.st*self.sk/100)

# раздел "Для нее"
class For_Her():
# функция для отображения имеющегося в магазине товара
    def tovar_1(self):
        return "Имеющийся товар: \n%s" % self.name
        
# подраздел "Парфюмерия"
class parfum_1(For_Her):
    name = "-> Духи \n-> Туалетная вода \n-> Парфюмерная вода \n-> Дезодоранты \n"
    st = 9000
    sk = 45
    sh = show
    sh_1 = show_1
    sh_2 = show_2

# подраздел "Декоративная косметика"
class decor_kosm_1(For_Her):
    name = "-> Для губ \n-> Для глаз \n-> Для лица \n-> Для ногтей \n"
    st = 1700
    sk = 15
    sh = show
    sh_1 = show_1
    sh_2 = show_2

# подраздел "Средства для ухода"  
class for_care_1(For_Her):
    name = "-> Для лица \n-> Для тела \n-> Для рук и ногтей \n-> Для ног \n"
    st = 2000
    sk = 20
    sh = show
    sh_1 = show_1
    sh_2 = show_2

# подраздел "Косметика для волос"
class for_hair_1(For_Her):
    name = "-> Шампуни и бальзамы \n-> Средства для укладки \n-> Средства для ухода \n-> Краска для волос \n"
    st = 1300
    sk = 30
    sh = show
    sh_1 = show_1
    sh_2 = show_2

# раздел "Для него"
class For_Him():
    # функция для отображения имеющегося в магазине товара
    def tovar_2(self):
        return "Имеющийся товар: \n%s" % self.name
        
# подраздел "Парфюмерия"
class parfum_2(For_Him):
    name = "-> Одеколон \n-> Туалетная вода \n-> Парфюмерная вода \n-> Дезодоранты \n-> Парфюмерный спрей \n"
    st = 7000
    sk = 40
    sh = show
    sh_1 = show_1
    sh_2 = show_2

# подраздел "Средства для ухода"  
class for_care_2(For_Him):
    name = "-> Для лица \n-> Для тела \n-> Для рук \n-> Для ног \n -> Для волос \n"
    st = 1800
    sk = 25
    sh = show
    sh_1 = show_1
    sh_2 = show_2
            
p_1 = parfum_1()
p_2 = parfum_2()
d_1 = decor_kosm_1()
c_1 = for_care_1()
c_2 = for_care_2()
h_1 = for_hair_1()

# вывод на экран и выбор соответствующего пункта меню
answ = 0
while (answ !=3):
    print("\nДобро пожаловать в онлайн-магазин косметики!\nПожалуйста, выберите необходимый пункт меню:")
    print("1 - Выбор продукта\n2 - О программе\n3 - Выход из программы\n")

    answ = ""
    while (answ == ""):
        answ = input("Ваш выбор: ")
        try: answ = int(answ)
        except ValueError:
            print("Пожалуйста, введите число.")
            answ = ""
            continue       
        if (answ < 1 or answ > 3):
            print("Введенное число должно лежать в интервале [1; 3] в соответствии\nс количеством пунктов меню.")
            answ = ""

# вывод на экран и выбор соответствующего раздела    
    if (answ == 1):
        answ_new = 0
        while (answ_new !=3):
            print("\nПожалуйста, выберите необходимый раздел:")
            print("1 - Для нее\n2 - Для него\n3 - В главное меню\n")

            answ_new = ""
            while (answ_new == ""):
                answ_new = input("Ваш выбор: ")
                try: answ_new = int(answ_new)
                except ValueError:
                    print("Пожалуйста, введите число.")
                    answ_new = ""
                    continue       
                if (answ_new < 1 or answ_new > 3):
                    print("Введенное число должно лежать в интервале [1; 3] в соответствии\nс количеством пунктов меню.")
                    answ_new = ""

# вывод на экран и выбор соответствующего подраздела                     
            if (answ_new == 1):        
                answ_new1 = 0
                while (answ_new1 !=5):
                    print("\nПожалуйста, выберите необходимый подраздел:")
                    print("1 - Парфюмерия\n2 - Декоративная косметика\n3 - Средства для ухода\n4 - Косметика для волос\n5 - Вернуться к выбору раздела")

                    answ_new1 = ""
                    while (answ_new1 == ""):
                        answ_new1 = input("Ваш выбор: ")
                        try: answ_new1 = int(answ_new1)
                        except ValueError:
                            print("Пожалуйста, введите число.")
                            answ_new1 = ""
                            continue       
                        if (answ_new1 < 1 or answ_new1 > 5):
                            print("Введенное число должно лежать в интервале [1; 5] в соответствии\nс количеством пунктов меню.")
                            answ_new1 = ""

# вывод на экран имеющегося товара данного подраздела и его параметров      
                    if (answ_new1 == 1):
                        print ("\nПарфюмерия.\n", p_1.tovar_1(), "Максимальная стоимость: ", p_1.sh(), "руб."
                           "\n Максимальная скидка по карте: ", p_1.sh_1(), "%", "\n Максимальная стоимость со скидкой: ", p_1.sh_2(), "руб.")
                    if (answ_new1 == 2):
                        print ("\nДекоративная косметика.\n", d_1.tovar_1(), "Максимальная стоимость: ", d_1.sh(), "руб."
                           "\n Максимальная скидка по карте: ", d_1.sh_1(), "%", "\n Максимальная стоимость со скидкой: ", d_1.sh_2(), "руб.")
                    if (answ_new1 == 3):
                        print ("\nСредства для ухода.\n", c_1.tovar_1(), "Максимальная стоимость: ", c_1.sh(), "руб."
                           "\n Максимальная скидка по карте: ", c_1.sh_1(), "%", "\n Максимальная стоимость со скидкой: ", c_1.sh_2(), "руб.")
                    if (answ_new1 == 4):
                        print ("\nКосметика для волос.\n", h_1.tovar_1(), "Максимальная стоимость: ", h_1.sh(), "руб."
                           "\n Максимальная скидка по карте: ", h_1.sh_1(), "%", "\n Максимальная стоимость со скидкой: ", h_1.sh_2(), "руб.")
                    input("\nНажмите Enter для продолжения")

# вывод на экран и выбор соответствующего подраздела
            if (answ_new == 2):
                answ_new1 = 0
                while (answ_new1 !=3):
                    print("\nПожалуйста, выберите необходимый подраздел:")
                    print("1 - Парфюмерия\n2 - Средства для ухода\n3 - Вернуться к выбору раздела")

                    answ_new1 = ""
                    while (answ_new1 == ""):
                        answ_new1 = input("Ваш выбор: ")
                        try: answ_new1 = int(answ_new1)
                        except ValueError:
                            print("Пожалуйста, введите число.")
                            answ_new1 = ""
                            continue       
                        if (answ_new1 < 1 or answ_new1 > 3):
                            print("Введенное число должно лежать в интервале [1; 3] в соответствии\nс количеством пунктов меню.")
                            answ_new1 = ""

# вывод на экран имеющегося товара данного подраздела и его параметров 
                    if (answ_new1 == 1):
                        print ("\nПарфюмерия.\n", p_2.tovar_2(), "Максимальная стоимость: ", p_2.sh(), "руб."
                           "\n Максимальная скидка по карте: ", p_2.sh_1(), "%", "\n Максимальная стоимость со скидкой: ", p_2.sh_2(), "руб.")
                    if (answ_new1 == 2):
                        print ("\nСредства для ухода.\n", c_2.tovar_2(), "Максимальная стоимость: ", c_2.sh(), "руб."
                           "\n Максимальная скидка по карте: ", c_2.sh_1(), "%", "\n Максимальная стоимость со скидкой: ", c_2.sh_2(), "руб.")
                    input("\nНажмите Enter для продолжения")

# информация о создателях программы                             
    if (answ == 2):
            print("Программа \"Онлайн-магазин косметики\" \nВыполнили: Осадчая Т.С., Игнатова Ю.А., группа 1652.")
            input("\nНажмите Enter для продолжения")

if (answ == 3):
    print("\nДо встречи!")
