2017-02-23 83 views
-2

嗨,我想修改我的列表,所以它顯示(x)在給定的座標通過元組。Python List/Tuple

這裏是我到目前爲止的代碼

#w=width 
#h=height 
#c=coordinates 

new_grid = [] 
def coordinates(w,h,c): 
    '''  
    >>> coordinates(2, 4, (0, 1)) 
    >>> print(new_grid) 
    [['(_)', '(x)'], ['(_)','(_)'], ['(_)', '(_)'], ['(_)', '(_)']] 
    ''' 
    b=[] 
    for i in range(h): 
     new_grid.append(b) 
    for j in range(w): 
     c=('(_)') 
     b.append(c) 

我不知道如何在給定的座標執行(X),任何幫助表示讚賞 感謝。

+1

修復您的縮進。嚴重縮進的Python是無稽之談。 – khelwood

+0

固定對不起, – Patrick

回答

0

有在你的方法的多個錯誤:

  • 您聲明全局變量new_grid,但以後你通常不需要grid.append(b)
  • 全局,您可以創建在函數的網格和更新全局使用函數的返回值
  • 兩個for-loops是分開的。記住在Python
  • 該缺口問題
  • b是循環外聲明,所以你追加到同一實例的所有時間
  • 你用字符串覆蓋原始座標元組c'(_)'

這裏有一個版本,我認爲你做原本是以後有什麼:

def coordiantes(w,h,c): 
    '''  
    >>> print(coordiantes(2, 4, (0, 1))) 
    [['(_)', '(x)'], ['(_)','(_)'], ['(_)', '(_)'], ['(_)', '(_)']] 
    ''' 
    grid = [] 
    for i in range(h): 
     b = [] 
     grid.append(b) 
     for j in range(w): 
      if (i, j) == c: 
       b.append('(x)') 
      else:  
       b.append('(_)') 

    return grid 

你也可以實現整個事情作爲一個列表理解:

def coordiantes(w, h, c): 
    return [['(x)' if c == (y, x) else '(_)' for x in range(w)] 
      for y in range(h)] 
+0

工作謝謝 – Patrick