奇数嵌套循环不';t正确地中断(Python3.x)
下面的代码应该打印多行奇数嵌套循环不';t正确地中断(Python3.x),python,python-3.x,nested-loops,break,Python,Python 3.x,Nested Loops,Break,下面的代码应该打印多行 1 2 3 1 1 1 1 3 夹杂着一行行行的 0 0 但是,它实际打印的是多行 1 2 3 1 1 1 1 3 夹杂着一行行行的 0 0 代码: hmap是一个二维浮点值数组,传递给该代码所在的函数 这段代码应该生成一系列矩形,供其他(不相关的)代码部分稍后使用。“通过”的矩形(最小/最大值的差值不大于v)会导致 待打印。不“通过”的矩形应导致 当循环中断时,作为和的嵌套打印。为什么不工作?代码块上的缩进看起来不正确。有else语句与for语句对齐
1
2
3
1
1
1
1
3
夹杂着一行行行的
0
0
但是,它实际打印的是多行
1
2
3
1
1
1
1
3
夹杂着一行行行的
0
0
代码:
是一个二维浮点值数组,传递给该代码所在的函数hmap
v
)会导致
待打印。不“通过”的矩形应导致
当循环中断时,作为和的嵌套
打印。为什么不工作?代码块上的缩进看起来不正确。有else
语句与for
语句对齐,等等。Python使用缩进来分隔这样的代码块。仔细检查代码或此处复制的内容是否正确对齐。如果问题中的缩进不正确,请随意编辑。代码可能打破了错误的循环,我可能错了。
对于while循环,创建一个布尔变量并将其设置为true。然后在while循环中,在需要时使用if语句使其为false
top_loop, bottom_loop = True, True
while top_loop:
# do something
while bottom_loop:
# do something
if condition:
top_loop = False
我还没有想到for循环。
在这个链接上有一个答案,为循环命名并打破for循环。它使用contextlib库
在尝试运行代码时,我遇到了一个索引器:列表索引超出范围的错误。看起来您可能已经转置了列和行索引。尝试将[c][r]
下标更改为[r][c]
:
# [...]
for c in range(x, x+wtemp):
for r in range(y, y+htemp):
minh = min(minh,hmap[r][c])
maxh = max(maxh,hmap[r][c])
# [...]
我不确定这是否是不正确的中断/打印的原因,但这肯定会有所不同。Python for语句可能还有其他块。哇,谢谢。每天学习新的东西。此外,对问题的改进要求通常应该出现在对问题的评论中,而不是答案中。顺便说一句,while和try语句也可以包含else子句。对,我认为代码行为不正确的原因是缩进,缩进可能就是答案,但同时也希望让人相信这可能是问题中的复制/粘贴问题。结果我不知道我在说什么:)你能提供一个导致这个失败的hmap
和v
的例子吗?几乎任何hmap
都可以工作,只要它是一个等长数组(包含浮点值)的数组v
也是一个浮点数,所以也可以将其设置为任意值。哈哈。cmd输出没有改变,但是该函数现在在实际程序中工作得非常好。我没有遇到索引器的原因是因为我一直在使用“方形”数组。我不确定这在我的代码中是如何工作的。这可能会引起一些问题。