2014-10-20 24 views
-1

我的計算機科學任務需要我用Python重新編寫split()字符串方法,其中y是分隔符,而x是用戶輸入的字符串。Python中的Split Split()函數返回一個不正確的列表

迄今爲止我所做的代碼如下所示:

def split(x, y = " "): 
    list_one = [] 
    list_two = [] 

    for char in x: 
     if char not in y: 
      list_two.append(char) 
     else: 
      list_one.append(''.join(list_two)) 
      list_two = [] 

    return list_one 

我遇到的問題,不過,與此函數給出的輸出。這裏有兩個示例輸出來說明:

>>> split("babab", "a") 
['b', 'b'] 
>>> split("9*r10*r11", "*r") 
['9', '', '10', ''] 

問題?

  1. split("babab", "a"),最後'b'是從返回list_one完全不存在了,我不知道這是爲什麼。

  2. split(9*r10*r11", "*r")中,返回的list_one中有空的單引號;再次,我不知道他們爲什麼在那裏。此外,發生在1中的問題也發生在這裏,完全沒有列表中的數字11

任何人都可以向我解釋爲什麼會發生這種情況,我該如何解決這個問題?

+0

在for循環之後,你需要檢查'list_two'是否仍然包含任何東西。如果是,那麼追加它。 – 2014-10-20 19:17:38

+2

沒有人可以向你解釋這個以及交互式可視化器。像[這一個](http://bit.ly/1vDz35J)。當你逐步瞭解它時,很明顯爲什麼每個人都會出錯。 (你也可以使用內置的調試器,或者添加一些'print'調用,但是當你真的需要看到每一個步驟時,可視化器會更好,並且不會因爲太多而變得不堪重負) – abarnert 2014-10-20 19:18:35

回答

1

你的兩個錯誤是:

  1. 你不處理後循環list_two;和
  2. 您正在檢查單個字符,當len(y) > 1時不能正常工作 - 您應該檢查字符串的起始長度爲y

鑑於這是你的家庭作業,我認爲你應該從那裏拿走它。

+0

你打算告訴如何解決它嗎? – Barmar 2014-10-20 19:21:05

+0

爲什麼這是我的任務?我沒有問這個問題。 – Barmar 2014-10-20 19:22:08

+0

@Barmar啊,對不起,以爲你是OP;這是他們的*作業 – jonrsharpe 2014-10-20 19:22:33