Python中for循环与while循环的区别
我刚开始学习Python,教授对循环的区别讲得不太清楚。我想问问大家,For循环和While循环有什么不同。我查了很多资料,但我最困惑的是,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
如果我理解得没错,你的问题主要是关于一个内置函数 range
。
你可以在 这里详细了解这个函数,但简单来说,它会生成一组数字。
然后,代码 for i in range(...)
的意思就是:
对 range
生成的每一个数字 i
,都执行下面的操作...
1
你希望在循环里增加计数器的值,也就是说,计数器的增加要放在循环的内部。现在的问题是,你的 row
和 column
的增加是在循环外面的,这样它们在循环内部是不会变化的。这就导致了一个无限循环。
2
你的列增加语句(column += 1)放在了对应的while循环外面。
行增加语句也是一样。
现在,列的值会在循环结束后才增加。但其实你需要它在每次循环的时候就增加。
把这两个语句的缩进加深一点,你就可以了。
Box[r_ow][c_colu] = str(int(box[r_ow][c_col]) + ctr)
column += 1
row += 1
return board
另外,你的最内层while循环也有问题。
neighbors是一个列表(或者类似的东西),而ctr是一个整数。你不能把这两者进行比较。而且,ctr并不是在遍历neighbors的变量,它只是一个计数器。你可以这样做。
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