当为具有多个方法的类执行输入时,Leetcode编译器是如何工作的?

2024-04-19 10:58:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个关于Leetcode compilerexecuting classes and methods时如何工作的问题

因此,我要回答以下问题:https://leetcode.com/contest/weekly-contest-248/problems/count-good-numbers/(但这个问题并不重要)

我在下面有一些代码,在class Solution()中有两个方法primeNumber(self, n)countGoodNumbers(self,n)

现在,对于input n=1,编译器是否执行这两个方法(并在我返回第一个方法的值后退出),或者它是如何工作的?因为当我在Pycharm IDE中编程时,通常在最后我会手动执行我想要的方法,例如我会执行x = Solution然后print(x.countGoodNumbers(100)

或者,如果我定义这样的方法:primeNumber(self, n)countGoodNumbers(self,f),这样编译器就知道调用第一个函数,因为input is "n",那么我的理解正确吗

class Solution:
    primes = []
    def primeNumber(self,n):
        numbers = set(range(n, 1, -1))
        self.primes = []
        while numbers:
            p = numbers.pop()
            self.primes.append(p)
            numbers.difference_update(set(range(p * 2, n + 1, p)))
        return self.primes
    
    def countGoodNumbers(self,n: int):
        counter = 0
        for i in range(int("9" * n) + 1):
            tracker = False
            i = str(i)
    
            while len(i) < n:
                i = "0" + i
            # checking odd and even digits
            for j in range(int("9" * n) + 1):
                if j == 0 or j % 2 == 0:
                    if int(i) % 2 == 0:
                        tracker = True
                    else:
                        tracker = False
                        break
                else:
                    if int(i) in self.primes:
                        tracker = True
                    else:
                        tracker = False
                        break
    
            if tracker == True:
                counter += 1
            else:
                pass
        
        return counter