擅长:python、mysql、java
<p>因为之后</p>
<pre><code>if all(num%g!=0 for g in range(2,int(math.sqrt(num))+1)):
</code></pre>
<p>执行时,g已从本地框架。它未定义为局部变量。您可以将上述代码重写为for循环并在其中打印g,应该清楚为什么不能调用print(g):</p>
<pre><code>indicator = True;
for g in range(2,int(math.sqrt(num))+1):
if num%g == 0:
indicator = False
#u can print g here
#outside of for loop, g is no longer in the local frame, it is now undefined
if indicator:
b.append(num)
</code></pre>