事先确定这是一个家庭作业问题。好吧有两个我想请求帮助。第一个函数需要取两个数字(base,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)也不会给出正确的答案。我试着谷歌搜索并在这里完成已经回答的问题,我什么也没想出来。
编辑:我知道有一个内置的运算符,但分配点是不使用运算符。这篇论文实际上有一些巨大的粗体字母,表示它的使用被禁止 - , -
答案 0 :(得分:1)
你可能只想要:
ans = 1
for i in range(exp):
ans *= base
return ans
作为你的最后一个条件 你也不需要中间条件。
答案 1 :(得分:0)
它应该有用。
src
首先,检查条件在Python中的工作方式,def iterPower(base, exp):
if base < 0:
return 0
ans = 1
for i in range(exp):
ans *= base
return ans
与base and exp <= 0
不同。
其次,Python中的块是根据缩进定义的,因此这两个循环执行不同的操作:
base <= 0 and exp <= 0
第三,如果for i in range(exp):
ans *= base
return ans
for i in range(exp):
ans *= base
return ans
没有变化,base * base
会保持不变,请注意将base
与ans = base * base
进行比较。
答案 2 :(得分:0)
也可以使用while循环来缩短代码。
def iterPower(base, exp):
answer = 1
while exp > 0:
answer *= base
exp -= 1
return answer
答案 3 :(得分:0)
您的代码存在一些问题。
声明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循环中,这意味着循环只执行一次。你可能想把它放在循环之外。
希望这有帮助。
答案 4 :(得分:0)
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
次。