python - 我怎样才能画出一堆正方形?

标签 python turtle-graphics

我是 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 的值开始计算这个位置吗?

如果您遇到困难,我发布了一个示例实现 here我相信您不需要检查,但如果您这样做了,这里有额外的任务:不要按原样使用该代码,而是将内圈转为调用单独的函数 draw_square(row, col)

编辑:为了加分和自豪,完成练习后,观察棋盘上的大多数线条是如何一遍又一遍地重新绘制的。只需很少的努力,您就可以将程序的效率提高一倍。你能想到怎么做吗?

喂!

关于python - 我怎样才能画出一堆正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302942/

相关文章:

python - 为什么要费心限制从 python 包导入的类型呢?

python - “用户”对象不可迭代

python - 按住键 - Python Turtle

python - 这行代码使程序对重启功能无 react

python - 使用Python中的Turtle模块将缩小的 turtle 向上移动窗口屏幕

python - 合并 DataFrame 时丢失的条目数

python - 使用 mod_wsgi 运行 Django 教程示例?

python - 使用 Array<Map<String,String>> 列读取 Parquet 文件

python - 如何使用 turtle 在Python中绘制谢尔宾斯基地毯

Python简单 turtle 程序