<p>作为示例给出的两个示例代码的问题是,您只使用了一个循环。</p>
<p>一个可能有助于解决(编程)问题的“诀窍”是试图描述你将如何“用手”做这件事。在这里,要绘制网格,应该从第一列的第1行绘制到第H行的单元格,然后对第2列再次绘制,依此类推。</p>
<p>在pseuso代码中:</p>
<pre><code>HEIGHT = 5
WIDTH = 6
current_row = 0
current_column = 0
# Draw the first column
while current_row < HEIGHT:
draw_cell(current_column, current_row)
current_row += 1
# Draw next column column
current_column += 1
while current_row < HEIGHT:
draw_cell(current_column, current_row)
current_row += 1
# ...
# ... and so on until last column
current_column += 1
while current_row < HEIGHT:
draw_cell(current_column, current_row)
current_row += 1
</code></pre>
<p>显然,有很多重复的<em>相同的</em>代码。这需要<em>嵌套</em>循环。这是你在另一个循环中的第一个循环:</p>
<pre><code>HEIGHT = 5
WIDTH = 6
current_row = 0
current_column = 0
# For each column
while current_column < WIDTH:
# Draw the column
while current_row < HEIGHT:
draw_cell(current_column, current_row)
current_row += 1
# The "inner" loop is done.
# Time to go to the next column
current_column += 1
</code></pre>
<p>这里我使用了一个<code>while</code>循环,因为它似乎是您喜欢的。但正如其他人已经说过的,这种事情的“自然”工具是<code>for</code>循环。</p>