我必须创建2个涉及2维列表的函数,以便为基本的Python游戏制作网格:
第一个函数必须接受参数一个int n并返回一个包含n列和n行的2维列表,所有值都为0。
第二个必须在参数中使用2维列表并打印网格但不返回任何内容。
这是我的意思:
def twoDList(x, y):
arr = [[x for x in range(6)] for y in range(6)] # x = height and y = width
return arr
def displayGrid(arr):
for i in range(0, 5):
print(arr[i][i])
您能否帮我改进有关说明的代码,并帮助我了解如何使用代码显示整个网格?
答案 0 :(得分:2)
以下是两种不使用第三方库的方法。
创建2D数组的一种简单方法是继续将数组附加到数组:
server {
listen 80;
server_name www.myapi.com;
location / {
proxy_pass http://www.commercialapi.com;
proxy_redirect http://www.commercialapi.com/ /;
proxy_read_timeout 60s;
# Your can customize headers as well.
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
在这里,我重新创建了相同的数组(for x in range(10): #width
for y in range(10): #height
a.append(y) #you can also append other data is you want it to be empty, this just makes it 0-9
arr.append(a) #add the 1-9
a = [] #clear the inner array
)10次,所以它效率低下,但重点是你可以使用相同的结构和自定义数据输入来制作自己的2D数组。
获得完全相同的2D数组的另一种方法是列表理解
a
这可能就是你试图用你提供的代码做的事情,正如评论中提到的那样,在语法上是不正确的。
要进行打印,只需调整必须具有2个循环的代码:一个用于x,一个用于y:
arr = [[x for x in range(10)] for y in range(10)]
答案 1 :(得分:0)
我仍然在你的代码中看到错误:
在您的第一个功能中,由于x,y
是您的输入,因此您希望在列表理解中使用它们。你没有在你的代码中使用它们
def twoDList(x, y):
arr = [[x for x in range(6)] for y in range(6)] # x = height and y = width
return arr
在你的例子中,无论x或y的值是多少,你都得到一个6x6网格。您想使用x
和y
并替换您在那里的固定值(提示:更改您的'6')。
不会为你做那件事,
在您的打印功能中,您可能希望使用两个变量(每个维度一次)作为索引。
另外,不要在这里使用固定值,从你的输入中获取它们(我猜这是功课,所以不会把整个代码放在一起)
def displayGrid(arr):
for i in range(0, 5):
for j in range(0, 5):
print(arr[i][j])