2014-09-20 349 views
-1

我試圖打印階乘的一個數字,我想知道這是怎麼回事錯了,當我在做什麼,而不是Python和階乘

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 

回答

2

Becasue 0次任意數爲零。數字0和num-1之間

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

range(num)回報列表:

>>> 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

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

這樣:

fact *= j 
j += 1 

在第一步乘以0

而:

fact *= j+1 

開始使用J + 1

0

你可以使用Python例如階乘函數: -

進口數學

math.factorial(數量)#這將返回一個數字

的階乘