如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。