Python 如何使work成为for语句中的函数?

Python 如何使work成为for语句中的函数?,python,python-3.x,Python,Python 3.x,我对这个练习有问题。他们首先让我写一个代码来检测一个数字是否是素数。这在下面的代码中运行得非常好: def primo(n): resultado = False div = 2 while div**2 <= n: if n == 1: resultado = False div+=1 if n%div == 0: resultado = False return resultado

我对这个练习有问题。他们首先让我写一个代码来检测一个数字是否是素数。这在下面的代码中运行得非常好:

def primo(n):
  resultado = False
  div = 2
  while div**2 <= n:

    if n == 1:
        resultado = False
        div+=1
    if n%div == 0:
      resultado = False   
      return resultado
      div**2 > n
    else:
      resultado = True

    div+=1

  return(resultado)

什么也没发生,为什么会这样?

primo返回一个布尔值,指示数字是否为素数,但您不使用该值执行任何操作,因此永远看不到结果。您可能需要以下内容:

for n in range(1, 21):
    is_prime = primo(n)
    print('{} is prime? {}'.format(n, is_prime))
函数
primo()
返回的布尔值为True或False。您没有使用该返回值执行任何操作。你可以这样做

for n in range(1,21):
    out=primo(n)
    print(out) #or whatever you want
primo函数中也存在一个问题。对于
n=2&n=3
它将不会进入循环,3将显示为非素数。我对它做了一点修改

def primo(n):
  resultado = False
  div = 2
  if n == 1:
    resultado = False
    return(resultado)

  while div**2 <= n:
    if n%div == 0:
      resultado = False
      return resultado
    div+=1
def primo(n):
resultado=False
div=2
如果n==1:
resultado=False
返回(resultado)

虽然div**2工作得很好,但现在我有另一个问题,我以前的代码(函数)没有将2和3显示为素数。我如何解决这些问题?感谢您的帮助。只有当div**2>=4时,才会执行while中的代码。因为div默认设置为2,所以22=4(是幂函数)。由于2和3小于4,while循环不会执行,结果变量保持“False”。它工作得很好,但现在我有另一个问题,我以前的代码(函数)没有将2和3显示为素数。我如何解决这些问题?谢谢你的帮助你试过我上面写的primo函数了吗?
def primo(n):
  resultado = False
  div = 2
  if n == 1:
    resultado = False
    return(resultado)

  while div**2 <= n:
    if n%div == 0:
      resultado = False
      return resultado
    div+=1