鱼C论坛

 找回密码
 立即注册
查看: 1078|回复: 10

[已解决]魔法方法代码求助

[复制链接]
发表于 2021-8-1 13:18:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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 17:32:52

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

s = 'hello world'
print(first_word(s))
字符串有一个split功能,可以分割字符串,默认就是用空格作为分割条件的,它返回一个包含子字符串的列表,由于我们只需要第一个子字符串,所以使用[0]获取第一个即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-1 13:49:08 | 显示全部楼层
报错什么内容吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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注释掉即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-1 17:13:24 | 显示全部楼层
不能懒 发表于 2021-8-1 13:49
报错什么内容吗?

没有报错,奇奇怪怪的就运行起来了,最后输出的仍然是带空格的,比如输入hello world,本应该输出为hello,但最后输出的还是hello world
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我是想输出第一个空格出现前的字符,比如输入'hello world',想最后结果输出为'hello',结果一直不行,也不知道原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你的意思是把一个字符串按照空格分割,然后输出第一个子字符串对不对?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-1 17:27:51 | 显示全部楼层
Brick_Porter 发表于 2021-8-1 17:22
你的意思是把一个字符串按照空格分割,然后输出第一个子字符串对不对?

对对对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-1 17:32:52 | 显示全部楼层    本楼为最佳答案   

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

s = 'hello world'
print(first_word(s))
字符串有一个split功能,可以分割字符串,默认就是用空格作为分割条件的,它返回一个包含子字符串的列表,由于我们只需要第一个子字符串,所以使用[0]获取第一个即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

C:\Users\wpz\Desktop\123.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗷嗷,又运行了一遍,这次对了,谢谢谢&#9834;(&#65381;ω&#65381;)&#65417;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 22:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表