For Loop vs While Loop差异PYTHON

时间:2014-07-03 21:08:01

标签: python python-2.7 if-statement for-loop while-loop

我是Python的初学者,而我的教授在解释循环之间的差异方面做得不好。我想问一下这个社区For循环和While循环之间的区别。我查看了各种资源,但我感到困惑的是,循环如何没有计数器将它们带回到开头,就像循环一样: 我在for()循环中编写了以下代码,但我的目标是将其更改为while循环。代码并不重要,如何将此代码更改为While()循环。

for r_ow in range(Height_box):
    for c_col in range(Width_box):
        gridpoint = box * row + column
        if gridpoint in gridList:
            box[r_ow][c_col] = "Inside Box"
        else:
            outsideBox = (CurrentBox(boxWidth,Boxedge))
            ctr = 0
            for Box_edges in Box:
                if eval(Box(boxWidth,boxHeight,box_edges,box_point)):
                    if box_edge in gridList:
                        ctr += 1
            Bow[r_ow][c_col] = str(int(box[r_ow][c_col]) + ctr)

到目前为止,我已经达到了这样的程度,我认为这就是它看起来的样子,但现在我陷入CMD无限循环中。

row = 0
while r_ow < boxHeight:
    column = 0
    while c_col < boxWidth:
        gridpoint = box * row + column
        if gridpoint in gridList:
            box[r_ow][c_ol] = "Inside Box"
        else:
            outsideBox = (CurrentBox(boxWidth,Boxedge))
            ctr = 0
            while ctr < Boxes: 
                if eval(Box(boxWidth,boxHeight,box_edges,box_point)):
                    if box_edge in gridList:
                    ctr += 1
        Bow[r_ow][c_col] = str(int(box[r_ow][c_col]) + ctr)
    column += 1
row += 1
return box  

有人可以就如何将第一个代码格式化为while循环()来提供一些建议吗?

非常感谢你!

3 个答案:

答案 0 :(得分:2)

您的列增量语句(列+ = 1)位于相应的while循环之外。

行增量语句相同。

现在,在循环完成后,列将递增。但是,你需要它在循环的每次迭代后递增。

为这两个语句添加一个意图级别,你就可以了。

        Box[r_ow][c_colu] = str(int(box[r_ow][c_col]) + ctr)
        column += 1
    row += 1
return board    

最内层的while循环也存在问题。 邻居是一个列表(或类似的东西),而ctr是一个int。你不能比较这两者。此外,ctr不是通过邻居的变量迭代。它是一个柜台。做这样的事。

i = 0
ctr = 0
while i < len(box): 
    if eval(Box(boxWidth,boxHeight,box_edges,box_point)):
       if box_edge in gridList:
            ctr += 1
    i+=1

答案 1 :(得分:1)

您希望while循环增量位于循环内。它需要被标记到循环体中。问题是你的rowcolumn增量发生在循环之外,所以它们在体内不会改变。这是一个无限循环。

答案 2 :(得分:0)

如果我理解正确,那么您的问题主要是关于内置函数range

您可以阅读有关此函数here的所有内容,但简而言之,它会生成一个数值值数组。

然后,行for i in range(...)基本上意味着:

对于i生成的数组中的每个元素range,请执行...