Python和阶乘

时间:2014-09-20 06:47:17

标签: python python-2.7 factorial

我试图打印一个数字的阶乘,我想知道当我做某事而不是

时出了什么问题

fact *= j+1

当我试用注释部分时,我总是得到0作为输出。究竟是什么原因,它们是不是意味着同样的事情?或者我在语法上出错了吗?

test = int(raw_input())
while test:
    test = test-1
    num = int(raw_input())
    fact = 1
    for j in range(num):       
        fact *= j+1             # fact *= j 
                                # j += 1
    print fact

3 个答案:

答案 0 :(得分:2)

Becasue 0次任意数字为零。

>>> 0 * 1
0
>>> 0 * 1 * 2 * 3
0

range(num)返回0到num-1之间的数字列表:

>>> range(5)
[0, 1, 2, 3, 4]

如果要排除0,则需要使用range(1, n)

>>> range(1, 5)
[1, 2, 3, 4]

BTW,在标准库中,有math.factorial

>>> import math
>>> math.factorial(4)
24

答案 1 :(得分:1)

range(num)返回[0, 1, ... , num-1]

这样:

fact *= j
j += 1

第一步乘以0

,同时:

fact *= j+1

以j + 1

开头

答案 2 :(得分:0)

你可以使用python的阶乘函数,例如: -

导入数学

math.factorial(number)#this将返回数字的阶乘