如何在Python中使用循环返回值?

时间:2012-12-04 23:32:39

标签: python loops

我正在尝试学习基本的python,我似乎无法使用while循环返回值。我正在从我正在阅读的指南中复制语法,但是当我运行它时它似乎不起作用。我可能有不同的版本,我不确定。

无论如何我只是乱搞并得到了这段代码

def fact(x):
 count = 1
 sum = 0
 while count <= x:
     sum =  count * sum
     count + 1
 else:
     return sum   

我甚至不知道这是否正确计算阶乘,我不在乎,我只是想让它返回一个值。怎么了?为什么我不能使用退货?当我用

替换return时,我不确定是什么问题
       display,

它仍然不起作用。

4 个答案:

答案 0 :(得分:4)

while循环中,您实际上并未将count设置为count + 1 - 您只是声明count + 1,它不会重新分配变量:

In [1]: count = 1

In [2]: count + 1
Out[2]: 2

In [3]: count
Out[3]: 1

您需要使用count += 1之类的内容。此外,您将遇到以下问题:

sum =  count * sum

由于它最初为0,因此无论计数是多少,您每次都将其重置为0。如果仍然适用于您,您可以尝试将其设置为1,但您可能需要仔细考虑您正在尝试做的事情。使用了带有else的{​​{1}}语句,但您可以在满足while条件后退出块并以此方式返回变量。

答案 1 :(得分:2)

尝试:

def fact(x):
    count = 1
    sum = 1
    while count <= x:
        sum *= count
        count += 1
    return sum

虽然这可能更好:

def fact(x):
    prod = 1
    for i in range(1, x+1):
        prod *= i
    return prod

如果你在0开始计数变量,那么0就会被0 * n == 0取出,因为所有n都会else

{{1}}在这里也完全无用。

答案 2 :(得分:2)

def fact(x):
    count = 1
    sumi = 1
    while count <= x:
        sumi =  count * sumi
        count = count + 1

    return sumi

这里有些错误:

  • 开头的sumi = 0是错误的,它会使你的函数总是返回0
  • count + 1如果不将其分配给任何内容,则不会更改count的值
  • 暂时放置return语句。循环完成后,它将返回sumi
  • 的值

答案 3 :(得分:1)

所以我不知道你正在使用python的结构,但是你不能单独调用else。你永远不会回来,因为你没有判断值来测试else语句。它需要附加到if语句才能工作。

例如,您可能希望执行以下操作:

if x == 1:
   return blah
else:
   return foo

我也不确定,但代码可能根本不运行。我不知道显示器是什么,但我很确定它不是你想要的。

请阅读:http://docs.python.org/2/tutorial/controlflow.html

这将帮助您了解控制结构,以便您可以按自己的意愿进行循环。