Python阶乘程序帮助。

| 这是我写的:
number = raw_input(\'Enter an integer= \')
if number < 0:
    print \'Invalid number\'

else:
    for k in range(1,(number)):
        number *= k

print number
我希望能够输入任何数字(大于0),但是当我输入数字时说4(4的阶乘为24)时出现此错误:
Traceback (most recent call last):
  File \"problem.py\", line 6, in <module>
    for k in range(1,(number)):
TypeError: range() integer end argument expected, got str.
我不明白这是什么意思,据我所知代码应该可以正常工作,请帮助!     
已邀请:
        完美运行:factorial.py
#!/usr/bin/env python

# imports go here

__author__ = \'Michael O. Duffy\'
__status__ = \"Development\"

def factorial(n):
    \"\"\" Calculate a factorial of an integer \"\"\"
    factorial = 1
    if n < 0:
        print \'Invalid number\'
    else:
        for k in range(1,n+1):
            factorial *= k
    return factorial

if __name__ == \'__main__\':

    for number in range(1, 20):
        print \'n: \', number, \'n!: \', factorial(number)
您应该知道,这是一种效率低下的学术实现,不应在任何严肃的应用程序中使用。如果您反复使用值,则使用
gamma
lngamma
实现和字典缓存来节省计算量会更好很多: http://mathworld.wolfram.com/GammaFunction.html     
        递归呢?
def factorial(n):
  if n < 0:
    print(\"ERROR!\") # throw error, return -1, or whatever
  elif n <= 1:
    return 1
  else:
    return n * factorial(n - 1)
    
        
raw_input
返回字符串,而不是整数。这样创建一个整数:
number = int(raw_input(\'Enter an integer= \'))
用户可能会键入除整数以外的其他内容,在这种情况下,您可能要处理这种可能性。
while True:
    try:
        number = int(raw_input(\'Enter an integer= \'))
    except ValueError:
        print \"That wasn\'t an integer\"
    else:
        break
    
        
using xxxxx.py
num=int(raw_input(\"Enter a number\"))
n=1
while num>=0:
  n=n*num
  num=num-1
print \"Factorial of the given number is: \",n
    

要回复问题请先登录注册