我是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循环()来提供一些建议吗?
非常感谢你!答案 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循环增量位于循环内。它需要被标记到循环体中。问题是你的row
和column
增量发生在循环之外,所以它们在体内不会改变。这是一个无限循环。
答案 2 :(得分:0)
如果我理解正确,那么您的问题主要是关于内置函数range
。
您可以阅读有关此函数here的所有内容,但简而言之,它会生成一个数值值数组。
然后,行for i in range(...)
基本上意味着:
对于i
生成的数组中的每个元素range
,请执行...