我是 python 的新手。我需要为大学画这个形状,但我发现它真的很难,所以我在进入那个图像之前尝试做正方形。
无论如何这是我的问题:我怎样才能有 8 行? (1 行有 8 个正方形)我不能继续添加 def start_point1():
这不是正确的方法。
#!/usr/bin/python
import turtle as t
import time
def start_point():
t.penup()
t.setpos(-200,-240)
t.pendown()
def start_point1():
t.penup()
t.setpos(-200,-180)
t.pendown()
def draw_turtle():
for a in range(4):
t.forward(60)
t.left(90)
def draw_turtlerow():
for a in range(8):
draw_turtle()
t.forward(60)
def main():
start_point()
draw_turtlerow()
start_point1()
draw_turtlerow()
最佳答案
在这类问题中,您应该问自己什么是“原子”操作——一遍又一遍地重复——将生成完整的解决方案。您已经找到了基本的“原子”:绘制正方形的边:
t.forward(60)
现在,下一个级别的“原子性”是什么?好吧,一边重复四次,你就可以得到一个正方形(正如你自己正确发现的那样)
for a in range(4):
t.forward(60)
t.left(90)
现在沿着同样的思路,您可能会得出这样的结论:如果您将上述操作重复 8 次,您将得到一条线,如果您将一行重复 8 次,您将得到一个完整的棋盘。它应该是这样的:
for col in range(8):
for row in range(8):
# draw a square here
现在,您已经自己编写了绘制正方形的函数,唯一的问题是您需要在不同的位置绘制每个正方形。这里你必须关注的关键点是:你能想出一种方法来从 col
和 row
的值开始计算这个位置吗?
如果您遇到困难,我发布了一个示例实现 here ,我相信您不需要检查,但如果您这样做了,这里有额外的任务:不要按原样使用该代码,而是将内圈转为调用单独的函数 draw_square(row, col)
。
编辑:为了加分和自豪,完成练习后,观察棋盘上的大多数线条是如何一遍又一遍地重新绘制的。只需很少的努力,您就可以将程序的效率提高一倍。你能想到怎么做吗?
喂!
关于python - 我怎样才能画出一堆正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302942/