如何在Python中修复NameError :?

时间:2019-01-25 10:09:22

标签: python python-3.x

我正在构建代码以查找数字中最大的素数。我已经写了代码。请指出需要对代码进行的更改。感谢您的帮助!

我尝试删除类声明,仅声明代码中提到的两个函数,但是NameError: 'isPrime' used before declaration仍然存在。

class Soln(object):

    def isPrime(self,num):
        c=0
        if (num<2):
            return False
        else:
            for x in range(1,num):
                if (num%x == 0):
                    c+=1
                if (c>1):
                    return False
                else:
                    return True    

    def nLargest(self,n):
        for x in range(n,0,-1):
            if(isPrime(x)):
                print ("\nLargest Prime Factor is"+str(x))
                exit()

a=Soln()

a.nLargest(12)

输出应为3,但给出

  

NameError:声明之前使用了isPrime。

2 个答案:

答案 0 :(得分:2)

您没有定义“全局”方法isPrime。您可能要使用Soln类中的那个。为此,您可以编写:

self.isPrime(x)(从另一方法Soln调用时)

a.isPrime(x)(从该对象外部调用Soln对象a时)

或将方法设为静态并使用:

Soln.isPrime(x)

答案 1 :(得分:0)

使用rhis代码:

def nLargest(self,n):
    for x in range(n,0,-1):
        if(self.isPrime(x)):
            print ("\nLargest Prime Factor is"+str(x))
            exit()