【问题标题】:python3 string to variablepython3字符串到变量
【发布时间】:2012-06-20 15:22:03
【问题描述】:

我目前正在尝试在代码中实现康威的生命游戏,因此构建了一个函数,该函数根据窗口的大小生成坐标。

def coords_maker(num_x, num_y):

    num_x += 1  
    num_y += 1  
    coords = []
    for i in range (0,num_y, 1):    
        for n in range (0,num_x,1):
            coords.append ('x'+str(n)+'y'+str(i))   
    return coords

然而,我想为结果字符串随机分配值,以将它们标记为活动 (1) 或死 (0)。然而,他们将字符串转换为我知道的变量名的唯一方法是通过 dict 和 var(),但是,对于进一步的代码来说,坐标保持排序是必不可少的,因为我希望能够遍历订购项目并将光标相应地放在坐标名称上。比如:

print ('\033['+X_COORD+';'+Y_COORD+'f'+ x1y5) 

如果例如x1y5 是变量对应的值(0或1)

是否有一种方便的方法可以通过 dict 执行此操作,或者如何将字符串名称转换为变量名称? 或者可能。如果我保留一个字典和一个列表并将坐标名称存储在列表中并将值存储在字典中?

提前感谢您! 基里尔

【问题讨论】:

  • 为什么不使用二维数组或列表列表?

标签: string list variables dictionary python-3.x


【解决方案1】:

你使用字典:

def coords_maker(num_x, num_y):

    num_x += 1  
    num_y += 1  
    coords = {}
    for i in range (0,num_y, 1):    
        for n in range (0,num_x,1):
            coords['x'+str(n)+'y'+str(i)] = 0
    return coords

然后您使用

访问该值
 coords[x][y]

然后像这样改变它:

 coords[x][y] = 1

现在,当然,将坐标转换为字符串是完全没有意义的。只需使用列表列表:

def coords_maker(num_x, num_y):

    num_x += 1  
    num_y += 1  
    coords = [[0]*num_x for x in range(num_y)]
    return coords

我也不知道你为什么给坐标加1:

def coords_maker(num_x, num_y):
    return [[0]*num_x for x in range(num_y)]

【讨论】:

  • 感谢您的快速回复。但是如何解决dict未排序的问题呢?
  • @kyril:为什么会有问题?但无论如何,我添加了一些不太复杂的方法。
  • 谢谢,最后一部分确实解决了问题。我只是不知道该怎么做。我为这些值添加了 +1,这样如果我想要单元格宽度为 5 个字符的窗口,范围就不会停在 4。最后一个问题:列表理解中的 [0]*num_x 代表什么?特别是[0]。谢谢!
  • @kyril: [0] 是一个包含 0 的列表。我建议您通过一些 Python 教程来了解该语言的基础知识。真的很有帮助。
  • @kyril:这是一个列表。在这种情况下。它什么也没做。将其相乘将创建一个包含 N 个元素的列表,因此 [0]*5 创建一个如下所示的列表:[0, 0, 0, 0, 0]。 Python 是交互式的,打开提示并输入,看看会发生什么。最好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 2019-09-12
  • 2017-10-11
  • 2018-03-06
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多