此代码抛出NameError
def prime(x):
global status
for i in range(2, x):
if x % i == 0:
status = False
break
else:
status = True
return status
mylist = []
for j in range(50):
if prime(j):
mylist.append()
print(mylist)
答案 0 :(得分:5)
global
(您不需要不需要global
)prime
是prime(0)
,因此for i in range(2, 0)
永远不会运行,这意味着status
尚未定义-因此您的错误mylist
后面加上任何内容def prime(x):
if x < 2:
return False # 0, 1 are not prime
for i in range(2, x):
if x % i == 0:
return False
return True
mylist = []
for j in range(50):
if prime(j):
mylist.append(j)
print(mylist)
答案 1 :(得分:1)
问题是status
不能保证具有值。如果您通过x=0
,则循环不会运行,然后您return status
。它的价值是什么?例如,如果您将循环更改为range(2, 10)
,则它运行良好(在您的情况下这没有意义,只是试图显示问题)。
但是,由于您只是将返回的值append
列表中,所以请不要使用全局值。只需返回值即可。