[英]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 <= 0
與base <= 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 * base
與ans = ans * base
。
也可以使用while循環來縮短代碼。
def iterPower(base, exp):
answer = 1
while exp > 0:
answer *= base
exp -= 1
return answer
您的代碼有兩個問題。
語句if base and exp <= 0
基本上轉換為if (base) and (exp <= 0)
。 在此,條件將單獨評估。 您可能要使用if base <= 0 and exp <= 0:
或類似的值)。
語句ans = base * base
基本上正方形base
和分配結果到ans
。 ans = ans * base
會更好嗎(請確保在此之前將ans
初始化為1。
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
修改為:
base
。 base
通過本身exp
倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.