我试图将已经读过的文本文件中的值从单独的列表中取出来,并且我试图找到每个E' E'的具体位置。在文本文件中。每次使用以下方法打印列表后,它都会显示为空。我不确定我做错了什么。剂量等于6
for a in range(0,2,1):
agentLocations.append([])
for c in range(0,AGENTS,1):
indices = [(i,x) for i, x in enumerate(aMaze) if x == 'E']
agentLocations[a].append(0)
print(indices)
将文件放入自己的列表的代码如下:
for line in file:
for char in line:
for r in range (0, ROWS, 1):
aMaze.append ([])
aMaze[r].append(char)
print ("".join(aMaze[ROWS-1]))
输入的文件看起来像
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~H ~
~ ~
~ ~
~ ~
~# ~
~ ~
~ ~
~ E ~
~ ~
~ ~
~ ~
~ ##### #######~
~ E #E ~
~ # E~
~ # ES ~
~ E ~
~ ~
~ ~
################
我正在寻找' E'列表中的字符。
答案 0 :(得分:0)
我认为问题在于你的aMaze没有正确构建。这就是为什么我认为......
要调试与打印标记问题相关的代码,您需要首先详细说明列表理解,然后添加打印件。
我做到了,我发现aMaze的枚举会产生数以万计的迭代次数。那是你所期待的吗?这不是我所期待的。
然后我打印了一个魔法本身。 aMaze中有数以万计的空列表:事实上,输入文件中每个字符的ROWS数量。 (aMaze.append ([])
位于内部循环内,为文件中的每个字符执行ROW次数。
这似乎不对(我不得不猜出ROWS是什么)。
因此,围绕构建aMaze数组的逻辑似乎是错误的,但很难说它有什么问题,因为很难确定意图。例如,为什么打印aMaze的ROWs行成功地打印了迷宫:显然某些东西正在按预期运行,这使得很难从你的角度理解什么是不对的。
我的回答和建议:重新审视你是如何构建一个迷宫的。如果您无法对其进行调试,请提出一个新问题,重点关注那些给您带来麻烦的问题。
以下是调试会话后的最终完整代码。
agentLocations = []
AGENTS=1
ROWS=20
aMaze = []
with open("foo.txt") as f:
for line in f:
for char in line:
for r in range (0, ROWS, 1):
aMaze.append ([])
aMaze[r].append(char)
print ("".join(aMaze[ROWS-1]))
print aMaze
for a in range(0,2,1):
agentLocations.append([])
for c in range(0,AGENTS,1):
# indices = [(i,x) for i, x in enumerate(aMaze) if x == 'E']
indices = []
for i,x in enumerate(aMaze):
print "i,x", i,x
if x =='E':
indicies.append((i,x))
agentLocations[a].append(0)
print(indices)
请注意,我必须猜测aMaze和agentLocations的ROWS和初始值是什么。我也看不到重复c
循环AGENTS
次的问题,所以我将AGENTS
设置为1.
这些并不难猜,但这意味着你还没有掌握MVCE(根据我对你的问题的评论)。它将帮助您在这里获得更好的帮助,掌握它,并且您会发现创建MVCE的行为通常会在此过程中呈现解决方案。