我有两个相同的函数,这两个函数可以找到直到给定数字的所有质数
def count_primes2(num):
primes = [2,3,]
x = 5
if num < 2:
return 0
while x <= num:
for y in primes: # use the primes list!
if x%y == 0:
x += 2
break
else:
primes.append(x)
x += 2
print(primes)
return len(primes)
def count_primes3(num):
primes = [2]
x = 3
if num < 2 :
return 0
while x <= num:
for y in range(3,x,2):
if x%y == 0:
x += 2
break
else:
primes.append(y)
x += 2
print(primes) count_primes2工作得很好,给了我一个输出,而count_primes3给了我一个UnboundLocalError at primes.append(y)
如果我注释掉这一步,函数就会完成。谁能告诉我为什么会发生这种情况?
发布于 2018-08-25 04:46:15
您正在尝试附加y,而不是像在count_primes2中那样附加x。
def count_primes3(num):
primes = [2]
x = 3
if num < 2 :
return 0
while x <= num:
for y in range(3,x,2):
if x%y == 0:
x += 2
break
else:
primes.append(x) ### This shouldn't be a y
x += 2
print(primes) https://stackoverflow.com/questions/52011360
复制相似问题