python数据结构:递归可视化-分形树

1 Python的海龟作图系统turtlemodule

Python内置,随时可用,以LOGO语言的创意为基础
其意象为模拟海龟在沙滩上爬行而留下的足迹
爬行:forward(n); backward(n)
转向:left(a); right(a)
抬笔放笔:penup(); pendown()
笔属性:pensize(s); pencolor©
隐藏画笔:hideturtle()

import turtle
t=turtle.Turtle()
#作图开始
t.forward(100)
#作图结束
turtle.done()

2 海龟作图1:画正方形

import turtle

t=turtle.Turtle()

for i in range(4):
    t.forward(100)
    t.right(90)
    
turtle.done()

3 海龟作图2:画五角星

import turtle

t=turtle.Turtle() #开始作画

t.pencolor('red')
t.pensize(3)
for i in range(5):
    t.forward(100)
    t.right(144)

t.hideturtle()  #隐藏画笔
turtle.done()   #结束作画

4 递归作图-螺旋

import turtle

def drawSpiral(t,lineLen):
    if lineLen>0: #最小规模,0直接退出
        t.forward(lineLen)
        t.right(90)
        drawSpiral(t,lineLen-5) #减小规模,边长减5

t=turtle.Turtle()
drawSpiral(t,100)
turtle.done()

5 递归作图-分形树

import turtle

def tree(branch_len):
    if branch_len>5:          #树干太短不画,即递归结束条件
        t.forward(branch_len) #画树干
        t.right(20)           #右倾斜20度
        tree(branch_len-15)   #递归调用,画右边小树,树干减15
        t.left(40)            #向左回40度,即左倾斜20度
        tree(branch_len-15)   #递归调用,画左边小树,树干减15
        t.right(20)           #向右回20度,即回正
        t.backward(branch_len) # 海龟退回原位置
        
t=turtle.Turtle() #开始作画
t.left(90)
t.penup() #抬笔,移动时不绘画
t.backward(100)
t.pendown() #放笔
t.pencolor('green')
t.pensize(3)
tree(75)
t.hideturtle() #隐藏画笔
turtle.done()  #结束作画
发布了51 篇原创文章 · 获赞 34 · 访问量 910

猜你喜欢

转载自blog.csdn.net/weixin_43412569/article/details/104856309
今日推荐