Python 对于具有二维列表的循环
我试图做一个函数,告诉用户他们所在房间的出口。每个子列表都是一个房间。所有非零数都是我的二维列表中每个子列表的出口。所有的零都不是出口。当我的地图的第一个值是Python 对于具有二维列表的循环,python,multidimensional-array,Python,Multidimensional Array,我试图做一个函数,告诉用户他们所在房间的出口。每个子列表都是一个房间。所有非零数都是我的二维列表中每个子列表的出口。所有的零都不是出口。当我的地图的第一个值是[0,2,3,0]时,我连续4次得到输出“0房间没有出口”,这显然有2个和3个出口。我在想我做错了什么 map=[[0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0
[0,2,3,0]
时,我连续4次得到输出“0房间没有出口”,这显然有2个和3个出口。我在想我做错了什么
map=[[0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3]]
class Player:
def __init__(self, room_number = 0):
self.room_number = room_number
def exit_count(self):
for n in range(0,4):
if map[self.room_number][n]==0:
print("There is no exit to room {0}\n".format(self.room_number))
elif map[self.room_number][n]!=0:
print("There is an exit to room {0}\n".format(self.room_number))
p = Player()
p.exit_count()
由于没有其他可能的答案,请放弃elif条件并使用else。除此之外,它还能工作
map=[[0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3], [0, 2, 3, 0], [0, 0, 4, 1], [1, 4, 0, 0], [2, 0, 0, 3]]
class Player:
def __init__(self, room_number = 0):
self.room_number = room_number
def exit_count(self):
for n in range(0,4):
# print n
# print map[self.room_number][n]
if map[self.room_number][n] == 0:
print("There is no exit to room {0}\n".format(self.room_number))
else:
print("There is an exit to room {0}\n".format(self.room_number))
p = Player(room_number=4)
p.exit_count()
出局
只需使用以下命令
def findexits(rooms):
for room in rooms:
yield [door for door in room if door]
exits = findexits(map) # this is a generator
# list(exits) => [[2,3], [..],...]
# If you wish to calculate the number of exits, employ the generator
# before consuming
exit_counts = [len(exit_) for exit_ in exits]
# this consumes it.
您可以通过各种方式修改
findexits
。self.room\u number
是当前房间,n
是出口号码。所以你应该打印n
。为我打印“0号房间没有出口,0号房间有出口,0号房间有出口,0号房间没有出口”
def findexits(rooms):
for room in rooms:
yield [door for door in room if door]
exits = findexits(map) # this is a generator
# list(exits) => [[2,3], [..],...]
# If you wish to calculate the number of exits, employ the generator
# before consuming
exit_counts = [len(exit_) for exit_ in exits]
# this consumes it.