<blockquote>
<p>When I remove global, all the variables aren't defined for use and I
get errors. What can I do for that?</p>
</blockquote>
<p>我同意@anon(+1)关于全局变量和代码中的<code>eval()</code>的观点。下面是我对你的代码san全局变量的重新设计,你应该能够根据需要把它分成两个单独的文件。您需要(重新)阅读<code>global</code>关键字的作用和使用位置。我知道<code>eval()</code>在输入元组时很方便,但是您应该找到另一种方法。我将其他<code>eval()</code>调用替换为<code>int()</code>:</p>
<pre><code>import turtle
def drawRectangle(xLocation, yLocation, spaceX, spaceY):
turtle.penup()
turtle.goto(xLocation, yLocation)
turtle.pendown()
turtle.begin_fill()
for _ in range(2):
turtle.forward(spaceX)
turtle.left(90)
turtle.forward(spaceY)
turtle.left(90)
turtle.end_fill()
def drawAllRectangles(startX, startY, width, height):
""" Draw all rectangles to make up chessboard """
spaceX = width / 8
spaceY = height / 8
yLocation = startY
while yLocation <= (height - 2 * spaceY): # draw rectangles on rows 1, 3, 5, 7
xLocation = startX
while xLocation <= (width - 2 * spaceX):
drawRectangle(xLocation, yLocation, spaceX, spaceY)
xLocation += 2 * spaceX
yLocation += 2 * spaceY
turtle.penup()
turtle.goto(startX + spaceX, startY + spaceY)
turtle.pendown()
yLocation = startY + spaceY
while yLocation <= (height - spaceY): # draw rectangles on rows 2, 4, 6, 8
xLocation = startX + spaceX
while xLocation <= (width - spaceX):
drawRectangle(xLocation, yLocation, spaceX, spaceY)
xLocation += 2 * spaceX
yLocation += 2 * spaceY
def drawChessboard(startX, startY, width=250, height=250):
""" Draw outside border for chessboard """
turtle.penup()
turtle.goto(startX, startY)
turtle.pendown()
for _ in range(2):
turtle.forward(width)
turtle.left(90)
turtle.forward(height)
turtle.left(90)
drawAllRectangles(startX, startY, width, height)
def main():
startX, startY = eval(input("Enter the starting coordinates (x, y): "))
width = input("Enter the width: ")
height = input("Enter the height: ")
turtle.speed('fastest')
if width == "" and height == "":
drawChessboard(startX, startY)
elif height == "":
drawChessboard(startX, startY, width=int(width))
elif width == "":
drawChessboard(startX, startY, height=int(height))
else:
drawChessboard(startX, startY, int(width), int(height))
turtle.done()
main()
</code></pre>
<p>用pythonthurtle绘制棋盘并不需要太多代码和精力。我建议您研究一下<code>stamp()</code>,这样既可以加快速度又可以简化它。在</p>