簡單的素數函數。當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