博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础(一)之分形树(递归的用法)
阅读量:4100 次
发布时间:2019-05-25

本文共 1962 字,大约阅读时间需要 6 分钟。

写在前面:python是高级语言,相对于java,c等语言便捷性和可读性大大提高,笔者从基础开始接触python语法。

题意

  • 分形几何的基本思想:
    局部是整体成比例缩小后的形态,客观事物具有相似的层次结构,
    局部与整体在统计意义上具有相似性。
    总而言之,就是将局部放大后的图形与先前图形相似。
  • 递归函数的必备因素:
    重复单元、停止条件(各函数逐层结束运算,返回计算结果)

补充

turtle库

  • 基础操作:

    turtle.forward(distance)画笔向前移动distance距离
    turtle.backward(distance)画笔向后移动distance距离
    turtle.right(degree)画笔向右旋转degree度
    turtle.exitonclick()点击关闭图形窗口

  • 画笔控制函数补充:

    turtle.penup() 抬起画笔,之后移动画笔不绘制形状
    turtle.pendown() 落下画笔,之后移动画笔绘制形状
    turtle.pensize() 设置画笔宽度
    turtle.pencolor() 设置画笔颜色,常用的颜色:
    whilte, black, grey, darkgreen, gold, violet, purple

python基本语法等

  • 注释
    整体注释 Ctrl+/
    单行注释:#
    多行注释:’’’ ‘’’
  • 字符串索引访问
    字符串正反向索引实例
    字符串正向索引:0开始
    字符串反向索引:-1开始
    区间索引
    [A:B] 从A开始到B,不包含B
    前3位:s[:3]
    后3位:s[-3:]
  • 快捷键
    整体缩进:tab + /
    缩进回退:tab+shift
    (注:python中没有{},缩进很重要!!!)
  • 其它
    字符串转换为数字:eval()
    占位符:pass
    幂次方计算:** (例:2**10 为 1024)
  • 条件语句
    if  <条件1>:
       <语句1>
    elif  <条件2>:
         <语句2>
    else:
        <语句N>
    while (<条件>):
       <语句块1>
       <语句块2>
  • 函数定义
    def <函数名>(<参数列表>):
       <函数体>
       return <返回值列表>
  • lambda函数
    <函数名> = lambda<参数列表>:<表达式>
    (注:用于简单的、能在一行内表示的函数,表达式结果为返回值)
  • main()函数的调用
if __name__ == '__main__':    main()

分形树的实现

"""    作者:crystalcreator    功能:利用递归函数绘制分形树(树枝部分为绿色)    版本:1.0    日期:03/03/2020"""import turtledef draw_branch(branch_length):    """        绘制分析树    """    if branch_length > 5:        #绘制右侧树枝          #判断画笔颜色        if branch_length <30:            turtle.color("green")        else:            turtle.color("brown")        turtle.forward(branch_length)        turtle.right(20)        draw_branch(branch_length - 15)        #绘制左侧树枝        turtle.left(40)        draw_branch(branch_length - 15)        #返回之前的树枝          #判断画笔颜色        if branch_length <30:            turtle.color("green")        else:            turtle.color("brown")        turtle.right(20)        turtle.backward(branch_length)def main():    """        主函数:     """    turtle.left(90)    turtle.penup()    turtle.backward(150)    turtle.pendown()    draw_branch(100)    turtle.exitonclick()if __name__ == '__main__':    main()

效果如图:

分形树效果图

END

转载地址:http://jpzsi.baihongyu.com/

你可能感兴趣的文章
卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!
查看>>
厉害了!Python 编辑器界的神器 Jupyter ,推出官方可视化 Debug 工具!
查看>>
卧槽!Java 虚拟机竟然还有这些性能调优技巧...
查看>>
听说玩这些游戏能提升编程能力?
查看>>
7 年工作经验,面试官竟然还让我写算法题???
查看>>
被 Zoom 逼疯的歪果仁,造出了视频会议机器人,同事已笑疯丨开源
查看>>
上古语言从入门到精通:COBOL 教程登上 GitHub 热榜
查看>>
再见,Eclipse...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>
当你无聊时,可以玩玩 GitHub 上这个开源项目...
查看>>
B 站爆红的数学视频,竟是用这个 Python 开源项目做的!
查看>>
安利 10 个让你爽到爆的 IDEA 必备插件!
查看>>
自学编程的八大误区!克服它!
查看>>
GitHub 上的一个开源项目,可快速生成一款属于自己的手写字体!
查看>>
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>