2016-10-15 128 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