我需要帮助创建一个使用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)
但这不起作用。谁能帮忙?
答案 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)])