2016-10-31 56 views
-2

我有一項任務要求我從列表 v_niz(['', 'a', '', '', '', 'x', 'x', 'x', '', 'y', 'y', '', ''])中打印' a xxx yy '(包括空格)。到目前爲止我的代碼是:附加名稱時未定義

def v_niz(plosca): 
    b = [] 
    for e in plosca: 
     if e == "": 
      b.append("") 
     if e == 'a' : 
      b.append(a) 
     if e == 'x': 
      b.append(x) 
     if e == 'y': 
      b.append(y) 
    return b 

但是當我嘗試運行它,它說,名「A」是沒有定義

+2

嗯......確實'*了'不*定義。對於這個問題,「x」和「y」都沒有。 – deceze

+1

你爲什麼不用'''''''''''''''''''''''' –

+0

另外...你不只是重建'plosca'? 'def v_niz(plosca):return plosca'會在給定的例子中做同樣的事情。 – deceze

回答

3

首先,如果您從b = []開始,那麼您只是要創建另一個列表。如果你想創建一個字符串,你應該有:

b = "" 

而且將追加到它的結束,您使用的語法:

b = b + "a" 
# or the shorthand: 
b += "a" 

現在爲你的方法的邏輯。你不追加你認爲你正在追加的內容。例如:

b.append(a) 

嘗試一些變量a添加到您的列表b結束。看來你想追加字符或字符串'a'

# for a list use 
b.append('a') 
# for a string use: 
b += "a" 

也是一樣xy,你需要使用他們周圍的報價:'x''y'。你也不會添加空間:

b.append("") 

實際上你需要把空間分成字符串,否則你只是將一個空字符串的b結束這相當於在b基本上沒有變化。你應該嘗試:

# for a list use 
b.append(" ") 
# for a string use: 
b += " " 

保在所有這些改變你的代碼的粗略框架應該更像:

def v_niz(plosca): 
    b = "" 
    for e in plosca: 
     if e == "": 
      b += " " 
     if e == 'a' : 
      b += 'a' 
     # ... 
    return b 
+0

我還獲得了一個測試人員來檢查我的代碼是否正確,即使更改代碼仍然不會通過測試人員。我不知道該怎麼做.. –

+1

把'b'作爲一個列表,然後在最後加入'''它實際上更好。因爲它們是不可變的,所以不適合添加到字符串中。此外,只要在{'a','x','y'}中使用if if:' –

+0

但是我實際上更喜歡'return''.join(''如果x ==''else x for x in plosca) ' –