return语句不起作用

时间:2014-11-18 11:24:31

标签: python

我是一个python初学者,在这里我被困在试图定义阶乘函数时。 问题是当我把print而不是return函数完美地运行时,但不幸的是我需要在另一个函数中使用factorial函数,这意味着我确实需要return语句。 无论如何!(http://postimg.org/image/bgctbpi31/

#!/usr/bin/python
def fact(x):
  x=int(input("enter a number : "))
  result=1
  if x<0:
             print'it does not exist'
  elif x==0:
              return result
  else:
             for i in range (1,x+1):
              result=result*i
              return result

  return result
fact(5)

3 个答案:

答案 0 :(得分:0)

出于某种原因,你在for循环中有一个返回。你应该注意缩进,因为Python使用缩进级别来确定范围。

def fact(x):
    r=1
    if x<0:
        print "does not exist"
        return None
    elif x==0:
        return r
    else:
        for i in range(0, x):
            r *= i+1
    return r

答案 1 :(得分:-2)

简单问题,我建议使用递归,因为它是一个递归问题:

def nfak(n):
    if n < 0 :
        raise ValueError('Input has to be positive')
    elif n == 0:
        return 1
    else:
        return n * nfak(n - 1)

答案 2 :(得分:-2)

你必须处理函数输出,因为print保存在变量as中

def fact(x):
    x=input("input : ");
    result=1;
    if x < 0:
        return "no answer";
    elif x==0:
        return x;
    else:
        for i in range(1,x+1):
            result=result*i
        return result;
print fact(5);

这工作正常。如

stackoverflow$ python fact.py 
input : 5
120