Welcome, guest | Sign In | My Account | Store | Cart
```#On the name of ALLAH
#Date : 13/01/09
#version :2.4

import random

class NegativeNumberError(ArithmeticError):
""" attempted imporper operation on negative number"""

pass

class ZeroNumberException(ArithmeticError):
""" attempted operation on zero with an agreed solution"""

pass

def errors(number):
""" Raises NegativeNumberError if number less than 0, and
raises ZeroNumberException if number is equal to 0."""

if number < 0:
raise NegativeNumberError,\
"\n<The number must be greater or equal to 0 \n"
elif number == 0:
raise ZeroNumberException,\
"\n<It is agreed per convention that 0!= 1 \n"
elif number >0:
pass

return number

while 1:
#get users answer to use Factorial program or exit the while loop
Answer = raw_input("\n<Would you like to use Factorial program, yes or no?:\t")

print '\n\t\t\t','','\5'*49
print '\t\t\t\t  Welcome to Factorial n! Program'
print '\t\t\t','','\5'*49,'\n'

try:
#get users entered numbers and compute factorial
userValue = float(raw_input('<Please enter a number :\t'))
errors(userValue)

Y=random.randrange(int(userValue)+1)

mult = lambda d:reduce(lambda x,y:x*y,range(1,int(Y)+1))

print '\n<A random list of factorial between 0 and %s will be displayed' % int(userValue)
print '\n\t\t',str(0)+'!=',int(1),'\n'
for Y in range(1,int(Y)+1):
print '\n\t\t',str(Y)+'!=',mult(int(Y)),'\n'

#Factorial raise ValueError if input is not numerical
except ValueError:
print "\n<The entered value is not a number"

#Factorial raises Negative number exception
except NegativeNumberError,exception:
print exception

#Factorial raises zero number exception
except ZeroNumberException,exception:
print exception

break

#############################################################################
#c:\hp\bin\Python>python "C:\Documents\Programs\classes\Factorial7
#
#<Would you like to use Factorial program, yes or no?:   yes
#
#                         ?????????????????????????????????????????????????
#                                  Welcome to Factorial n! Program
#                         ?????????????????????????????????????????????????
#
#<Please enter a number :        7
#
#<A random list of factorial between 0 and 7 will be displayed
#
#                0!= 1
#
#
#                1!= 1
#
#
#                2!= 2
#
#
#<Would you like to use Factorial program, yes or no?:   yes
#
#                         ?????????????????????????????????????????????????
#                                  Welcome to Factorial n! Program
#                         ?????????????????????????????????????????????????
#
#<Please enter a number :        -7
#
#"\n<The number must be greater or equal to 0 \n"
#
#
#<Would you like to use Factorial program, yes or no?:   yes
#
#                         ?????????????????????????????????????????????????
#                                  Welcome to Factorial n! Program
#                         ?????????????????????????????????????????????????
#
#<Please enter a number :        0
#
#<It is agreed per convention that 0!= 1
#
#
#<Would you like to use Factorial program, yes or no?:   yes
#
#                         ?????????????????????????????????????????????????
#                                  Welcome to Factorial n! Program
#                         ?????????????????????????????????????????????????
#
#<Please enter a number :        test
#
#<The entered value is not a number
#
#<Would you like to use Factorial program, yes or no?:   yes
#
#                         ?????????????????????????????????????????????????
#                                  Welcome to Factorial n! Program
#                         ?????????????????????????????????????????????????
#
#<Please enter a number :        7
#
#<A random list of factorial between 0 and 7 will be displayed
#
#                0!= 1
#
#
#                1!= 1
#
#
#                2!= 2
#
#
#                3!= 6
#
#
#               4!= 24
#
#
#                5!= 120
#
#
#<Would you like to use Factorial program, yes or no?:   no
#
#c:\hp\bin\Python>
########################### Factorial ref FT (2 D A Missr)
#
```