【问题标题】:python: function not defined [duplicate]python:未定义函数[重复]
【发布时间】:2021-07-20 13:09:03
【问题描述】:
class Solution:
    a={1:'I',2:'II',3:'III',4:'IV',5:'V',6:'VI',7:'VII',8:'VIII',9:'IX'}
    
    def check(num,s):
        if num<=0:
            return s
        elif num<10:
            return check(0,s+a[num])
        elif num>=10 and num<50:
            if num<=30:
                return check(num%10,s+('X'*(num//10)))
            else:
                return check(num%10,s+'XL')
        elif num>=50 and num<100:
            if num<=80:
                return check(num%10,s+('L'+'X'*(num//10)))
            else:
                return check(num%10,s+'XC')  
        elif num>=100 and num<500:
            if num<=300:
                return check(num%100,s+('C'*(num//100)))
            else:
                return check(num%100,s+'CD')      
        elif num>=500 and num<1000:
            if num<=800:
                return check(num%100,s+('D'+'C'*(num//100)))
            else:
                return check(num%100,s+'CM')  
        else:
            return check(num%1000,s+'M'*(num//1000))
        
    def intToRoman(self, num: int) -> str:
        s = check(num,"")
        return s

错误:NameError:未定义名称“检查” s = check(num,"")

它说'检查'功能没有定义。请告诉我如何纠正它。

问题链接-> https://leetcode.com/problems/integer-to-roman/

【问题讨论】:

  • check() 在类中使用 self.check()
  • 您的代码在一个类中,但写得像独立函数。我建议你丢掉这门课。
  • 我也试过了,但这也给了我错误
  • s = self.check(num,"")
  • TypeError: check() 接受 2 个位置参数,但给出了 3 个 s = self.check(num,"") intToRoman (Solution.py) 中的第 33 行 ret = Solution().intToRoman(param_1 ) _driver (Solution.py) 中的第 53 行 _driver() (Solution.py) 中的第 64 行

标签: python python-3.x


【解决方案1】:

您需要使用self 来调用类方法,而且您的方法check 没有self 属性。

class Solution(object):
    a={1:'I',2:'II',3:'III',4:'IV',5:'V',6:'VI',7:'VII',8:'VIII',9:'IX'}
    
    def check(self, num,s):
        if num<=0:
            return s
        elif num<10:
            return find(0,s+a[num])
        elif num>=10 and num<50:
            if num<=30:
                return find(num%10,s+('X'*(num//10)))
            else:
                return find(num%10,s+'XL')
        elif num>=50 and num<100:
            if num<=80:
                return find(num%10,s+('L'+'X'*(num//10)))
            else:
                return find(num%10,s+'XC')  
        elif num>=100 and num<500:
            if num<=300:
                return find(num%100,s+('C'*(num//100)))
            else:
                return find(num%100,s+'CD')      
        elif num>=500 and num<1000:
            if num<=800:
                return find(num%100,s+('D'+'C'*(num//100)))
            else:
                return find(num%100,s+'CM')  
        else:
            return find(num%1000,s+'M'*(num//1000))
        
    def intToRoman(self, num: int) -> str:
        s = self.check(num,"")
        return s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 2019-01-16
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2016-04-06
    相关资源
    最近更新 更多