我是一个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)
答案 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