xrange python 的奇怪行为

问题描述 投票:0回答:2

关于“xrange”函数 - (Python3 中的“range”)当我在循环内进行否定检查时会发生什么?在这种情况下,负数可以被视为边缘情况,但始终返回 None。有什么见解吗?

python-3.x if-statement primes
2个回答
0
投票

问题是您正在检查 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)

-1
投票

根据小学的定义,prime数字仅定义为正数,因此您的函数应该为每个负数返回

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

话虽如此,可以扩展定义(如数学某些领域中所做的那样),以包含负数(进一步讨论请参阅herehere)。在这种情况下,对于每个负数 -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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.