# 4. Программа принимает действительное положительное число x и целое отрицательное число y.
# Необходимо выполнить возведение числа x в степень y. Задание необходимо реализовать в виде функции my_func(x, y).
# При решении задания необходимо обойтись без встроенной функции возведения числа в степень.
# Подсказка: попробуйте решить задачу двумя способами.
# Первый — возведение в степень с помощью оператора **.
# Второй — более сложная реализация без оператора **, предусматривающая использование цикла.

# Способ 1: через **:
def my_func(x, y):
    return x ** y


# Способ 2:
def my_func2(x, y):
    i = 0
    divider = 1
    while i < -y:
        divider = divider * x
        i += 1
    return 1 / divider


# Для проверки пользовательского ввода
# Проверка действительное ли число:
def is_float(value):
    try:
        float(value)
        return True
    except ValueError:
        return False


# Проверка целое ли число:
def is_digit(value):
    try:
        int(value)
        return True
    except ValueError:
        return False


a = input('Введите действительное положительное число: ')
while (not is_float(a)) or (is_float(a) and (float(a) < 0)):
    a = input('Некорректно. Это должно быть действительное и положительное число. \r\nПопробуйте ещё раз: ')

b = input('Введите целое отрицательное число: ')
while (not is_digit(b)) or (is_digit(b) and (int(b)) > 0):
    b = input('Некорректно. Это должно быть целое и отрицательное число. \r\nПопробуйте ещё раз: ')

print(f'Способ 1: x^y = {my_func(float(a), int(b))}')
print(f'Способ 2: x^y = {my_func2(float(a), int(b))}')
