Python 我怎样才能画出一堆正方形?
我对python非常陌生。我需要为大学画这个形状,但我发现它真的很难,所以在进入那个图像之前我试着画正方形 无论如何,我的问题是:我怎么能有8行?(一行中有8个正方形)我不能继续添加Python 我怎样才能画出一堆正方形?,python,turtle-graphics,Python,Turtle Graphics,我对python非常陌生。我需要为大学画这个形状,但我发现它真的很难,所以在进入那个图像之前我试着画正方形 无论如何,我的问题是:我怎么能有8行?(一行中有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 st
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()
考虑向
起点添加参数,而不是创建新版本的
功能。例如:
def start_point(x,y):
t.penup()
t.setpos(x,y)
t.pendown()
这样,您就可以消除start_pos1()
并重用代码,这很好
沿着这些线,考虑到你的其他功能也增加一些灵活性。例如,为什么不让draw\u turtlerow
取一个数字,告诉它在这一行中要画多少个正方形?然后,您可以使用另一种方法来获取所需的行数-该函数将调用draw\u turtlerow
和start\u pos
多次来绘制整个网格
我不确定这是否是您作业的正确方向,但我希望它为您指明了正确的方向。考虑向起点添加参数,而不是创建新版本的
功能。例如:
def start_point(x,y):
t.penup()
t.setpos(x,y)
t.pendown()
这样,您就可以消除start_pos1()
并重用代码,这很好
沿着这些线,考虑到你的其他功能也增加一些灵活性。例如,为什么不让draw\u turtlerow
取一个数字,告诉它在这一行中要画多少个正方形?然后,您可以使用另一种方法来获取所需的行数-该函数将调用draw\u turtlerow
和start\u pos
多次来绘制整个网格
我不确定这对你的任务来说是否是正确的方向,但我希望它为你指明了正确的方向。在这种问题中,你应该问问自己,什么是“原子”操作——反复重复——将生成完整的解决方案。您已经找到了基本的“原子”:绘制正方形的边:
t.forward(60)
那么,“原子性”的下一个层次是什么?好吧,每边重复四次,你可以得到一个正方形(正如你自己正确发现的那样)
现在,按照同样的思路,你可能会得出结论,如果你重复上面的8次,你会得到一条线,如果你重复8次,你会得到一个完整的检查板。应该是这样的:
for col in range(8):
for row in range(8):
# draw a square here
现在,您已经编写了绘制正方形的函数,唯一的问题是您需要在不同的位置绘制每个正方形。这里您必须关注的关键点是:您能想出一种方法,从col
和row
的值开始计算此位置吗?
如果您陷入困境,我发布了一个示例实现,我相信您不需要检查它,但是如果您检查了,这里有一个额外的任务:在调用一个单独的函数draw_square(row,col)
时,不要按原样使用该代码,而是转动内圈
编辑:为了获得额外的分数和自豪感,完成练习后,观察检查板中的大多数线条是如何反复绘制的。只需很少的努力,您就可以将程序的效率提高一倍。你能想想怎么做吗
嗯 在这类问题中,你应该问问自己,什么是“原子”操作——反复重复——将生成完整的解决方案。您已经找到了基本的“原子”:绘制正方形的边:
t.forward(60)
那么,“原子性”的下一个层次是什么?好吧,每边重复四次,你可以得到一个正方形(正如你自己正确发现的那样)
现在,按照同样的思路,你可能会得出结论,如果你重复上面的8次,你会得到一条线,如果你重复8次,你会得到一个完整的检查板。应该是这样的:
for col in range(8):
for row in range(8):
# draw a square here
现在,您已经编写了绘制正方形的函数,唯一的问题是您需要在不同的位置绘制每个正方形。这里您必须关注的关键点是:您能想出一种方法,从col
和row
的值开始计算此位置吗?
如果您陷入困境,我发布了一个示例实现,我相信您不需要检查它,但是如果您检查了,这里有一个额外的任务:在调用一个单独的函数draw_square(row,col)
时,不要按原样使用该代码,而是转动内圈
编辑:为了获得额外的分数和自豪感,完成练习后,观察检查板中的大多数线条是如何反复绘制的。只需很少的努力,您就可以将程序的效率提高一倍。你能想想怎么做吗
嗯 打个圈怎么样?可以计算起点/终点坐标,并将其作为参数传递给循环中的绘图函数。一个循环可以遍历任意多个元素。问问你自己,这画了什么?它和我期望的有什么不同?一个循环怎么样?可以计算起点/终点坐标,并将其作为参数传递给循环中的绘图函数。一个循环可以遍历任意多个元素。问问你自己,这画了什么?这和我期望的有什么不同?非常感谢。我设法使正方形工作,但我不知道如何画出那个形状。我还在努力:)非常感谢。我设法使正方形工作,但我不知道如何画出那个形状。我还在努力:)