簡體   English   中英

如何制作替代指數功能的功能?

[英]How to make a function that replaces the exponent feature?

是的,這是一個家庭作業問題。 好吧,有兩個我想尋求幫助。 第一個是需要取兩個數字(底數,exp)然后將底數乘以指數表示的時間的函數。 例如。 base = 2,exp =3。它將是2 * 2 * 2。 到目前為止,這就是我所擁有的:

def iterPower(base, exp):

if base and exp <= 0:
    return("The answer is 0")
elif base and exp == 0:
    return("1")
else:
    for i in range(exp):
        ans = base * base
        return ans

print("iterPower(0, 0): should be 1 == "  \
     + str(iterPower(0, 0)))

print("iterPower(5, 3): should be 125 == "  \
     + str(iterPower(5,3)))

print("iterPower(-2.0, 3): should be -8.0 == "  \
     + str(iterPower(-2.0, 3)))

但是,當我運行以上功能時。 第一個測試沒有給我,第二個測試僅給了我25,最后一個測試給了我4.0。 我通過代碼可視化器運行了代碼本身,以查看正在發生(或未發生)的情況,並且看到范圍未被利用。 我還注意到,由於我擁有(base * base),也無法給出正確的答案。 我嘗試使用Google搜索,並在這里回答了已經回答的問題,但我一無所獲。

編輯:我知道有一個內置的運算符,但分配的重點是不使用該運算符。 該文件實際上帶有巨大的粗體字母,表示禁止使用-,-

您可能只想要:

ans = 1
for i in range(exp):
    ans *= base
return ans

作為您的最后一個條件。
您也不需要中間條件。

它應該工作。

def iterPower(base, exp):
    if base < 0:
        return 0
    ans = 1
    for i in range(exp):
        ans *= base
    return ans

首先,檢查條件條件在Python中的工作方式, base and exp <= 0base <= 0 and exp <= 0

其次,Python中的塊是根據縮進定義的,因此這兩個循環執行不同的操作:

for i in range(exp):
    ans *= base
    return ans

for i in range(exp):
    ans *= base
return ans

第三,如果base不變, base * base是常量,請記住將ans = base * baseans = ans * base

也可以使用while循環來縮短代碼。

def iterPower(base, exp):
    answer = 1
    while exp > 0:
        answer *= base
        exp -= 1
    return answer

您的代碼有兩個問題。

  1. 語句if base and exp <= 0基本上轉換為if (base) and (exp <= 0) 在此,條件將單獨評估。 您可能要使用if base <= 0 and exp <= 0:或類似的值)。

  2. 語句ans = base * base基本上正方形base和分配結果到ans ans = ans * base會更好嗎(請確保在此之前將ans初始化為1。

  3. return語句( return ans )在for循環內,這意味着該循環僅執行一次。 您可能希望將其置於循環之外。

希望這可以幫助。

1我認為您想要的代碼是:

def iterPower( base, exp ):

    if base and exp < 0:
        return 0
    elif base and exp == 0:
        return 1
    elif base and exp == 1:
        return base
    else:
        ans = base
        for i in range( 1, exp ):
            ans *= base
        return ans

修改為:

  • 該函數始終返回整數。
  • 負指數返回0。
  • 指數為0將返回1。
  • 1的指數返回base
  • 的2的指數和更大的乘法base通過本身exp倍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM