Here is what i wrote:
number = raw_input('Enter an integer= ')
if number < 0:
print 'Invalid number'
else:
for k in range(1,(number)):
number *= k
print number
I want to be able to input any number (that is greater than 0), but when i input a number say 4 (the factorial of 4 is 24) i get this error:
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.
I don’t understand what it means and as far as i know the code should be working, Please Help!
This works perfectly: factorial.py
You should know that this is an inefficient, academic implementation that shouldn’t be used in any serious application. You’ll be a lot better off using a
gammaorlngammaimplementation and a dictionary cache to save on calculations if you use values repeatedly:http://mathworld.wolfram.com/GammaFunction.html