在下面的代码中,我尝试查找素数。我的问题是,我不知道如何在函数中使用print。
这是对的吗?我得到了答案,但它都说6不是素数,它也给出“无”。我怎么能摆脱这个“无”?另外,可以像这样使用return
吗?
#Prime number
def prime(num):
for i in range (2,num):
if num%i == 0:
print num, "is not a prime number."
return
else:
print num, "is a prime number."
return
print prime(6)
答案 0 :(得分:0)
首先,您的代码中已经有了打印语句,因此只需调用prime
就会将内容打印到屏幕上。如果您只有return
,则您的函数将返回None
。这意味着当你这样做时:
print prime(6)
prime(6)
将返回None
,这相当于:
print None
然后你的代码中出现了一个主要的逻辑错误,因为你没有因return
过早检查每一个可能的除数。例如,如果您的数字为9,则这不是素数。但是你的函数会打印它是一个素数,因为在第一次运行for循环i
将是2,这意味着9%2
是假的,所以else分支被采取并打印出该数字是主要。然后该函数在该点返回,而不检查其余的数字。如果您运行此代码,您将看到会发生什么:http://ideone.com/zxdez2
这里的设计问题是你真的应该将IO与其他功能分开。假设您希望稍后在其他地方重用prime
,如果没有将该代码打印到屏幕上,则无法执行此操作。这可能不是你想要的日期,但很难做到这一点。相反,返回一个表示数字是否为素数的布尔值更清晰然后根据返回的值打印出来:
def prime(num):
for i in range (2,num):
if num%i == 0:
return False
return True
x = 6
if prime(x):
print x, "is not a prime number."
else:
print x, "is a prime number."