我得到这个错误
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? ")))
如果没有一个条件成功,那么就永远不会设置
prime
。当你找到一个除数时,你可以跳出for
循环,如果没有发生,你可以使用else:
来设置prime
。你知道吗而且,您将为
2
给出错误的答案。首先设置prime = 1
,然后n % 2 == 0
将成功,因此将其设置为0
。对第二个测试使用elif
,因此在这种情况下跳过它。其余部分可以使用else:
,这样就不会浪费时间在较小的数字的循环上。你知道吗相关问题 更多 >
编程相关推荐