如何用python打印二维数组

2024-06-10 06:47:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为我的战舰游戏打印这个二维数组时遇到问题。

class Battleship:

    def __init__(self):
       self.__init__()

    def board(self, locate):
        locate = []
        for i in range(10):
            locate.append([])
            for j in range(10):
                locate[i].append(0)

        for i in range(10):
            for j in range(10):
                locate[i][j] = '%s,%s'%(i,j)
                print(locate)

我在这里找到了初始化数组的方法:How to initialise a 2D array in Python? 在这里我找到了在2d数组上迭代的代码示例,但它对我不起作用: Iterating over a 2 dimensional python list

你能帮我个忙吗?


Tags: inselfboard游戏forinitdefrange
3条回答

字符串格式不正确%s是字符串的ij是整数,因此请使用%d

所以使用:

locate[i][j]='%d%d'%(i,j)

此外,要以矩阵格式打印,完整代码为:

for i in range(10):
        s=''
        for j in range(10):
            locate[i][j] = '%d,%d'%(i,j)
            s+=locate[i][j]+' '
        print s
for i in range(10):
    for j in range(10):
        print(locate[i][j])`

这应该会起作用的。

你想怎么打印?请提供更多关于输出格式的信息。

假设您想要格式,即xOy坐标(x,y):

在这个for循环中:

for i in range(10):
        locate.append([])
        for j in range(10):
            locate[i].append(0)

您的代码可能会因为这一行而失败:

locate[i].append(0)

这里的问题是您的locate变量是一个2D数组,因此您可能需要尝试如下操作:

locate[i][j].append(0)

否则,如果我没弄错的话,你就得附上一份完整的名单

另外,您的最后一个语句“print(locate)”应该在for循环之外,以便只打印一次矩阵

相关问题 更多 >