简单的素数函数。 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
谢谢大家。天哪,我无法相信我如何忽视了最大范围的召唤。
答案 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']