Informática, perguntado por joneboy380, 9 meses atrás

Crie uma sub-rotina que receba como parametro dois valores X e Z, calcule e retorne X^{Z} sem utilizar funções ou operadores de potencia prontos.

preciso em python

Soluções para a tarefa

Respondido por GeBEfte
2

Vamos lembrar da parte matemática primeiro.

O expoente na potência de expoente inteiro pode ser positivo, negativo ou 0 (zero).

No caso de um expoente (n) positivo, a potência é calculada multiplicando-se a base por ela mesma (n-1) vezes.

x^n~=~\underbrace{x\cdot x\cdot x\cdot ...\cdot x }_{(n-1)~vezes}

No caso de um expoente negativo (-n), a potência é calculada dividindo-se o inverso da base (1/base) pela base (n-1) vezes.

x^{-n}~=~\underbrace{\dfrac{1}{x}\cdot \dfrac{1}{x}\cdot \dfrac{1}{x}\cdot ...\cdot \dfrac{1}{x} }_{(n-1)~vezes}

No caso de um expoente nulo (0), a potência valerá 1 independentemente do valor da base.

Sendo assim, podemos ver que uma potência de expoente inteiro pode ser calculada por um laço (ou loop), pois estamos multiplicando ou dividindo uma valor por outro múltiplas vezes.

Obs.: Os pontos que precedem algumas das linhas não fazem parte do programa, foram colocados apenas para garantir a indentação do código aqui no site.

def pot(x, z):

.....pot = 1

.....if z >= 0:

..........for i in range(1, z+1):

...............pot *= x

.....else:

..........for i in range(z, 0):

...............pot /= x

.....return pot

# Script para teste da função pot()

x = int(input('Digite o valor de x: '))

z = int(input('Digite o valor de z: '))

print(f'O valor da potencia {x}^{"{"}{z}{"}"} é {pot(x, z)}')

Comentários:

--> Note que no caso de o usuário informar dados que não sejam inteiros para função pot(), o programa retornará uma exceção/erro, logo cabe ao programa principal validar ou chamar uma função auxiliar para validar os valores de "x" e "y" para evitar problemas.

--> Utilizamos uma estrutura condicional (if/else) para separar os possíveis casos: expoente positivo ou zero e expoente negativo.

--> Utilizamos a função range() para definir o número de iterações no laço for, ou seja, o número de vezes que a base (ou inverso da base) será multiplicada (ou dividida) por ela mesma.

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:
Perguntas interessantes