这个Python Turtle图形是如何形成的?

时间:2016-09-02 04:41:45

标签: python graphics turtle-graphics

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

10 Line Turtle Graphic

从我的问题你可能已经知道我不知道。我已经尝试了很多东西,但是我不知道她是如何用仅仅10行的这样的详细模式填充圆圈的。我已经放弃了自己搞清楚,而且我的朋友不会告诉我,所以任何可以产生10行产生相似图像的人都可以把它弄清楚:P

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

3 个答案:

答案 0 :(得分:2)

经过一些调整,我发现这个,我认为,它非常接近图像,精确的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()

first try

编辑还有更多,请用一行绘制,得到这个,这是我没想到的:

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()

draw with lines 用三角形绘制:

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()

draw with triangles

答案 1 :(得分:1)

感谢@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()

谢谢你们!

答案 2 :(得分:1)

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

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)
... 

输出:

enter image description here

这是您在问题中显示的输出的缩影示例。 基本上,工作方式是每次乌龟笔前进并返回时,笔会转动。这会重复多次,以创建那些“详细模式”。此外,你的朋友可能会误导你一点,因为这比十行短得多。