如何创建一个替换指数特征的函数?

时间:2016-09-20 02:44:22

标签: python python-3.x

事先确定这是一个家庭作业问题。好吧有两个我想请求帮助。第一个函数需要取两个数字(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)也不会给出正确的答案。我试着谷歌搜索并在这里完成已经回答的问题,我什么也没想出来。

编辑:我知道有一个内置的运算符,但分配点是不使用运算符。这篇论文实际上有一些巨大的粗体字母,表示它的使用被禁止 - , -

5 个答案:

答案 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会保持不变,请注意将baseans = base * base进行比较。

答案 2 :(得分:0)

也可以使用while循环来缩短代码。

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

答案 3 :(得分:0)

您的代码存在一些问题。

  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循环中,这意味着循环只执行一次。你可能想把它放在循环之外。

  4. 希望这有帮助。

答案 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

修改是:

  • 该函数始终返回一个整数。
  • 否定指数返回0.
  • 指数0返回1.
  • 指数1返回base
  • 2个及更多的指数乘以base本身exp次。