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

在Python中如何使用循环返回值?,python,loops,Python,Loops,我试图学习基本的python,但似乎无法使用while循环返回值。我正在从我正在阅读的指南中复制语法,但当我运行它时,它似乎不起作用。我可能有不同的版本,我不确定 不管怎样,我只是在胡闹,得到了这个密码 def fact(x): count = 1 sum = 0 while count <= x: sum = count * sum count + 1 else: return sum 它仍然不起作用 试试看: def fact(x):

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

不管怎样,我只是在胡闹,得到了这个密码

def fact(x):
 count = 1
 sum = 0
 while count <= x:
     sum =  count * sum
     count + 1
 else:
     return sum   
它仍然不起作用

试试看:

def fact(x):
    count = 1
    sum = 1
    while count <= x:
        sum *= count
        count += 1
    return sum
如果您在
0
处启动计数变量,您将得到
0
,因为
0*n==0
对于所有
n

在这里,
else
也完全没用。

试试:

def fact(x):
    count = 1
    sum = 1
    while count <= x:
        sum *= count
        count += 1
    return sum
如果您在
0
处启动计数变量,您将得到
0
,因为
0*n==0
对于所有
n


else
在这里也是完全无用的。

循环中,您实际上并没有将
计数
设置为等于
计数+1
-您只是声明
计数+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,如果这对你仍然有效的话,但是你可能需要仔细考虑你想做什么。使用带有
while
else
语句,但在这里,您可能只需在满足
while
条件后退出块,并以这种方式返回变量。

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,如果这对你仍然有效的话,但是你可能需要仔细考虑你想做什么。使用了带有
while
else
语句,但在这里,您可能只需在满足
while
条件后退出块,并以这种方式返回变量。

因此,我不知道如何使用python的结构,但您不能单独调用else。您将永远不会返回,因为您没有测试else语句的判断值。它需要附加到if语句才能工作

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

if x == 1:
   return blah
else:
   return foo
我也不确定,但这些代码可能根本无法运行。我也不知道显示器是什么,但我很确定它不是你想要的

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

    return sumi
请阅读:


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

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

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

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

if x == 1:
   return blah
else:
   return foo
我也不确定,但这些代码可能根本无法运行。我也不知道显示器是什么,但我很确定它不是你想要的

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

    return sumi
请阅读:

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

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

    return sumi
计数=1 sumi=1 当计数<代码>定义事实(x)时: 计数=1 sumi=1

虽然count@Keyser:
if
while
for
try
都有一个
else
子句。@Keyser:它允许你进行代码优化,通常需要六行代码才能正常实现。@IgnacioVazquez Abrams不确定我是否遵循了。我的意思是,它似乎只是一行额外的代码。不过我们现在要离开主题了:p谢谢你的澄清。@Keyser:
如果
尝试
都有一个
else
子句。@Keyser:它让你进行代码优化,通常需要六行代码才能正常实现。@IgnacioVazquez Abrams不确定我是否遵循了。我的意思是,它似乎只是一行额外的代码。不过,我们现在离题了:p谢谢你的澄清。。在这种情况下不需要它,但它不应影响任何内容。已在编辑中修复。不知道while..否则--看起来是个奇怪的功能,虽然它很少使用,但它可以让你不用创建哨兵;你建议的解决方案仍然不起作用。我知道对于相对简单的Python问题,很难以足够快的速度获得答案,但在发布之前,请尝试对答案进行快速测试。IPython非常适合快速编写和测试代码片段。。在这种情况下不需要它,但它不应影响任何内容。已在编辑中修复。不知道while..否则--看起来是个奇怪的功能,虽然它很少使用,但它可以让你不用创建哨兵;你建议的解决方案仍然不起作用。我知道对于相对简单的Python问题,很难以足够快的速度获得答案,但在发布之前,请尝试对答案进行快速测试。IPython非常适合快速编写和测试代码段。奇怪的是,我还没有在任何教程中看到+=运算符。@Jordan肯定很有用:)赋值在Python中不是运算符。只是说,@IgnacioVazquez Abrams,那是针对我的吗?你是说=不是操作员?那是什么?@IgnacioVazquez Abrams你说的副作用是什么意思?我想我理解为什么在这种情况下使用它是错误的,因为它只是每次都将该变量重新分配到相同的值,而从来没有实际更改它的值。奇怪的是,我还没有在任何教程中看到+=运算符。@Jordan肯定很方便:)赋值在Pytho中不是运算符