2017-02-23 44 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