这个 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()
我的朋友向我展示了她使用 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()