-7
def factorial(n):
    if isinstance(n,int):
        if n == 1:
            return 1;
        elif n <= 0:
            print("Factorial is for positive integer.")
        else:
            return n*factorial(n-1)
    else:
        print("It's only for integers")

factorial_number = input("give an integer that you want to factor: ")
print(factorial(factorial_number))
NoobDude
  • 3
  • 2

2 Answers2

0

The built-in input() always return a str object. You need to cast it to int.

factorial_number = int(input("give an integer that you want to factor: "))
print(factorial(factorial_number))
Fukiyel
  • 1,166
  • 7
  • 19
0

You can handle is as soon as you get the input, see below example:

if factorial_number.isdigit():
    factorial_number = int(factorial_number)
else:
    print("It's only for integers")
Amit Nanaware
  • 3,203
  • 1
  • 6
  • 19
  • 2
    Won't work with negative numbers which are valid integers. Wrap in a try/except instead; "easier to ask for forgiveness than permission" – roganjosh Mar 08 '19 at 13:28
  • @roganjosh although true in general, it would be fine in this case because factorials are only defined for non-negative integers – meowgoesthedog Mar 08 '19 at 13:30