为什么这个范围循环的python不起作用?

时间:2016-01-20 02:09:37

标签: python for-loop range

简单的素数函数。 x < 2时循环不运行。我不太明白为什么。谁能解释一下?我知道我的起始范围是2,但这仅适用于i;为什么这会影响x

谢谢。

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

谢谢大家。天哪,我无法相信我如何忽视了最大范围的召唤。

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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时,您可能需要添加“基本案例”场景。

答案 2 :(得分:0)

以下是>>> range(2, 1, 1) [] 要循环的内容:

i

这是一个数组!这里没什么可做的。

答案 3 :(得分:-1)

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

possible_episode_ids = []
for item in t['formats']:
    for i in item['offers']:
        possible_episode_ids.append(i['asin']) 

>>> possible_episode_ids
[u'B0043YVHMY', u'B00ILZOQWE', u'B00QVECS4U', u'B0043YVHMY', u'B00ILZOR9Q', u'B00QVFSN0W']