2016-03-03 82 views
1

我開始通過Codecademy學習Python,並對一個需要我編寫程序來確定數字是否爲素數的練習進行思考。通過列表循環和循環遍歷對象之間的區別?

當我的原始代碼不起作用時,我做了一些研究並找到可行的代碼。我查看了他們兩個,看起來他們之間沒有任何區別,除了事實上,當工作代碼使用while循環循環遍歷對象時,我用循環來循環列表,所以我想知道如果確實如此(如果是這樣,它會產生什麼差別),或者如果我的代碼有邏輯錯誤。

對不起,文本塊,下面我將同時提供我的代碼(沒有工作)和答案代碼(沒有工作)

我的代碼在這裏:

def primer(x): 
     if x < 2: 
      return False 

     elif x > 2: 
      for n in range(2, x): 
       if x % n == 0: 
        return False 
       else: 
        return True 
     else: 
      return True 

和代碼在這裏工作:

def is_prime(x): 
     if x < 2: 
      return False 

     elif x > 2: 
      n = 2 
      while n < x: 
       if x % n == 0: 
        return False 
       n += 1 
      else: 
       return True 
     else: 
      return True 

謝謝你甚至花時間閱讀此,並有美好的一天。

+0

顯示每個代碼塊的結果 –

+0

對不起,這裏很新。我的問題得到了回答,但從現在開始我會記住這一點。 –

回答

2

如果在嘗試所有可能的除數之前發現該數字不可分,那麼您立即返回True。刪除else塊:

def primer(x): 
    if x < 2: 
     return False 

    else: 
     for n in range(2, x): 
      if x % n == 0: 
       return False 
      # else: 
      #  return True 
     return True 
+0

啊哈,的確,這工作,看起來像我犯了一個相當愚蠢的錯誤。謝謝。 –