我在为战舰游戏打印这个2D阵列时遇到了问题。
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
你能帮我一下吗?答案 0 :(得分:1)
您的字符串格式错误%s
用于表示您的i
和j
为整数的字符串,因此请使用%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
答案 1 :(得分:0)
for i in range(10):
for j in range(10):
print(locate[i][j])`
这应该可以使它工作。
答案 2 :(得分:0)
你想怎么打印?请提供有关输出格式的更多信息。
假设你想要那个格式,即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-loop之外只打印一次矩阵
答案 3 :(得分:0)
这里是我编写的一些代码来生成乘法板,以演示如何打印未知大小的2d数组
l = [] # empty list
a,b = 10,10 # size of board aXb
for i in range(1,a+1): # generate board
temp = []
for j in range(1,b+1):
temp.append(i*j)
l.append(temp)
for i in l: # print the board
print i
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
[6, 12, 18, 24, 30, 36, 42, 48, 54, 60]
[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]
[8, 16, 24, 32, 40, 48, 56, 64, 72, 80]
[9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
这是一种不同的打印方式
for i in l: # print the board
for j in i:
print j,
print
输出
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
答案 4 :(得分:0)
您有多种打印形式
使用numpy
import numpy as np
print(np.matrix(matrix))
使用pprint
import pprint
pprint.pprint(matrix)
答案 5 :(得分:0)
首先,让我们清理2D列表的创建:
locate = [[str(i)+","+str(j) for j in range(10)] for i in range(10)]
然后,迭代数组并打印每种情况下存储的值:
for locate_i in locate:
for locate_i_j in locate_i:
print locate_i_j
说明:当您在列表中使用for X时,X将具有列表中每个元素的值。因此,我们的locate_i
是给定i索引的每个子列表。当我们遍历此列表时,我们获取内容,"%s,%s"%(i,j)
答案 6 :(得分:0)
这是我用来打印清单的最简单方法。
<template is="dom-repeat" items="[[_wrap(userIds)]]">
<firebase-document path="/users/[[item.userId]]" data="{{item.user}}"></firebase-document>
<div>User's name is [[item.user.name]]</div>
</template>