NameError:未定义名称“状态”

时间:2018-08-30 10:22:27

标签: python python-3.6

此代码抛出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)

2 个答案:

答案 0 :(得分:5)

  • 您不需要global(您不需要不需要global
  • 您第一次运行primeprime(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列表中,所以请不要使用全局值。只需返回值即可。