2015-03-25 42 views
1

我很難編輯內置的del運算符並滿足我的任務的約束。在可變字符串類中重載del運算符python

在我的python類中,我的教授想讓我們從創建一個類來創建一個名爲Mutstr的可變字符串。在包含字符串「oogyboogy」的Mutstr實例中,在三個del命令中,他希望我們擺脫字符串「oogyboogy」中的「gyb」。

感嘆。無論如何,這樣一個建設不好的任務...。

我有兩個代碼片段,完成擺脫「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:] 
+0

你確定你的預期輸出是'oooogy'而不是'oooo'嗎?要求是刪除'g''y''b'字母還是刪除'gyb'字符串? – 2015-03-25 09:09:13

+0

我很樂意聽取您如何完成您的建議。由於這個問題的措辭很差,我想盡可能多地解決這個問題。 – 2015-03-25 09:11:44

回答

0

我讀的分配方式,你的教授可能是尋找類似:

class Mutstr(object): 
    def __init__(self, st=""): 
      self.st = st 

    def get(self): 
      return self.st 

    def __delitem__(self, index): 
      self.st = self.st[:index] + self.st[index+1:] 

one = Mutstr('oogyboogy') 
del one[4] 
del one[3] 
del one[2] 
print one.get() 
+0

嗯,直到你的建議,我甚至沒有想過用最大的索引來處理它。我將不得不修補這一點。 – 2015-03-25 09:18:29

+0

所以這就是我對自己的代碼的想法。我有一個很好的主意,我很接近。感謝幫助我以不同的方式來看待它。 – 2015-03-25 09:26:08

0

你的教授幾乎肯定希望這些語義:

>>> one = Mutstr('oogyboogy') 
>>> del one[2] # deletes g 
>>> del one[2] # deletes y 
>>> del one[2] # deletes b 
>>> one.get() 
'oooogy' 

因此,您應該只刪除__delitem__中的一個字符。不要對__delitem__函數中的字符值進行硬編碼,這只是不好的口味。

+0

是的,那是我以不同的方式解決問題的嘗試。我已經對此感覺更好了。感謝您的建議。 – 2015-03-25 09:22:28