2014-03-07 31 views
0

嗨,我真的很困惑,我很難做出'我們完成'的部分。只有當我運行的代碼,其結果只會是['Hooray', ' Finally']我不能使這個功能完全正確

def split_on_separators(original, separators): 
    """ (str, str) -> list of str 

    Return a list of non-empty, non-blank strings from the original string 
    determined by splitting the string on any of the separators. 
    separators is a string of single-character separators. 

    >>> split_on_separators("Hooray! Finally, we're done.", "!,") 
    ['Hooray', ' Finally', " we're done."] 
    """ 
    #I can't make we're done . 
    result = [] 
    string='' 

    for ch in original: 
     if ch in separators: 
      result.append(string) 
      string='' 
      if '' in result: 
       result.remove('') 
     else: 
      string+char 

    return result   

回答

1
def split_on_separators(original, separators): 
     result = [] 
     string='' 

     for index,ch in enumerate(original): 
      if ch in separators or index==len(original) -1: 
       result.append(string) 
       string='' 
       if '' in result: 
        result.remove('') 
      else: 
      string = string+ch 

     return result 

res = split_on_separators("Hooray! Finally, we're done.", "!,") 
print(res) 

在您的解決方案中,您只能測試分隔符。所以當字符串被終止時,什麼都不會發生,最後一個字符串不會被添加。您還需要測試字符串終止。

另請注意,您並未將當前字符附加到字符串,因此最後一個字符串的「。」。也許這是你想要的(看起來像我的分隔符))

+0

它實際上只在我應用了你所做的事情時才返回[],但是你所做的更合理,但我不知道它爲什麼返回此 – user3283844

+0

@ user3283844不,它不返回[]。檢查我的代碼,有一個字符串= string + ch。你只有字符串+ ch,如果你有這樣的話,它返回[] – faboolous

+0

哦,不,對不起,它的工作!我非常感謝你的幫助 – user3283844

1

這條線:

string+char 

是計算的東西,而不是分配給它。

試試這個:

string=string+char 

或者,您可以縮短使用+=速記:

​​

這是equivilent以上。

+0

呃..我做到了這一點,但它沒有奏效。我只是無法知道如何分配我們完成 – user3283844

+0

那麼,你的代碼與你在問題中提出的代碼是不同的。我可以立即看到的唯一問題是你不分配任何東西。 – 2014-03-07 05:04:17

+1

甚至有一個bug,因爲user3283844有字符串+字符,甚至沒有編譯。它的字符串=字符串+ ch;) – faboolous