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