Just a simple factorial program I made in Python 3.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ```
def fact():
number=eval(input("Enter a number to get the factorial: "))
initialvalue=1
if number>0:
for number in range(number,1,-1):
initialvalue=initialvalue*number
print(initialvalue)
elif number==0:
print(1)
elif number<0:
for number in range(number, -1, 1):
initialvalue=initialvalue*number
print(-initialvalue)
fact()
``` |

Should work with positive and negative numbers. Returns 1 for the factorial of 0 as it should.

You make the very common mistake of using

`eval()`

on untrusted input. Just about everything I write here: http://code.activestate.com/recipes/578847-simple-derivative-solver-in-python/?in=lang-python#c1 applies to your code as well, except you should use`int`

rather than`float`

. So rather than repeat myself, I'll just ask you to read my comment there.I have a code too but just in 12 lines, and it works for any input, integer, float,and strings.and also I suppose 0!= 0 and for float numbers it calculate the factorial of it's integer part of the decimal number and for strings it prints some warning.

## def factorial(n):

## result = 1

## if n == 1 or n== -1 or n==0:

## result = n

## else:

## result = n * factorial(n-int((n/abs(n))))

## return result

# #

## try:

## n=int(float((input("Enter a number to get the factorial: "))))

## print(factorial(n))

## except:

## print("must be a number !!!")")