鱼C论坛

 找回密码
 立即注册
查看: 2335|回复: 9

[已解决]麻烦看看为啥我的这个会没变化

[复制链接]
发表于 2020-2-12 15:29:00 | 显示全部楼层 |阅读模式

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

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

x
我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常。因此,现在我们要求定义一个 Nstr 类,支持字符串的相减操作:A – B,从 A 中去除所有 B 的子字符串。
  1. class Nstr(str):
  2.     def __sub__(self,other):
  3.         for i in list(self):
  4.             if i in list(other):
  5.                 list(self).remove(i)
  6.         return str(self)
复制代码


最佳答案
2020-2-12 15:31:29
由于字符串是不可变对象,所以不能对它进行修改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-12 15:31:29 | 显示全部楼层    本楼为最佳答案   
由于字符串是不可变对象,所以不能对它进行修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 15:44:59 | 显示全部楼层
新的一种
应该是对了
class Nstr(str):
    def __sub__(self,other):
        c = ''
        for i in list(self):
            if i in list(other):
                pass
            else:
                c += i
               
        return str(c)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 15:46:25 | 显示全部楼层
zltzlt 发表于 2020-2-12 15:31
由于字符串是不可变对象,所以不能对它进行修改

请问这个咋错了,麻烦看一看
定义一个类 Nstr,当该类的实例对象间发生的加、减、乘、除运算时,将该对象的所有字符串的 ASCII 码之和进行计算:
>>> a = Nstr('FishC')
>>> b = Nstr('love')
>>> a + b
899
  1. class Nstr(str):
  2.     def __add__(self,other):
  3.         sum1,sum2 = 0
  4.         for i in self:
  5.             sum1 += ord(i)
  6.         for j in other:
  7.             sum2 += ord(j)

  8.         return (sum1 + sum2)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 15:48:21 | 显示全部楼层
最后的魁拔 发表于 2020-2-12 15:46
请问这个咋错了,麻烦看一看
定义一个类 Nstr,当该类的实例对象间发生的加、减、乘、除运算时,将该对象 ...

没错呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 15:50:22 | 显示全部楼层

>>> a = Nstr('abcd')
>>> b = Nstr('edf')
>>> a+b
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a+b
  File "D:/desktop/py/4.py", line 4, in __add__
    sum1,sum2 = 0
TypeError: cannot unpack non-iterable int object
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 15:50:50 | 显示全部楼层
最后的魁拔 发表于 2020-2-12 15:50
>>> a = Nstr('abcd')
>>> b = Nstr('edf')
>>> a+b

看错了,抱歉

应该是 sum1, sum2 = 0, 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 15:51:45 | 显示全部楼层
zltzlt 发表于 2020-2-12 15:50
看错了,抱歉

应该是 sum1, sum2 = 0, 0

谢谢了,我tm真粗心
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 16:00:14 | 显示全部楼层
  1. class Nstr(str):
  2.     def __sub__(self,other):
  3.         self = self.replace(other, '')
  4.         return self
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 16:23:35 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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