如何返回while循环的乘积

时间:2013-07-16 12:59:52

标签: python python-2.7 while-loop

我还没有得到循环的概念。我得到了以下代码:

x=0
while  x < n:
   x = x+1
   print x

打印1,2,3,4,5。

没关系,但是如何访问循环中完成的计算呢?例如,如何返回循环的乘积(5 * 4 * 3 * 2 * 1)?

感谢。

编辑:

这是我的最终代码:

def factorial(n):
   result = 1
   while n >= 1:
      result = result *n
      n=n-1
   return result

7 个答案:

答案 0 :(得分:3)

存储该产品并返回 结果:

def calculate_product(n):
    product = 1
    for x in range(n):
        product *= x + 1

    return product

现在我们有一个产生计算的函数,它返回结果:

print calculate_product(5)

答案 1 :(得分:3)

您想再引入一个变量(total),其中包含一系列操作的累计值:

total = 1
x = 1
while x <= 5:
   total *= x
   x += 1
   print x, total
print 'total:', total

实际上,更多的pythonic方式:

total = 1
n = 5
for x in xrange(1, n + 1):
    total *= x
print total

请注意,total的初始值必须为1,而不是0,因为在后一种情况下,您将始终收到0({{1} }}总是等于0*1*..)。

答案 2 :(得分:3)

“一线”

>>> import operator
>>> reduce(operator.mul, xrange(1, n + 1))
120
>>> 

答案 3 :(得分:1)

使用for循环:

sum_ = 1
for i in range(1, 6):
    sum_ *= i
print sum_

答案 4 :(得分:1)

或者,您可以使用yield关键字,该关键字将在 while循环中返回中的值。例如:

def yeild_example():
    current_answer = 1
    for i in range(1,n+1):
        current_answer *= i
        yield current_answer

哪会懒惰地为你评估答案。如果你只是想要一切这可能是要走的路,但是如果你知道你想要存储东西那么你应该像其他答案那样使用return,但这对很多其他应用程序来说都很好。

这被称为generator function,其背后的想法是它是一个在被问及时“生成”答案的函数。与一次性生成所有内容的标准函数相比,这允许您仅在需要时执行计算,并且通常会提高内存效率,但性能最好根据具体情况进行评估。一如既往。

**编辑:所以这不是OP提出的问题,但我认为这将是对python的一些非常简洁和灵活的事情的一个很好的介绍。

答案 5 :(得分:0)

要访问循环中完成的计算,您必须使用计数器(具有有用且易于理解的名称),您将在其中存储计算结果。计算完成后,您只需返回或使用计数器作为循环的乘积。

sum_counter=0
x=0
while  x < 10:
   sum_counter +=x
   x+=1
print sum_counter

答案 6 :(得分:0)

如果您希望保留while循环结构,可以这样做(有1000 + 1种方法可以做到......):

x=1
result = 1
while  x <= n:
   x += 1
   result *= x

result将存储阶乘。然后,您可以returnprint result,或者您想用它做任何事情。