2016-03-03 48 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

啊哈,的确,这工作,看起来像我犯了一个相当愚蠢的错误。谢谢。 –