1

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

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

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

我什至不知道这是否正确计算阶乘,我不在乎,我只是想让它返回一个值。怎么了?为什么我不能使用返回?当我将 return 替换为时,我不确定出了什么问题

       display,

它仍然不起作用。

4

4 回答 4

3

在您的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了 with 语句while,但在这里您可能可以在while满足条件后退出块并以这种方式返回变量。

于 2012-12-04T23:39:29.413 回答
1

尝试:

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这里也完全没用。

于 2012-12-04T23:38:35.030 回答
1
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 的值
于 2012-12-04T23:44:06.250 回答
0

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

例如,您想要执行以下操作:

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

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

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

这将帮助您了解控制结构,以便您可以使循环执行您想要的操作。

于 2012-12-04T23:40:06.783 回答