基本Python:函数给我一个全局名称错误

时间:2015-08-21 23:17:04

标签: python

我正在编写一个函数来确定给定的数字是否“丑陋”。如果唯一的主要因素是2,3和5(它可能少于全部3但没有其他因素),这很难看。

我收到错误,说:“第22行:NameError:全局名称'getPrimeFactors'未定义”。

我做错了什么?

import math

class Solution(object):
    def isPrime(self, num):
        for i in range(2, math.floor(math.sqrt(num))):
            if num % i == 0:
                return false
        return true

    def getPrimeFactors(self, num):
        primeFactors = []
        for i in range(2, math.floor(math.sqrt(num))):
            if isPrime(i) and num % i == 0:
                primeFactors.append(i)
        return primeFactors

    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        primeFactors = getPrimeFactors(num)
        for factor in primeFactors:
            if factor != 2 and factor != 3 and factor != 5:
                return false
        return true

谢谢!

1 个答案:

答案 0 :(得分:2)

getPrimeFactors用作self.getPrimeFactors(num),因为它已被定义为班级Solution内的方法:

primeFactors = self.getPrimeFactors(num)

isPrime

相同
if self.isPrime(i) and num % i == 0:

其他问题:

  • range参数应为int而不是float,因此请使用int代替math.floor

    range(2, int(math.sqrt(num)))
    
  • 在python中使用True而不是true

    return True