我收到此错误
UnboundLocalError:赋值之前引用了本地变量'prime'
使用此代码查看数字是否为质数时。我该如何解决?
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? ")))
答案 0 :(得分:0)
如果所有条件均不成功,则永远不要设置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")