2016-10-15 106 views
-1

我很高兴来到这里!我有一个问题提到我的python prp 编程课程,我一直在努力抓住!这个任务有一个问题,基本上我必须定义函数Power(x,n),它必须将值x提高到n的幂!我不大声地使用运算符“**”,而且我们只能使用在类中学到的东西,所以基本上使用if-else语句,布尔代数,范围和for循环!它只能返回输入值的值!非常感谢帮助,因为我正在为这个概念而努力! 必须使用范围函数...谢谢! :)使用Python范围函数进行乘法运算

+0

获得别人为你做的功课完全违背了目的。 –

回答

0

试试这个:

def power(x, n): 
    result = 1 
    for i in range(n): 
     result *= x 
    return result 

它给你正确答案。例子:

>>> power(2, 3) 
8 
>>> 2**3 
8 
>>> 
>>> power(4, 6) 
4096 
>>> 4**6 
4096 

或者,如果你被允许通过推广到用数学模块,您可以包括负数和分数:

def power(x, n): 
    return math.exp(math.log(x) * n) 

返回:

>>> power(2, 0.5) 
1.414213562373095 
>>> power(2, -1) 
0.5 
>>> 
+0

是的,这是完美的工作,它只是在你的代码中完成!我一直在努力的是数学背后的实际逻辑!在我看到你是如何做到这一点之后,我还有另外两个我现在尝试尝试的问题!谢谢:) –

+0

可能超出范围,但负面或不是整数呢? – Simon

+0

将其推广到:'math.exp(math.log(x)* n)'。 – rassar

-1

通过递归而是更漂亮了。

def power(n, k): 
    return 1 if k == 0 else n*power(n, k-1) 

def power(n, k): 
    if k < 0: 
     return 1/power(n, abs(k)) 
    return 1 if k == 0 else n*power(n, k-1) 

但是如果你必须使用一个范围对象,你可以从另外建立起来代替。

def multiply(n, k): 
    return sum(n for _ in range(k)) 

def power(n, k): 
    return sum(multiply(n, n) for _ in range(k-1)) if k != 0 else 1 

否则你可能不喜欢它

def power1(n, k): 
    return sum(n*n for _ in range(k-1)) if k != 0 else 1