Оператор ** для піднесення до степеня. В Python оператор піднесення до степеня позначається двома символами зірочки ** між основою і показником степеня.print(5**6)print((-7)**4)print(100**0)print(9**-4)print((-3)**-3)print(0.5**10)print(0.4**0.6)>>> %Run 1.py15625240110.00015241579027587258-0.0370370370370370350.00097656250.5770799623628855>>>
Оператор pow()або math.power() для піднесення до степеня. Також підносити до степеня в Python можна за допомогою функції pow()або модуля math, в якому є своя реалізація цього ж модуля: math.power()import mathprint(pow(-8, 7))print(math.pow(-8, 7))print(pow(2, 1.5))print(math.pow(2, 1.5))print(pow(4, 3))print(math.pow(4,3))print(pow(2.0, 5))print(math.pow(2.0, 5))
>>> %Run 1.py-2097152-2097152.02.82842712474619032.82842712474619036464.032.032.0>>> Вивід: Відмінність лише в тому, що math.pow()завжди повертає значення числа з плаваючою крапкою, навіть якщо передати цілі числа. А ось pow() поверне число з плаваючою крапкою, якщо таким же був хоча б один з аргументів.
Порівняння часу роботи різних рішень. Тепер порівняємо, скільки займає виконання кожної з функцій pow(), math.pow() і оператора **. Для цього використовуємо модуль timeit.import mathimport timestart = time.process_time()val = 2**9999999print('** за', time.process_time() - start, 'ms')>>> %Run 1.py** за 0.1875 ms
Порівняння часу роботи різних рішень. Тепер порівняємо, скільки займає виконання кожної з функцій pow(), math.pow() і оператора **. Для цього використовуємо модуль timeit.import mathimport timestart = time.process_time()val = pow(2, 9999999)print('pow() за', time.process_time() - start, 'ms')>>> %Run 1.pypow() за 0.203125 ms
Порівняння часу роботи різних рішень. Тепер порівняємо, скільки займає виконання кожної з функцій pow(), math.pow() і оператора **. Для цього використовуємо модуль timeit.import mathimport timestart = time.process_time()val = math.pow(2, 9999999)print('math.pow()за',time.process_time()-start, 'ms')'ms')>>> %Run 1.py. Traceback (most recent call last): File "F:\системні папки\Робочий стіл\1.py", line 6, in
Задача 1. Піднесення чисел до степеня до заданої межі. Вивести степені натуральних чисел, що не перевершують даного числа n. Користувач задає показник ступеня і число n.p = int(input("Показник степеня: "))n = int(input("Межа: "))i = 1while i ** p <= n: print(i ** p, end=' ') i += 1print("\n Останнє число," " піднесене в степінь:", i - 1)%Run 1.py. Показник степеня: 3 Межа: 2001 8 27 64 125 Останнє число, піднесене в степінь: 5
Нуль в степені нуль. Дискусії з приводу значення 0 в степені 0 тривають вже більше двох століть. Зазвичай значення нуля в нульовому степені прийнято вважати невизначеним, але символічна угода про те, що "0 в степені 0 дорівнює 1" допомагає в записі формул і алгоритмів. Саме тому так зроблено і в Python:print(pow(0, 0))print(0 ** 0)>>> %Run 1.py11>>>
Задача2. Як звести в степінь кожну цифру натурального числа?Суть у наступному: потрібна функція, яка зводить в квадрат цифри натурального числа, кожну по черзі.def square_digits(number): out = '' for i in str(number): out += str(int(i)**2) return int(out)n = int(input("n="))print(square_digits(n))>>> %Run 1.pyn=123149>>> %Run 1.pyn=678364964
def square_digits_v1(n): return int(''.join(str(int(x) ** 2) for x in str(n)))n = int(input())print(square_digits_v1(n))def square_digits_v2(n): print(*[int(x) ** 2 for x in str(n)], sep='')n = int(input())print(square_digits_v2(n))>>> %Run 1.py76849 36 64>>> >>> %Run 1.py2344916>>> Інші варіанти цього коду:
Задача 3. "Піднесення до степеня"Дано дійсне додатне число 𝒂 і ціле невід'ємне число 𝒏. Обчисліть 𝒂𝒏 не використовуючи цикли, зведення в степінь через ** і функцію math.pow(), а використовуючи рекурентне співвідношення 𝒂𝒏=𝒂∙𝒂𝒏−𝟏. Рішення оформіть у вигляді функції power(a, n). def power(a, n): if n == 0: return 1 else: return a * power(a, n - 1)print(power(float(input()), int(input())))>>> %Run 22.py372187.0>>>