2016-01-20 79 views
-1

简单的素数函数。当x < 2时,循环不运行。我不太明白为什么。有人可以解释吗?我明白我的起跑距离是2,但那只是i;为什么会影响x为什么这个范围循环的Python不工作?

谢谢。

def is_prime (x): 
    for i in range(2, x-1, 1): 
     if (x % i == 0): 
      return False 
    return True 

谢谢大家。天哪,我无法相信我是如何忽略最大范围呼叫的。

+2

注意:您不需要额外的参数'1';该步骤默认为该值。 – AMACB

+0

因为你的范围是2..x-1,所以当x <2时,你的范围是空的。 – AChampion

回答

1

range(lower_bound, upper_bound, step)产生一系列数字,从lower_bound开始并增加step,直到达到upper_bound。在你的情况下,当x = 1时,range(2,x-1,1)会产生一个空序列,因为你的下界大于你的上界,但是你的步骤是肯定的。换句话说,没有从2开始到0(x-1)结束但是增加1的序列。

你写了你的for循环,假定传递给它的数字是2或更大。当参数小于2时,您可能需要添加“基本情况”方案。

+0

'upper_bound'不包含在输出中。它是upper_bound-1。 – floydn

-1

迭代空序列不会导致迭代。

>>> range(2, 1, 1) 
[] 
0

这里是i是要遍历:

>>> x = 1 
>>> range(2, x-1, 1) 
[] 

这是一个阵!这里没有什么可做的。

1

你让i运行在整数范围2, 3, 4, ..., x-1。当x < 2时,范围为空,且循环从不输入(因此循环体将根本不会执行)。

实际上,对于它的价值,当x <= 3时,循环为空。这是因为Python的range(A, B)将是一个整数范围n,例如A <= n < B。请注意右侧严格的不平等。