【发布时间】:2015-03-25 09:00:15
【问题描述】:
我很难编辑内置的 del 运算符并满足我的作业限制。
在我的 Python 课程中,我的教授希望我们从一个名为 Mutstr 的类开始,该类用于使字符串可变。在包含字符串“oogyboogy”的 Mutstr 实例中,在三个 del 命令中,他希望我们摆脱字符串“oogyboogy”中的“gyb”。
叹息。如此糟糕的作业……无论如何。
我在下面有两个代码 sn-ps 完成摆脱“gyb”。
不幸的是,我的两个版本都依赖于一个 del 命令。我相信我的教授想要三个单独的调用来逐个索引删除这些每个索引。
什么是遍历整个字符串的最佳方法,评估每个索引以检查它是否是“oogyboogy”中间字符“gyb”的特定成员
现在,当我运行它时,这两个都可以工作:
>>> one = Mutstr('oogyboogy')
>>> del one[2]
>>> one.get()
'oooogy'
我认为这是正确的答案。但是,我认为我完成它的方式不符合他的问题限制:
class Mutstr():
def __init__(self,st = ""):
self.str = st
def get(self):
return self.str
def __delitem__(self, index):
self.str = self.str[:index] + self.str[index+3:]
我有另一个版本在这里做同样的事情:
def __delitem__(self, index):
if 'g' in self.str:
self.str = self.str[:index] + self.str[index+1:]
if 'y' in self.str:
self.str = self.str[:index] + self.str[index+1:]
if 'b' in self.str:
self.str = self.str[:index] + self.str[index+1:]
【问题讨论】:
-
您确定您的预期输出是“oooogy”而不是“oooo”吗?要求是删除 'g''y''b' 字母还是删除 'gyb' 字符串?
-
我很乐意听取人们如何完成您的建议。由于这个问题的措辞很糟糕,我想以尽可能多的方式解决这个问题。
标签: python string operator-overloading mutable