我试图打印一个数字的阶乘,我想知道当我做某事而不是
时出了什么问题 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
答案 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将返回数字的阶乘