UnboundLocalError:在赋值之前引用了局部变量'prime'

2024-04-26 05:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到这个错误

UnboundLocalError : local variable 'prime' referenced before assignment

使用此代码查看数字是否为素数时。我该怎么修?你知道吗

import math 

def is_prime(n):
    if n == 2:
        prime = 1
    if n % 2 == 0 or n <= 1:
        prime = 0

    sqr = int(math.sqrt(n)) + 1

    for divisor in range(3, sqr, 2):
        if n % divisor == 0:
            prime = 0

    if prime != 0:
        print("Prime")
    if prime == 0:
        print("Not prime")


is_prime(int(input("Number? ")))

Tags: ifislocal错误mathvariableprimedivisor
1条回答
网友
1楼 · 发布于 2024-04-26 05:30:12

如果没有一个条件成功,那么就永远不会设置prime。当你找到一个除数时,你可以跳出for循环,如果没有发生,你可以使用else:来设置prime。你知道吗

而且,您将为2给出错误的答案。首先设置prime = 1,然后n % 2 == 0将成功,因此将其设置为0。对第二个测试使用elif,因此在这种情况下跳过它。其余部分可以使用else:,这样就不会浪费时间在较小的数字的循环上。你知道吗

def is_prime(n):
    if n == 2:
        prime = True
    elif n % 2 == 0 or n <= 1:
        prime = False
    else:
        sqr = int(math.sqrt(n)) + 1

        for divisor in range(3, sqr, 2):
            if n % divisor == 0:
                prime = False
                break
        else: 
            prime = True

    if prime:
        print("Prime")
    else:
        print("Not prime")

相关问题 更多 >