关于 "xrange "函数 - (Python3中的 "range"),当我在一个循环中进行负数检查时会发生什么?在这种情况下,负数可以被视为边缘情况,但总是返回None。有什么见解吗?
问题是你在 for 循环中检查数字是否为负数。例如,如果x=-3,那么你试图在range(2,-1)中运行for循环,而这个循环是None。所以for循环永远不会运行,因此返回True。
def isprime(x):
if x<=0:
return(False)
for a in range(2,(x//2)+1):
if(x%a==0):
return(False)
return(True)
按照它的小学定义。首要的 数字只定义为正数,因此你的函数应该返回 False
例如,每一个负数都是这样。
def isprime(x):
if x <= 0:
return False
for a in range(2, (x//2)+1):
if x % a == 0:
return False
return True
这就是说,我们可以把这个定义扩大(就像在数学的某些领域所做的那样),把负数也包括在内(更多的讨论请见 此处 和 此处). 在这种情况下,对于每一个负数 -n, -n 是素数,如果 n 是质数。因此你的代码可以是这样的
def isprime(x):
if x <= 0: # or use any |abs| method you'd like, like numpy's
x = -x
for a in range(2, (x//2)+1):
if x % a == 0:
return False
return True