-2
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

Error: NameError: name 'check' is not defined s = check(num,"")

It says 'check' function is not defined. Please tell me how to correct it.

Link of question-> https://leetcode.com/problems/integer-to-roman/

1 Answers1

1

You need to use self to call class methods, also your method check didn't have a self attribute.

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
Sahil
  • 1,387
  • 14
  • 41