我还没有得到循环的概念。我得到了以下代码:
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
答案 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
将存储阶乘。然后,您可以return
或print
result
,或者您想用它做任何事情。