资讯详情

趣谈Python银杏树(初学者程序)

(看过我看过我的博客,第一段不一样):

在阅读文章之前,先看看你是不是这样的人:

1.我不能做辅导班的作业。我抄了其他博客,不知道是什么意思。我担心老师会让你上前告诉其他学生(没关系,我会在这里教你,然后你会教他们)

2.想学这个仁哥的程序,别人却看不懂(刷我的就对了)

3.踩我的(踩我)

4.想参考一下,打发时间(然后,你得好好看看我的程序)

二、分析分析

好吧,先看原图:

从事艺术的同志先别说我,这是计算机的问题,做出这么尴尬的事,我也没办法。

言归正传,电脑出来的,证明人是随机的 ,而不是我们在哪里计算角度,也责怪作者太懒,拒绝发送更多的……

三、加油!(代码第一段)

程序员怎么办?

import turtle import random from math import *  def Fibonacci_Recursion_tool(n):  #斐波那契数列法     if n <= 0:         return 0     elif n == 1:         return 1     else:         return Fibonacci_Recursion_tool(n - 1)   Fibonacci_Recursion_tool(n - 2) def Fibonacci_Recursion(n):     #生成斐波那契数列,并存入列表     result_list = []     for i in range(1, n   3):         result_list.append(Fibonacci_Recursion_tool(i))     return result_list yu = Fibonacci_Recursion(10)  #生成斐波契那数列 print(yu) 

这个代码是生成斐波那契数(说实话,你的银杏树不需要使用斐波那契数列,复制代码的学生可以告诉老师在网上看到这样的编辑,他们也这样做)。前三行不用说,引入三个模块(小乌龟,随机,数学)。从第五行开始就是动真格(我在黄金螺旋里讲过这个代码,看过的第三章可以跳过)。这个n是什么意思,是什么意思(斐波那契数列)?如果等于0,我们会回到0(return:如果等于一,则返回一。下面是什么意思-斐波那契数列中前两项之和等于这一项,前一项:第(项数-1)项,前两项:第(项数-2)项,然后再加起来。第一个兄弟解决了,还有一个等着你打开编辑戒指:首先,我问你,你知道这个函数的第二行,空列表是什么意思吗?——空列表实际上是一个柜子,你可以把东西塞进里面(子集中的空集),你添加一个元素,你愿意。这就像一家公司,原来没有人,你创建了这家公司,有一个大公司boss,然后你招聘员工,来一个,你公司的员工(人)多一个。这个理解,那我现在让你做一个统计你公司人的程序,你会做吗?——不,你不会把东西塞进任何列表。你不知道如何把大象塞进冰箱。你该怎么办?所以在这里我们要感谢PYTHON——列表(所有)增加了一个新功能——append。这个模块是额外的意思。想加几个就加几个,但是要说清楚加几个,不然电脑课听不懂。光说加几个,电脑基本蒙圈,还说要加什么,不然电脑基本报销。你看,我先用第一个函数做斐波那契数,然后把它列入列表。随着变量i的增加,斐波那契数也在增加。最忌讳形成列表,但会返回列表,然后赋值yu(当时我在想变量名,校友不小心碰了碰我的胳膊,就打出了这个东西,好吧,用这个做变量名吧)……

四、冲鸭!(代码第二段-画叶)

先看代码:

def leaf(x, y, node):#定义画叶的方法     til = turtle.heading()     i = random.random()     an = random.randint(10, 180)     ye = random.randint(6, 9)/10     turtle.color(ye, ye*0.9, 0)     turtle.fillcolor(ye 0.1, ye 0.05, 0)     turtle.pensize(1)     turtle.pendown()     turtle.setheading(an   90)     turtle.forward(8*i)     px = turtle.xcor()     py = turtle.ycor()     turtle.begin_fill()     turtle.circle(7.5*i, 120)  # 画一段120度的弧线     turtle.penup()  # 抬起笔来     turtle.goto(px, py)  # 回到圆点     turtle.setheading(an   90)  # 向上画     turtle.pendown()  # 落笔,开始画     turtle.circle(-7.5*i, 120)  # 画一段120度弧线     turtle.setheading(an   100)     turtle.circle(10.5*i, 150)     turtle.end_fill()  # 画一段150度弧线     turtle.penup()     turtle.goto(x, y)     turtle.setheading(til)     turtle.pensize(node / 2   1)

(好吧,直接去下面复制代码,对吧?

首先定义四个函数:til/i/an/ye

til取小乌龟头的方向值

i在0到1值中减去随机值

an在10到180之间随机取一个角度

ye就是随机取一种黄色(以后我们会用一些手段把它变成一种黄色(以后我们会用一些手段把它变成RGB所以不要惊慌)

以下两行,大家应该都能理解,就是去一种银杏叶的颜色,有没有学霸科普,银杏叶的黄色是什么?(抄代码的同学说这是自己调试的,也可以具体描述有多难,但不要过度。)然后下面是一些基础设施,然后进入画叶阶段。知道i有什么用,就是调一个边长。所以这个代码调试很重要,没有太高的技术含量。

有人会问:node是什么意思?他是一个笔大小的形式参数(我当时写这个好像没什么意义,就是画难度(网友笑评:增加推文长度的哈哈)

五、开挂(难的来了)!

嗯,每个人都必须先做好心理准备,不要被下面的长段吓坏:

def draw(node, length, level, yu, button):  #定义画树的方法     turtle.pendown()     t = cos(radians(turtle.heading() 5)) / 8   0.25     turtle.pencolor(t*1.6, t*1.2, t*1.4) #(r, g, b)颜色对应的RGB值     turtle.pensize(node/1.2)  #画笔尺寸     x = random.randint(0, 10)  #生成随机数决定是画树枝还是画落叶     if level == top and x > 6:  #此时画落叶,x范围太大会导致树太秃         turtle.forward(length)  # 画树枝         yu[level] = yu[level] - 1         c = random.randint(2, 10)         for i in range(1, c):             leaf(turtle.xcor(), turtle.ycor(), node)            # 添加0.落叶三倍             if random.random() > 0.3:                 turtle.penup()                # 飘落                 t1 = turtle.heading()                 an1 = -40   random.random() * 40                 turtle.setheading(an1)                 dis = int(800 * random.random() * 0.5   400 * random.random() * 0.3   200 * random.random() * 0.2)                 turtle.forward(dis)                 turtle.setheading(t1)                 turtle.right(90)                # 画叶子                 leaf(turtle.xcor(), turtle.ycor(), node)                 turtle.left(90)                # 返回                 t2 = turtle.heading()                 turtle.setheading(an1)                 turtle.backward(dis)                 turtle.setheading(t2)     elif level==top and x < 7 : #此时画枝叶,x太大的范围会导致落叶太少         turtle.penup()         turtle.forward(length)     elif level>3 and (x>6) :#三级以上树枝,执行以下策略的概率为40%         turtle.pendown()         turtle.forward(length)         c = random.randint(4, 6)        for i in range(3, c):
            leaf(turtle.xcor(), turtle.ycor(),node)
        leaf(turtle.xcor(), turtle.ycor(),node)
        button=1# jump"""
    else:
        turtle.forward(length)  # 画树枝
        yu[level] = yu[level] -1
    if node > 0 and button == 0:
        # 计算右侧分支偏转角度,在固定角度偏转增加一个随机的偏移量
        right = random.random() * 5 + 17
        # 计算左侧分支偏转角度,在固定角度偏转增加一个随机的偏移量
        left = random.random() * 20 + 19
        # 计算下一级分支的长度
        child_length = length * (random.random() * 0.25 + 0.7)
        # 右转一定角度,画右分支
        r=random.randint(0, 1)
        if r==1:
          turtle.right(right)
          level = level + 1
          #print("level", level)
        else:
          turtle.left(right)
          level = level + 1
          #print("level", level)
        draw(node - 1, child_length,level,yu,button)
        yu[level] = yu[level] +1
        if yu[level] > 1:
            # 左转一定角度,画左分支
            if r==1:
               turtle.left(right + left)
               draw(node - 1, child_length, level, yu,button)
               # 将偏转的角度,转回
               turtle.right(left)
               yu[level] = yu[level] - 1
            else:
                turtle.right(right + left)
                draw(node - 1, child_length, level, yu,button)
                # 将偏转的角度,转回
                turtle.left(left)
                yu[level] = yu[level] - 1
        else:
            if r==1:
              turtle.left(right + left)
              turtle.right(left)
            else:
                turtle.right(right + left)
                turtle.left(left)
    turtle.penup()
    #退回到上一级节点顶部位置
    turtle.backward(length)

其实咱将代码分个段其实就不难了:

def draw(node, length, level, yu, button):  #定义画树的方法
    turtle.pendown()
    t = cos(radians(turtle.heading()+5)) / 8 + 0.25
    turtle.pencolor(t*1.6, t*1.2, t*1.4) #(r, g, b)颜色对应的RGB值
    turtle.pensize(node/1.2)  #画笔的尺寸
    x = random.randint(0, 10)  #生成随机数决定要画树枝还是画飘落的叶子

这个其实就是一些比较基础的设置,这个x的作用就是……一会儿就知道了(随机数,决定是画叶子还是树干,还是都画……(其实上边都是由注释的)

 if level == top and x > 6:  #此时画飘落的叶子,x范围太大会导致树太秃
        turtle.forward(length)  # 画树枝
        yu[level] = yu[level] - 1
        c = random.randint(2, 10)
        for i in range(1, c):
            leaf(turtle.xcor(), turtle.ycor(), node)
           # 添加0.3倍的飘落叶子
            if random.random() > 0.3:
                turtle.penup()
               # 飘落
                t1 = turtle.heading()
                an1 = -40 + random.random() * 40
                turtle.setheading(an1)
                dis = int(800 * random.random() * 0.5 + 400 * random.random() * 0.3 + 200 * random.random() * 0.2)
                turtle.forward(dis)
                turtle.setheading(t1)
                turtle.right(90)
               # 画叶子
                leaf(turtle.xcor(), turtle.ycor(), node)
                turtle.left(90)
               # 返回
                t2 = turtle.heading()
                turtle.setheading(an1)
                turtle.backward(dis)
                turtle.setheading(t2)

好这是我们第一个选择结构的第一种情况,那么我们下面肯定是要设置一下这个里边的所有函数的,有不然这边所有的程序肯定是行不通的,top是这棵树最多有多少级,如果我们已经到这么多了,并且x==6的话,那么,我们就去画飘落的叶子+树干,还记得yu是什么鬼吗?没错,是斐波那契数列,所以说我们这棵树有一个名字,就叫“斐波那契树”(哈哈)那么下面我们引用了树叶的函数,让他重画叶子,在这其中,还有%30的可能性画飘落的叶子(random.random()去的是0~1之间的浮点数,所以说是三成的可能性。那我这个画飘落的叶子,肯定要有一个角度啊,你想想,飘落的叶子,肯定得距离树一段距离啊!所以说这一段代码就是如此一个写法,要给他一个角度,还要给他一段距离,才能让他画飘落的叶子。

elif level==top and x < 7 : #此时画枝叶,x范围太大会导致飘落的叶子太少
        turtle.penup()
        turtle.forward(length)

这个就不用讲了,就是画枝叶。

elif level>3 and (x>6) :#三级树枝以上,有40%的概率执行以下策略
        turtle.pendown()
        turtle.forward(length)
        c = random.randint(4, 6)
        for i in range(3, c):
            leaf(turtle.xcor(), turtle.ycor(),node)
        leaf(turtle.xcor(), turtle.ycor(),node)
        button=1# jump"""

首先我们有讲一讲,这个小海龟是如何知道我们要在树枝旁边画叶子的,这里需要用到一个代码,叫:turtle.xcor()和turtle.ycor()这俩是获取小海龟位置的,然后就在对应的位置上画一片叶子。

 else:
        turtle.forward(length)  # 画树枝
        yu[level] = yu[level] -1

最后,如果前面几种情况都不是,那就按部就班——画树枝。

if node > 0 and button == 0:
        # 计算右侧分支偏转角度,在固定角度偏转增加一个随机的偏移量
        right = random.random() * 5 + 17
        # 计算左侧分支偏转角度,在固定角度偏转增加一个随机的偏移量
        left = random.random() * 20 + 19
        # 计算下一级分支的长度
        child_length = length * (random.random() * 0.25 + 0.7)
        # 右转一定角度,画右分支
        r=random.randint(0, 1)
        if r==1:
          turtle.right(right)
          level = level + 1
          #print("level", level)
        else:
          turtle.left(right)
          level = level + 1
          #print("level", level)
        draw(node - 1, child_length,level,yu,button)
        yu[level] = yu[level] +1
        if yu[level] > 1:
            # 左转一定角度,画左分支
            if r==1:
               turtle.left(right + left)
               draw(node - 1, child_length, level, yu,button)
               # 将偏转的角度,转回
               turtle.right(left)
               yu[level] = yu[level] - 1
            else:
                turtle.right(right + left)
                draw(node - 1, child_length, level, yu,button)
                # 将偏转的角度,转回
                turtle.left(left)
                yu[level] = yu[level] - 1

又是一大段代码,得讲好一会了:

你知道这一段是干啥的吗,这一段是控制这个树生长的,具体的原理就是首先电脑去一个随机数,让后吧可能的数进行分类,一类执行这个,另一类执行那个,之哪一类执行什么,这还得你自己定,还有一种就是,让他随机走(通过一系列加减乘除来得出他最后的角度)。

 else:
            if r==1:
              turtle.left(right + left)
              turtle.right(left)
            else:
                turtle.right(right + left)
                turtle.left(left)
    turtle.penup()
    #退回到上一级节点顶部位置
    turtle.backward(length)

这个就是让他不要再枝叶间迷失方向,回家当指南用的。 

六,主程序

if __name__ == '__main__':
    turtle.setup(width=1.0, height=1.0) #设置全屏显示
    turtle.hideturtle()  # 隐藏turtle
    turtle.speed(0)  # 设置画笔移动的速度,0-10 值越小速度越快
    # turtle.tracer(0,0)      #设置动画的开关和延迟,均为0
    turtle.penup()  # 抬起画笔
    turtle.left(90)  # 默认方向为朝x轴的正方向,左转90度则朝上
    turtle.backward(300)  # 设置turtle的位置,朝下移动300
    top = 9  #树高
    yu = Fibonacci_Recursion(top)  #生成斐波那契数列
    yu.remove(yu[0])
    #print(yu) 打印斐波那契数列
    button = 0
    draw(top, 120, 0, yu, button)  # 调用函数开始绘制
    turtle.write("      wsw", font=("微软雅黑", 14, "normal")) #生成签名
    turtle.done()

由于我当时做的注释比较齐全就不增加推文长度了……

七,抄代码同学的福利

import turtle

import random

from math import *
def Fibonacci_Recursion_tool(n):  #斐波那契数列方法
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return Fibonacci_Recursion_tool(n - 1) + Fibonacci_Recursion_tool(n - 2)
def Fibonacci_Recursion(n):     #生成斐波那契数列,并存入列表
    result_list = []
    for i in range(1, n + 3):
        result_list.append(Fibonacci_Recursion_tool(i))
    return result_list
yu = Fibonacci_Recursion(10)  #生成斐波契那数列
print(yu)
def leaf(x, y, node):#定义画叶子的方法
    til = turtle.heading()
    i = random.random()
    an = random.randint(10, 180)
    ye = random.randint(6, 9)/10
    turtle.color(ye, ye*0.9, 0)
    turtle.fillcolor(ye+0.1, ye+0.05, 0)
    turtle.pensize(1)
    turtle.pendown()
    turtle.setheading(an + 90)
    turtle.forward(8*i)
    px = turtle.xcor()
    py = turtle.ycor()
    turtle.begin_fill()
    turtle.circle(7.5*i, 120)  # 画一段120度的弧线
    turtle.penup()  # 抬起笔来
    turtle.goto(px, py)  # 回到圆点位置
    turtle.setheading(an + 90)  # 向上画
    turtle.pendown()  # 落笔,开始画
    turtle.circle(-7.5*i, 120)  # 画一段120度的弧线
    turtle.setheading(an + 100)
    turtle.circle(10.5*i, 150)
    turtle.end_fill()  # 画一段150度的弧线
    turtle.penup()
    turtle.goto(x, y)
    turtle.setheading(til)
    turtle.pensize(node / 2 + 1)
def draw(node, length, level, yu, button):  #定义画树的方法
    turtle.pendown()
    t = cos(radians(turtle.heading()+5)) / 8 + 0.25
    turtle.pencolor(t*1.6, t*1.2, t*1.4) #(r, g, b)颜色对应的RGB值
    turtle.pensize(node/1.2)  #画笔的尺寸
    x = random.randint(0, 10)  #生成随机数决定要画树枝还是画飘落的叶子
    if level == top and x > 6:  #此时画飘落的叶子,x范围太大会导致树太秃
        turtle.forward(length)  # 画树枝
        yu[level] = yu[level] - 1
        c = random.randint(2, 10)
        for i in range(1, c):
            leaf(turtle.xcor(), turtle.ycor(), node)
           # 添加0.3倍的飘落叶子
            if random.random() > 0.3:
                turtle.penup()
               # 飘落
                t1 = turtle.heading()
                an1 = -40 + random.random() * 40
                turtle.setheading(an1)
                dis = int(800 * random.random() * 0.5 + 400 * random.random() * 0.3 + 200 * random.random() * 0.2)
                turtle.forward(dis)
                turtle.setheading(t1)
                turtle.right(90)
               # 画叶子
                leaf(turtle.xcor(), turtle.ycor(), node)
                turtle.left(90)
               # 返回
                t2 = turtle.heading()
                turtle.setheading(an1)
                turtle.backward(dis)
                turtle.setheading(t2)
    elif level==top and x < 7 : #此时画枝叶,x范围太大会导致飘落的叶子太少
        turtle.penup()
        turtle.forward(length)
    elif level>3 and (x>6) :#三级树枝以上,有40%的概率执行以下策略
        turtle.pendown()
        turtle.forward(length)
        c = random.randint(4, 6)
        for i in range(3, c):
            leaf(turtle.xcor(), turtle.ycor(),node)
        leaf(turtle.xcor(), turtle.ycor(),node)
        button=1# jump"""
    else:
        turtle.forward(length)  # 画树枝
        yu[level] = yu[level] -1
    if node > 0 and button == 0:
        # 计算右侧分支偏转角度,在固定角度偏转增加一个随机的偏移量
        right = random.random() * 5 + 17
        # 计算左侧分支偏转角度,在固定角度偏转增加一个随机的偏移量
        left = random.random() * 20 + 19
        # 计算下一级分支的长度
        child_length = length * (random.random() * 0.25 + 0.7)
        # 右转一定角度,画右分支
        r=random.randint(0, 1)
        if r==1:
          turtle.right(right)
          level = level + 1
          #print("level", level)
        else:
          turtle.left(right)
          level = level + 1
          #print("level", level)
        draw(node - 1, child_length,level,yu,button)
        yu[level] = yu[level] +1
        if yu[level] > 1:
            # 左转一定角度,画左分支
            if r==1:
               turtle.left(right + left)
               draw(node - 1, child_length, level, yu,button)
               # 将偏转的角度,转回
               turtle.right(left)
               yu[level] = yu[level] - 1
            else:
                turtle.right(right + left)
                draw(node - 1, child_length, level, yu,button)
                # 将偏转的角度,转回
                turtle.left(left)
                yu[level] = yu[level] - 1
        else:
            if r==1:
              turtle.left(right + left)
              turtle.right(left)
            else:
                turtle.right(right + left)
                turtle.left(left)
    turtle.penup()
    #退回到上一级节点顶部位置
    turtle.backward(length)
"""    
5.主函数部分
主函数中直接调用上述函数就行,top控制树的高度,turtle.speed控制画的速度,最后的turtle.write()用来书写最下方的签名。

```clike
"""
if __name__ == '__main__':
    turtle.setup(width=1.0, height=1.0) #设置全屏显示
    turtle.hideturtle()  # 隐藏turtle
    turtle.speed(0)  # 设置画笔移动的速度,0-10 值越小速度越快
    # turtle.tracer(0,0)      #设置动画的开关和延迟,均为0
    turtle.penup()  # 抬起画笔
    turtle.left(90)  # 默认方向为朝x轴的正方向,左转90度则朝上
    turtle.backward(300)  # 设置turtle的位置,朝下移动300
    top = 9  #树高
    yu = Fibonacci_Recursion(top)  #生成斐波那契数列
    yu.remove(yu[0])
    #print(yu) 打印斐波那契数列
    button = 0
    draw(top, 120, 0, yu, button)  # 调用函数开始绘制
    turtle.write("      wsw", font=("微软雅黑", 14, "normal")) #生成签名
    turtle.done()

没登陆不好复制的代码在这里:

import turtle

import random

from math import * def Fibonacci_Recursion_tool(n):  #斐波那契数列方法     if n <= 0:         return 0     elif n == 1:         return 1     else:         return Fibonacci_Recursion_tool(n - 1) + Fibonacci_Recursion_tool(n - 2) def Fibonacci_Recursion(n):     #生成斐波那契数列,并存入列表     result_list = []     for i in range(1, n + 3):         result_list.append(Fibonacci_Recursion_tool(i))     return result_list yu = Fibonacci_Recursion(10)  #生成斐波契那数列 print(yu) def leaf(x, y, node):#定义画叶子的方法     til = turtle.heading()     i = random.random()     an = random.randint(10, 180)     ye = random.randint(6, 9)/10     turtle.color(ye, ye*0.9, 0)     turtle.fillcolor(ye+0.1, ye+0.05, 0)     turtle.pensize(1)     turtle.pendown()     turtle.setheading(an + 90)     turtle.forward(8*i)     px = turtle.xcor()     py = turtle.ycor()     turtle.begin_fill()     turtle.circle(7.5*i, 120)  # 画一段120度的弧线     turtle.penup()  # 抬起笔来     turtle.goto(px, py)  # 回到圆点位置     turtle.setheading(an + 90)  # 向上画     turtle.pendown()  # 落笔,开始画     turtle.circle(-7.5*i, 120)  # 画一段120度的弧线     turtle.setheading(an + 100)     turtle.circle(10.5*i, 150)     turtle.end_fill()  # 画一段150度的弧线     turtle.penup()     turtle.goto(x, y)     turtle.setheading(til)     turtle.pensize(node / 2 + 1) def draw(node, length, level, yu, button):  #定义画树的方法     turtle.pendown()     t = cos(radians(turtle.heading()+5)) / 8 + 0.25     turtle.pencolor(t*1.6, t*1.2, t*1.4) #(r, g, b)颜色对应的RGB值     turtle.pensize(node/1.2)  #画笔的尺寸     x = random.randint(0, 10)  #生成随机数决定要画树枝还是画飘落的叶子     if level == top and x > 6:  #此时画飘落的叶子,x范围太大会导致树太秃         turtle.forward(length)  # 画树枝         yu[level] = yu[level] - 1         c = random.randint(2, 10)         for i in range(1, c):             leaf(turtle.xcor(), turtle.ycor(), node)            # 添加0.3倍的飘落叶子             if random.random() > 0.3:                 turtle.penup()                # 飘落                 t1 = turtle.heading()                 an1 = -40 + random.random() * 40                 turtle.setheading(an1)                 dis = int(800 * random.random() * 0.5 + 400 * random.random() * 0.3 + 200 * random.random() * 0.2)                 turtle.forward(dis)                 turtle.setheading(t1)                 turtle.right(90)                # 画叶子                 leaf(turtle.xcor(), turtle.ycor(), node)                 turtle.left(90)                # 返回                 t2 = turtle.heading()                 turtle.setheading(an1)                 turtle.backward(dis)                 turtle.setheading(t2)     elif level==top and x < 7 : #此时画枝叶,x范围太大会导致飘落的叶子太少         turtle.penup()         turtle.forward(length)     elif level>3 and (x>6) :#三级树枝以上,有40%的概率执行以下策略         turtle.pendown()         turtle.forward(length)         c = random.randint(4, 6)         for i in range(3, c):             leaf(turtle.xcor(), turtle.ycor(),node)         leaf(turtle.xcor(), turtle.ycor(),node)         button=1# jump"""     else:         turtle.forward(length)  # 画树枝         yu[level] = yu[level] -1     if node > 0 and button == 0:         # 计算右侧分支偏转角度,在固定角度偏转增加一个随机的偏移量         right = random.random() * 5 + 17         # 计算左侧分支偏转角度,在固定角度偏转增加一个随机的偏移量         left = random.random() * 20 + 19         # 计算下一级分支的长度         child_length = length * (random.random() * 0.25 + 0.7)         # 右转一定角度,画右分支         r=random.randint(0, 1)         if r==1:           turtle.right(right)           level = level + 1           #print("level", level)         else:           turtle.left(right)           level = level + 1           #print("level", level)         draw(node - 1, child_length,level,yu,button)         yu[level] = yu[level] +1         if yu[level] > 1:             # 左转一定角度,画左分支             if r==1:                turtle.left(right + left)                draw(node - 1, child_length, level, yu,button)                # 将偏转的角度,转回                turtle.right(left)                yu[level] = yu[level] - 1             else:                 turtle.right(right + left)                 draw(node - 1, child_length, level, yu,button)                 # 将偏转的角度,转回                 turtle.left(left)                 yu[level] = yu[level] - 1         else:             if r==1:               turtle.left(right + left)               turtle.right(left)             else:                 turtle.right(right + left)                 turtle.left(left)     turtle.penup()     #退回到上一级节点顶部位置     turtle.backward(length) """     5.主函数部分 主函数中直接调用上述函数就行,top控制树的高度,turtle.speed控制画的速度,最后的turtle.write()用来书写最下方的签名。

```clike """ if __name__ == '__main__':     turtle.setup(width=1.0, height=1.0) #设置全屏显示     turtle.hideturtle()  # 隐藏turtle     turtle.speed(0)  # 设置画笔移动的速度,0-10 值越小速度越快     # turtle.tracer(0,0)      #设置动画的开关和延迟,均为0     turtle.penup()  # 抬起画笔     turtle.left(90)  # 默认方向为朝x轴的正方向,左转90度则朝上     turtle.backward(300)  # 设置turtle的位置,朝下移动300     top = 9  #树高     yu = Fibonacci_Recursion(top)  #生成斐波那契数列     yu.remove(yu[0])     #print(yu) 打印斐波那契数列     button = 0     draw(top, 120, 0, yu, button)  # 调用函数开始绘制     turtle.write("      wsw", font=("微软雅黑", 14, "normal")) #生成签名     turtle.done() 好,我们下期再见

标签: 075k1l100只电阻器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台