# Python program to find the factorial of a number provided by the user.
# change the value for a different result
num = 7
# To take input from the user
#num = int(input("Enter a number: "))
factorial = 1
# check if the number is negative, positive or zero
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
elif num == 0:
print("The factorial of 0 is 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("The factorial of",num,"is",factorial)
Line 17, change both '1' to 'i' line 17
Use a function:
def factorial(num):
factorial = 1
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
else:
for i in range(1, num + 1):
factorial *= i
print("The factorial of", num, "is", factorial)
With math.factorial it's easier:
def factorial(num):
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
else:
print("The factorial of", num, "is", math.factorial(num))
A function that annoys the user until he has entered an integer:
import math
def factorial():
max_value = 2_000
while True:
user_input = input("Factorial of: ")
try:
value = int(user_input)
except ValueError:
print("A valid integer is required")
continue
if value < 0:
print("Negative integers are not allowed")
continue
if value > max_value:
print(f"Integer is bigger than {max_value}")
continue
break
print(math.factorial(value))