#coding=utf-8
while True:
num = int(input("請輸入要階乘的正整數數字,按負數退出:"))
jiec=1
if num==0:
print("0的階乘是1")
elif num==1:
print("1的階乘是1")
elif num>0:
for i in range(1,num+1):
jiec=jiec*i
print("%d的階乘是%d"%(i,jiec))
elif num<0:
print("負數沒有階乘")
break
else:
print("請輸入正確數字")
#利用reduce函數寫
#**********方法一************
def sum(x,y):
return x*y
m=input("請輸入一個數字:")
print reduce(sum,(range(1,m)))
#*********方法二**************
from functools import reduce
m=input("請輸入需要階乘的數字:")
sum=reduce(lambda x,y:x*y,range(1,m))
print(sum)