Python为2的力量产品的循环

时间:2016-10-30 21:29:45

标签: python function loops while-loop product

我需要帮助创建一个使用while循环的函数,以便找到2的幂的乘积。

以下是问题:

  

创建一个名为productOfPowersOf2的Python函数,它需要两个   参数,两者都是非负整数。出于...的目的   这个问题,让我们调用第一个参数exp1和第二个参数   参数exp2。你的函数应该计算并返回(不打印)   从2exp1到2exp2的2的所有幂的乘积。这里有些例子   你的函数应该如何表现:

>>> productOfPowersOf2(0,0)
1
>>> productOfPowersOf2(1,1)
2
>>> productOfPowersOf2(1,2)
8
>>> productOfPowersOf2(1,3)
64
我写的是:

def productsOfPowersOf2(exp1,exp2):
    total=0
    num=0
    while num<=exp2:
        total=(2**exp1)*(2**(exp1+num))
        num=num+1
    return(total)

但这不起作用。谁能帮忙?

2 个答案:

答案 0 :(得分:0)

我认为作业说的是这个吗?

  

你的函数应该计算并返回(不打印)从2 exp1 到2 exp2 的所有2的幂的乘积

1)您没有服用累积产品;您只是将total重新分配给下一个值。

total=(2**exp1)*(2**(exp1+num))

换句话说,当循环退出时,如果我不得不猜测,你只能得到这个,这可能总是大于你想要的值

total=(2**exp1)*(2**(exp1+exp2))

提示:你可以使用数学。 x^y * x^z = x ^ (y + z)。在取得2的幂之前,对指数求和。

<强> SPOILER

  

def productOfPowersOf2(exp1,exp2): total = 2**exp1 exp1 += 1 while exp1 <= exp2: total *= 2**exp1 exp1 += 1 return total

答案 1 :(得分:0)

这非常有效:

def productOfPowersOf2(a,b): 
    return reduce(lambda x,y: x*y ,[2**i for i in range(a,b+1)])