龟图形是一种向孩子介绍编程的流行方式。它是Wally Feurzeig,Seymour Papert和Cynthia Solomon在1967年开发的原始徽标编程语言的一部分。
官方文档:https://docs.python.org/3/library/turtle.html
在线调试网址: https://repl.it/languages/python_turtle
import turtle
import math
bob = turtle.Turtle()
ps:math是为了后续调进行计算的操作
def rectangle(t,length):
for i in range(4):
t.fd(length)
t.lt(90)
fd->forward->向前移动
lt->left turn->左转
def circle(t,r):
n_of_edge=70
circle_length = 2*math.pi*r
angle = 360.0/n_of_edge
length_of_edge = circle_length/n_of_edge
for _ in range(int(n_of_edge)):
t.fd(length_of_edge)
t.lt(angle)
fd->forward->向前移动
lt->left turn->左转
此时的圆形只是近似生成。
我们知道如果一个有方向的箭头,围绕着圆形的切线方向走一圈,会回到原始的朝向,任意给定一个零度的参考,他将回到最开始的角度。
也就是说他在整个圆上走一圈,转了360度。
我们画一个圆形其实是一种近似的思想。边越多越接近一个圆形。假设每个圆形上有70条边,那么每次转动的角度就是 360 70 \frac{360}{70} 70360 .
又因为圆形的半径(radious)为 r r r, 那么周长就是 2 × π × r 2\times \pi \times r 2×π×r 。
每次调用fd向当前方向前进的距离,也就是每条边的长度为: 2 × π × r 70 \frac{2\times \pi \times r}{70} 702×π×r.
def arc(t,r):
n_of_edge=700
circle_length = 2*math.pi*r
angle = 360.0/n_of_edge
length_of_edge = circle_length/n_of_edge
for _ in range(int(n_of_edge)/2):
t.fd(length_of_edge)
t.lt(angle)
fd->forward->向前移动
lt->left turn->左转
画圆弧只需要控制前进,旋转组合的执行次数即可。
即控制for循环的执行次数。
import turtle
import math
bob = turtle.Turtle()
def rectangle(t,length):
for i in range(4):
t.fd(length)
t.lt(90)
def circle(t,r):
n_of_edge=70
circle_length = 2*math.pi*r
angle = 360.0/n_of_edge
length_of_edge = circle_length/n_of_edge
for _ in range(int(n_of_edge)):
t.fd(length_of_edge)
t.lt(angle)
def arc(t,r):
n_of_edge=700
circle_length = 2*math.pi*r
angle = 360.0/n_of_edge
length_of_edge = circle_length/n_of_edge
for _ in range(int(n_of_edge)/2):
t.fd(length_of_edge)
t.lt(angle)
# circle(bob,70)
arc(bob,70)
# rectangle(bob,60)