2011-11-17 50 views
0

另一個附加的問題...這是我的代碼:Python的 - 附加幫助 - 串名單

def s(xs,n,m): 
    t = [] 
    while n < m: 
     n += 2 
     t.append(xs[n]) 
    return t 

當我評價如下:

x = s('African', 0, 3) 

爲什麼它返回這個?:

['r', 'c'] 
+4

你期望什麼? – Nemoden

+2

因爲你告訴它... – chown

+0

抱歉,我必須失明..大聲笑 – jetair

回答

3
while n < m: 
    n += 2 # at this point n = 2 because you've passed 0 
    t.append(xs[n]) # you append r to t since xs[2] = r 

但ñ<米靜止,因此n ext iteration:

while n < m: 
    n += 2 # at this point n = 4 
    t.append(xs[n]) # you append c to t since xs[4] = c 

現在n> m,所以函數返回['r', 'c']。一切都是正確的。

2

好了,行由行...

您的電話是這樣的:

x = s('African', 0, 3) 

因此發生的事情是:

  1. 步驟1 - 初始assignement

    def s(xs,n,m): 
    

    xs='African'n=0m=3,然後:

    t = [] 
    

    (所以,空單t介紹)。

  2. 步驟2. - 環

    1. 然後在以下條件被評估:

      while n < m: 
      

      True,因爲0 < 3

    2. 然後n增加:

      n += 2 
      

      所以現在等於2

    3. 然後適當的元素被添加到空t列表:

      t.append(xs[n]) 
      

      和這個元素 「r」,因爲xs[2] == 'r'

    4. 然後n < m條件被再次評估以True(因爲2 < 3),因此循環再次執行:

      n += 2 
      

      n現在等於4

    5. 然後從xs串適當炭被附加到t列表(已具有一個元件,r,如我們上面提到的)。

      t.append(xs[n]) 
      

      和這個元素爲 「c」(因爲xs[4]正是 「c」)。

    6. 然後條件while循環再次評估,但這次False(因爲4 < 3是不正確的),因此該循環停止執行...

  3. (第3步 - 後環)...和程序流轉到該函數的最後聲明,這就是:

    return t 
    

而且t返回我們用兩個元素填充的列表 - 因此,該函數返回列表['r', 'c']

這足夠清楚了嗎?它有幫助嗎?

+0

愚蠢的我,我有n = 3出於某種原因,對我來說我晚了必須變得盲目!希望這對未來的任何人都有用,就像我一樣愚蠢...... lol – jetair

+0

@jetair:這可能沒有用,因爲這是相當本地化的,幷包含基本的編程知識。 – Tadeck

+0

我可以刪除它嗎?在這裏浪費空間會很愚蠢......? – jetair