这个 Python 乌龟图形是如何制作的?

How was this Python Turtle graphic made?

我的朋友向我展示了她使用 Python 的内置 Turtle module 制作的这张令人惊叹的图像,并向我提出挑战,要求我了解它是如何制作的。她给了我一个提示:图像是用 10 行代码制作的。

从我的问题中你可能已经知道我毫无头绪。我已经尝试了一大堆东西,但我不知道她是如何在仅 10 行的情况下用 如此 详细的图案制作一个填充圆圈的。我已经放弃自己弄清楚了,我的朋友也不会告诉我,所以任何能写出 10 行来制作相似图像的人都会得到所有的功劳:P

注意:我不确定这是否适合 Whosebug,所以我很乐意在别处询问(让我知道),但是这个 使用 Python 代码,所以我认为编程论坛上的某个人可能有解决它的经验。

感谢@citaret 和@JerryJeremiah 的建议,我能够在不到 10 行的时间内将产生与图像相似结果的东西放在一起:

from turtle import Turtle, Screen
mr_turtle = Turtle()
screen = Screen()
mr_turtle.speed(0)
for i in range(1800):
    mr_turtle.forward(300)
    mr_turtle.right(179.9)
screen.exitonclick()

谢谢大家!

以下是我认为您正在寻找的内容:

Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import turtle
>>> t = turtle.Pen()
>>> for i in range(1000):
...     t.forward(100)
...     t.backward(100)
...     t.left(79)
... 

输出:

这是您在问题中显示的输出的微型示例。 基本上,它的工作方式是每次乌龟笔前进和返回时,笔都会转动。这会重复多次,以创建那些 'detailed patterns'。另外,您的朋友可能误导您了,因为这比十行要短得多。

经过一些调整,我发现这个,我认为它非常接近图像,正好有 10 行。

import turtle
bob = turtle.Turtle()
bob.speed(0)
for i in range(632):
    bob.forward(200)
    bob.right(1)
    bob.forward(100)
    bob.setpos(0,0)
    bob.left(1.57)
turtle.done()

编辑:还有很多,单线画,搞定这个,没想到:

import turtle
bob = turtle.Turtle()
bob.speed(0)
for i in range(1080):
    bob.forward(300)
    bob.setpos(0,0)
    bob.left(0.33333)
turtle.done()

并绘制三角形:

import turtle
bob = turtle.Turtle()
bob.speed(0)
for i in range(720):
    bob.forward(50)
    bob.right(19)
    bob.forward(250)
    bob.setpos(0,0)
    bob.left(19.5)
turtle.done()