-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfactorial.py
67 lines (60 loc) · 1.67 KB
/
factorial.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/home/taoyan/anaconda3/bin/python3
# -*- coding: UTF-8 -*-
# filename:factorial.py
# author by:taoyan
#用户输入数字
factorial=1
while True:
try:
num=int(input("请输入一个数字: "))
except ValueError:
print("您的输入有误,请重新输入!")
continue
if num<0:
print("抱歉,负数没有阶乘!")
elif num==0:
print("0的阶乘是1")
break
else:
for i in range(1,num+1):
factorial=factorial*i
print("%d的阶乘为%d" %(num,factorial))
break
'''
第二种方法是:利用模块functools中的reduce函数
from functools import reduce
while True:
try:
n=int(input("请输入一个整数:"))
except ValueError:
print("您的输入有误,请重新输入")
continue
if n<0:
print("抱歉,您输入的是负数,没有阶乘,请重新输入!")
elif n==0:
print("{0}的阶乘为1".format(n))
break
else:
sum=reduce(lambda x,y:x*y, range(1,n+1))
print("%d的阶乘为%d" %(n,sum))
break
'''
'''
第三种方法是利用模块math中的阶乘函数factorial
from math import factorial
while True:
try:
n=int(input("请输入一个整数:"))
except ValueError:
print("您的输入有误,请重新输入")
continue
if n<0:
print("抱歉,您输入的是负数,没有阶乘,请重新输入!")
elif n==0:
print("{0}的阶乘为1".format(n))
break
else:
sum=factorial(n)
print("%d的阶乘为%d" %(n,sum))
break
'''