Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop_python_Python_Loops - Fatal编程技术网

For loop_python

For loop_python,python,loops,Python,Loops,我不知道为什么这么简单的语法会导致错误。有人能帮我看看我是否漏掉了什么吗 本部分仅尝试检查特定(num)是否为素数。 不确定为什么我的检查(10)结果为“素数”。因为我从3,4,5,6,…,9>循环y,然后10%5==0,我想它返回true,结果是“非素数” 我在循环中有没有做错什么 def check_primes(num): for y in range(3,num): if num%y==0: return 'Non PRIME'

我不知道为什么这么简单的语法会导致错误。有人能帮我看看我是否漏掉了什么吗

本部分仅尝试检查特定(num)是否为素数。 不确定为什么我的检查(10)结果为“素数”。因为我从3,4,5,6,…,9>循环y,然后10%5==0,我想它返回true,结果是“非素数”

我在循环中有没有做错什么

def check_primes(num):

for y in range(3,num):
        if num%y==0:
            return 'Non PRIME'
        else:
            return 'PRIME'

“素数”的定义说明一个数是素数当且仅当它只能被1和它本身整除。这意味着,如果您从
2
n-1
找到一个数字,则该数字是素数,该数字除以
n
。要检查数字是否为素数,必须检查
2
n-1
的每个数字。在这两种情况下,测试3的可除性后,代码立即停止。

返回“素数”或“非素数”的方法,如示例所示:

def check_primes(num):
    is_prime = True
    for y in range(3,num):
        if num % y==0:
            return 'Non PRIME'
        else:
            continue
    return 'PRIME'
在验证数字是否为非素数时,您将返回“Non PRIME”。或者,如果您的所有检查都成功,您将根据需要返回“PRIME”

(请注意,这不是获取素数的非常有效的方法)


(请注意,下面的注释是正确的,此方法的工作方式与使用或不使用else子句的工作方式完全相同)

您应该使用
print
而不是return。返回循环时正在中断循环。

欢迎使用堆栈溢出。请仔细检查您的代码是否与正在运行的代码缩进相同。您的循环只执行一次;它总是仅根据数字是否可被3整除而返回,不可能进行进一步检查。@jasonharper,我应该在中断时添加吗?不要返回,
print
!这样,您的循环就不会中断阅读有关如何调试代码的提示。只需检查从2到楼层(sqrt(n))。@jarmod这是一个非常好的优化。我认为对于学习编码的人来说,直接从“素数”的定义实现一个简单的算法是一个很好的学习体验,可以帮助他们理解这样的优化的好处。仅仅用
print
替换
return
并不能解决问题。函数需要
返回
某些内容才能正确。不需要
else
子句。我留下了
else
子句,以便更直接地演示如何使他的示例工作。也许这会让答案变得不那么清晰,但我认为对于一个对这类事情比较新的人来说,它也可以很容易地走另一条路。