力扣第九题:9.回文数的扩展学习记录(切片,方法调用,for循环)

今天写了力扣的第九题,看到了大佬用切片的形式一行解决了问题;于是学到了切片的新方法

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if str(x) == str(x)[::-1]:
            return True
        else:
            return False

P.S.:return是我自己加的,为了更明显让我自己看得懂

第一回:方法调用失败

我放python里存着是为了我自己以后能直接回忆,不过我至少要能在本地直接运行它,所以肯定需要调用,但这个时候出现了一个问题

我是这样调用的

a = Solution.isPalindrome(121)

问了GPT,它说因为需要先创建类的实例,然后才可以调用方法。

后来我稍微理解了一下:

有一个猫猫训练营(Solution),它可以实现训练猫猫学习技能的功能,比如奇怪的猫叫(isPalindrome),猫叫有各种形式(x)比如你好喵(121)、拜拜喵(686)、不理解喵(234)

训练营里有许多猫,比如煎饼(j)、豆浆(d)、卤蛋(l),它们都学习了奇怪的猫叫的技能,只需要输入的参数是回文数就能正确喵叫,比如你好喵(121)、拜拜喵(686),否则就会不理解喵(234)

j = Solution()
d = Solution()
l = Solution()

a1 = j.isPalindrome(121)
a2 = d.isPalindrome(686)
a3 = l.isPalindrome(234)

这个时候,你捧着一只猫,叫包子(b),看见猫猫训练营的几个猫猫都会猫叫,发现它们输入的参数是回文数就可以直接猫叫,于是你学着他们调用,直接对包子说:“包子(b)!来句猫猫训练营(Solution)的猫叫(isPalindrome)你好喵(121)”,但此时你的猫猫并不理解,失败了;为什么?因为它还不是猫猫训练营(Solution)中的一员;这个时候你意识到了,于是将你的猫猫登记了,成为了其中的一员b = Solution(),并且正确调用了,得到了一只会奇怪猫叫的包子(odd_baozi)

b = Solution()

odd_baozi = b.isPalindrome(121)

虽然你不知道发生了什么,不过至少包子它会猫叫了,但你总感觉这不是你的包子,你总感觉是包子的复制体,但它们又一模一样,只不过是一只奇怪的包子,会不会有飞翔的包子?或者是遁地的包子..?

**其中GPT也提供了静态方法@staticmethod,这样就不需要创建实例,不过我还没用过,没有理解,但这里做一个记录,至少让我知道还有个东西没学。。

第二回:一次判断多个值

然后我思考如何实现一次输入多个值,然后输出多个结果?

于是我想到通过列表,然后通过for循环来实现

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if str(x) == str(x)[::-1]:
            return True
        else:
            return False

a = Solution()
a1 = a.isPalindrome(121)
print(a1)

numbers = [121,412,5,65434456,1234321,621,4142]
for i in numbers:
    result = a.isPalindrome(i)
    print(result)

后来我意识到,我是不是可以把这个for循环弄成一个方法,然后直接调用方法不就行了吗,这样子列表我还能自己输入呢,于是

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if str(x) == str(x)[::-1]:
            return True
        else:
            return False

    def check_alot_numbers(self, numbers)
        self.numbers = numbers
        for i in numbers:
            result = a.isPalindrome(i)
            print(result)
        
a = Solution()
a1 = a.isPalindrome(121)
print(a1)

list_number = [121,412,5,65434456,1234321,621,4142]
a2 = a.check_alot_numbers(list_number)

*注意:这里result = a.isPalindrome(i)有问题,应该是result = self.isPalindrome(i),我当时是直接复制上去的所以没有注意,但因为我创建了个a的实例而且没有其他的方法互相调用所以没有发现问题;

并且我的def check_alot_numbers(self, numbers)漏了一个引号(:)

第三回:打印模块

后来我发现如果调用isPalindrome总是要自己写print很麻烦,我希望和check_alot_numbers可以自动打印,可这样子我突然又想到我可以直接写一个方法专门用来打印,然后isPalindrome与check_alot_numbers直接调用这个方法就可以自己打印了

*这里本来想着用slice()切片来判断条件来着,后来发现直接判断对错就行了

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if str(x) == str(x)[::-1]:
            return True
        else:
            return False

    def check_alot_numbers(self, numbers):
        for i in numbers:
            result = self.isPalindrome(i)
            self.print_numbers(i,result)

    def print_numbers(self, x, result):
        if result:
            print(f'{x}是回文数')
        else:
            print(f'{x}不是回文数')

a = Solution()
a1 = a.isPalindrome(121)
print(a1)

list_number = [121,412,5,65434456,1234321,621,4142]
a2 = a.check_alot_numbers(list_number)
D:\Python\python.exe D:\pycharm\pythonProject\草稿\力扣题\9回文数.py 
True
121是回文数
412不是回文数
5是回文数
65434456不是回文数
1234321是回文数
621不是回文数
4142不是回文数

进程已结束,退出代码0

通过result我发现不同的方法的参数能相互调用

其实就只实现了check_alot_numbers的打印,我的想法是调用isPalindrome方法也能打印的,但是不要动这个方法的代码。好像GPT说通过装饰器可以实现,然后我没看懂,就没弄了。。

总结

学到了切片,方法调用,for循环;静态方法和装饰器还没学,功能也没实现,GG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值