我是Python的新手。我需要为大学绘制这种形状,但我发现这真的很难,所以我想在进入该图像之前尝试做方形。

无论如何,这是我的问题:我如何有8行? (1行中有8平方)我无法继续添加 def start_point1(): 这不是做到这一点的正确方法。

enter image description here

#!/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

现在,您已经为自己写了一个正方形的功能,唯一的问题是您需要在不同的位置绘制它们。您必须关注的关键点是: 您能想到一种从价值开始计算此位置的方法吗 colrow?

如果您卡住了,我发布了示例实现 这里, 我相信您不需要检查一下, ,但是如果这样做,这是额外的分配:而不是使用该代码原样,而是将内部圆圈转到单独的函数中 draw_square(row, col).

编辑: 为了加分和自豪,一旦完成练习, 观察检查板中的大多数线路一遍又一遍地重新编辑. 。几乎没有努力,您可以使程序的效率增加一倍。你能觉得如何吗?

恩!

其他提示

考虑将论点添加到 start_point 而不是创建函数的新版本。例如:

def start_point(x,y):
    t.penup()
    t.setpos(x,y)
    t.pendown()

这样,您可以消除 start_pos1() 您正在重复使用代码,这很好。

沿着这些线路,请考虑为您的其他功能增加一些灵活性。例如,为什么没有 draw_turtlerow 以一个数字告诉它在行中绘制多少个正方形?然后,您可以制作另一种方法,以获取所需的行数 - 此功能将调用 draw_turtlerowstart_pos 几次绘制整个网格。

我不确定这是您分配的正确方向,但我希望它将您指向正确的方向。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top