<p>您在问题中发布的代码没有绘制正方形,因为您在<code>pen.begin_fill()</code>之后没有任何海龟操作。在</p>
<p>可以按如下方式绘制填充正方形:</p>
<pre><code> turtle.begin_fill()
for i in range(4):
turtle.forward(1)
turtle.right(90)
turtle.end_fill()
</code></pre>
<p>伪代码实际上有个错误。偏移量计算<code>offset = row % 2</code>仅当<code>n</code>(行数)为偶数时才有效。当<code>n</code>为奇数时,伪代码无法计算方格位置。在</p>
<p>要使代码适用于<code>n</code>的奇偶值,可以按如下方式计算偏移量:</p>
^{pr2}$
<p>我已经在下面的代码中实现了这些更改。我还修改了程序的结构,在绘图函数之外定义了海龟,并将其作为参数传入。这使得我们只需设置海龟的速度和可见性设置一次,而不必在每个绘图函数中都这样做。在</p>
<pre><code>from turtle import*
# Ask the user for the size of the checkered flag (n).
def getSize():
size = eval(input('Please enter the size of the checkered flag: '))
return size
# Draw an n x n grid to the screen.
def drawGrid(turtle, n):
for i in range(0, n+1):
turtle.up()
turtle.goto(0, i)
turtle.down()
turtle.forward(n)
turtle.left(90)
for i in range(0, n+1):
turtle.up()
turtle.goto(i, 0)
turtle.down()
turtle.forward(n)
# Fill the square in the given row and column.
def fillSquare(turtle, row, col):
turtle.up()
turtle.goto(col, row)
turtle.begin_fill()
for i in range(4):
turtle.forward(1)
turtle.right(90)
turtle.end_fill()
def main():
# Get the user's input.
n = getSize()
# Set up the drawing coordinates.
screen = Screen()
screen.setworldcoordinates(-1, -1, 10, 10)
# Make a turtle object for use in drawing. Maximize its speed.
turtle = Turtle()
turtle.speed('fastest')
turtle.hideturtle()
# Draw the checkered flag.
drawGrid(turtle, n)
for i in range(0, n*n, 2):
row = i // n
offset = ~(n % 2) & (row % 2)
col = i % n + offset
fillSquare(turtle, row, col)
print('Hit Enter to quit.')
input()
main()
</code></pre>