【发布时间】:2026-01-18 17:55:02
【问题描述】:
我是一名业余程序员,想在学习代码的同时寻求建议。在这里我遇到了一些问题。
我发现,当我删除注释“#X=3”并将其从下面变成代码时,代码就可以工作了。如果没有 X=3,代码会导致 UnboundLocalError。
在线浏览,它与全局和局部变量有关,但我看不出它是如何相关的。什么时候必须在 while 循环之前表示 X?为什么“for y in primes”不需要预先定义“y”?
代码的主要目的:计算素数的数量到 (num)
def count_primes2(num):
primes = [2]
#x = 3
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)
【问题讨论】:
-
由于您在while循环条件中使用
x,是的,它必须在之前定义。 -
for y in primes本身定义了y;for循环是一种赋值语句。 -
@SuperStew,所以在 while X 循环之前处理 X 是一种常见的做法?我可以简单确认一下 var 必须在每个 while 循环之前表示吗?
-
@chepner,我明白了。再次感谢
标签: python global-variables local-variables