Cathavenotail 发表于 2021-8-1 13:18:31

魔法方法代码求助

def delblank(x):
    result = []
    y = ''
    for each in x:
      if each != ' ':
            result.append(each)
      else:
            break
    for each in result:
      y += each
    return y

class Word(str):
    def __lt__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) < len(other):
            return True
      else:
            return False

    def __le__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) <= len(other):
            return True
      else:
            return False

    def __eq__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) == len(other):
            return True
      else:
            return False

    def __ne__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) != len(other):
            return True
      else:
            return False


    def __gt__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) > len(other):
            return True
      else:
            return False

    def __ge__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) >= len(other):
            return True
      else:
            return False

老版第43讲动动手第2题,这个代码去不了空格是怎么回事呀,求大神解答

不能懒 发表于 2021-8-1 13:49:08

报错什么内容吗?

Brick_Porter 发表于 2021-8-1 16:48:59

无法删除空格是因为delblank里面的第一个循环使用了break导致的    result = []
    y = ''
    for each in x:
      if each != ' ':
            result.append(each)
##      else:
##            break
    for each in result:
      y += each
    return y解决办法也很简单,把else还有break注释掉即可

Cathavenotail 发表于 2021-8-1 17:13:24

不能懒 发表于 2021-8-1 13:49
报错什么内容吗?

没有报错,奇奇怪怪的就运行起来了,最后输出的仍然是带空格的,比如输入hello world,本应该输出为hello,但最后输出的还是hello world{:10_269:}

Cathavenotail 发表于 2021-8-1 17:15:57

Brick_Porter 发表于 2021-8-1 16:48
无法删除空格是因为delblank里面的第一个循环使用了break导致的解决办法也很简单,把else还有break注释掉即 ...

我是想输出第一个空格出现前的字符,比如输入'hello world',想最后结果输出为'hello',结果一直不行,也不知道原因{:10_266:}

Brick_Porter 发表于 2021-8-1 17:22:42

Cathavenotail 发表于 2021-8-1 17:15
我是想输出第一个空格出现前的字符,比如输入'hello world',想最后结果输出为'hello',结果一直不行,也 ...

你的意思是把一个字符串按照空格分割,然后输出第一个子字符串对不对?

Cathavenotail 发表于 2021-8-1 17:27:51

Brick_Porter 发表于 2021-8-1 17:22
你的意思是把一个字符串按照空格分割,然后输出第一个子字符串对不对?

对对对{:10_257:}

Brick_Porter 发表于 2021-8-1 17:32:52

Cathavenotail 发表于 2021-8-1 17:27
对对对

要是这样就简单了,一行代码就搞定了def first_word(s):
    return s.split()

s = 'hello world'
print(first_word(s))
字符串有一个split功能,可以分割字符串,默认就是用空格作为分割条件的,它返回一个包含子字符串的列表,由于我们只需要第一个子字符串,所以使用获取第一个即可

Cathavenotail 发表于 2021-8-1 17:41:57

Brick_Porter 发表于 2021-8-1 17:32
要是这样就简单了,一行代码就搞定了字符串有一个split功能,可以分割字符串,默认就是用空格作为分割条 ...

换了这个代码后还是输出的hello worldC:\Users\wpz\Desktop\123.png
好像问题不是出在这个上面,应该是在这个魔法方法上class Word(str):
    def __lt__(self, other):
      self = delblank(self)
      other = delblank(other)
      if len(self) < len(other):
            return True
      else:
            return False
{:10_266:}

Cathavenotail 发表于 2021-8-1 17:44:16

Cathavenotail 发表于 2021-8-1 17:41
换了这个代码后还是输出的hello world
好像问题不是出在这个上面,应该是在这个魔法方法上class Word(st ...

C:\Users\wpz\Desktop\123.jpg

Cathavenotail 发表于 2021-8-1 17:50:03

Brick_Porter 发表于 2021-8-1 17:32
要是这样就简单了,一行代码就搞定了字符串有一个split功能,可以分割字符串,默认就是用空格作为分割条 ...

嗷嗷,又运行了一遍,这次对了,谢谢谢♪(・ω・)ノ
页: [1]
查看完整版本: 魔法方法代码求助