简单的素数函数。当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
谢谢大家。天哪,我无法相信我是如何忽略最大范围呼叫的。
简单的素数函数。当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
谢谢大家。天哪,我无法相信我是如何忽略最大范围呼叫的。
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时,您可能需要添加“基本情况”方案。
'upper_bound'不包含在输出中。它是upper_bound-1。 – floydn
迭代空序列不会导致迭代。
>>> range(2, 1, 1)
[]
这里是i
是要遍历:
>>> x = 1
>>> range(2, x-1, 1)
[]
这是一个空阵!这里没有什么可做的。
你让i
运行在整数范围2, 3, 4, ..., x-1
。当x < 2
时,范围为空,且循环从不输入(因此循环体将根本不会执行)。
实际上,对于它的价值,当x <= 3
时,循环为空。这是因为Python的range(A, B)
将是一个整数范围n
,例如A <= n < B
。请注意右侧严格的不平等。
注意:您不需要额外的参数'1';该步骤默认为该值。 – AMACB
因为你的范围是2..x-1,所以当x <2时,你的范围是空的。 – AChampion