1谢尔宾斯基三角形 1。1谢尔宾斯基三角形(英语:Sierpinskitriangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。 1。2瓦茨瓦夫弗朗西斯克谢尔宾斯基,1882年3月14日1969年10月21日,波兰数学家。 2python3。8turtle黑白版 2。1效果图1 2。2代码1代码来源:修改,增加,注释https:fishc。com。cnforum。php?modviewthreadordertype2tid151507importturtle定义谢尔宾斯基三角形函数defSierpinski(size,times,totalangle):times为0,就是外围大三角形iftimes0:turtle。fd(size)else:foranglein〔0,120,120,120,120〕:totalangleangleturtle。right(angle)totalangletotalangle180iftotalangle0:Sierpinski(size2,times1,totalangle)else:turtle。fd(size2)定义主函数defmain():窗口大小设置turtle。setup(800,800)提笔turtle。penup()去到这个坐标turtle。goto(300,300)落笔turtle。pendown()笔头大小turtle。pensize(2)转角,画外围三角形,先60,再120foranglein〔60,120〕:turtle。left(angle)turtle。fd(size)再转角120turtle。right(120)totalangle0Sierpinski(size,times,totalangle)隐藏画笔turtle。hideturtle()turtle。done()size600层数,推荐5times5timesint(input(请你输入层数05,推荐5:))主函数走起main() 2。3效果图2 2。4代码2功能:绘制谢尔宾斯基三角形环境:python3。7日期:201911421:49作者:指尖魔法师版本:1。0https:blog。csdn。netverayarticledetails86531715importturtleastdefsanjiaoxing(san):传入三个点坐标,绘制三角形t。penup()t。goto(san〔0〕)t。pendown()t。goto(san〔1〕)t。goto(san〔2〕)t。goto(san〔0〕)defgetmid(a,b):计算返回2个点的中间点坐标x(a〔0〕b〔0〕)2y(a〔1〕b〔1〕)2return〔x,y〕defdrawsan(size,i):绘制谢尔宾斯基三角形函数:paramsize:三个点坐标列表:parami:递归次数绘制三角形sanjiaoxing(size)ifi0:绘制左边小三角形size2〔size〔0〕,getmid(size〔0〕,size〔1〕),getmid(size〔0〕,size〔2〕)〕drawsan(size2,i1)绘制上边的小三角形size3〔getmid(size〔0〕,size〔2〕),getmid(size〔1〕,size〔2〕),size〔2〕〕drawsan(size3,i1)绘制右边的小三角形size4〔getmid(size〔0〕,size〔1〕),size〔1〕,getmid(size〔1〕,size〔2〕)〕drawsan(size4,i1)defmain():主函数打印图形标题t。penup()t。left(90)t。forward(350)t。pendown()t。write(谢尔宾斯基三角形,False,aligncenter,font(宋体,20,normal))t。speed(5)初始三角形坐标points〔〔200,0〕,〔200,0〕,〔0,300〕〕递归5次count5调用绘制谢尔宾斯基三角形函数drawsan(points,count)t。ht()addt。exitonclick()ifnamemain:main() 3python3。8turtle彩色版 3。1字典法效果图3 3。2代码3代码来源https:blog。csdn。netqq42907161articledetails108228487?utmmediumdistribute。pcrelevant。nonetaskblogbaidulandingword6spm1001。2101。3001。4242字典法importturtletturtle。Turtle()points{left:(200,100),top:(0,200),right:(200,100)}画三角形和填充颜色函数defdrawTriangle(points,color):t。fillcolor(color)t。penup()t。goto(points〔top〕)t。pendown()t。beginfill()t。goto(points〔left〕)t。goto(points〔right〕)t。goto(points〔top〕)t。endfill()取中点函数defgetMid(p1,p2):return((p1〔0〕p2〔0〕)2,(p1〔1〕p2〔1〕)2)画谢尔宾斯基三角形函数defsierpinski(degree,points):colormap〔blue,red,green,yellow,orange,gray〕ifdegree0:先画(挖掉)三角形drawTriangle({left:getMid(points〔left〕,points〔top〕),right:getMid(points〔right〕,points〔top〕),top:getMid(points〔right〕,points〔left〕)},colormap〔degree〕)再分别递归新生成的三个三角形sierpinski(degree1,{left:getMid(points〔left〕,points〔top〕),top:points〔top〕,right:getMid(points〔top〕,points〔right〕)})sierpinski(degree1,{left:points〔left〕,top:getMid(points〔left〕,points〔top〕),right:getMid(points〔left〕,points〔right〕)})sierpinski(degree1,{left:getMid(points〔left〕,points〔right〕),top:getMid(points〔top〕,points〔right〕),right:points〔right〕})drawTriangle(points,white)层数5个sierpinski(5,points)t。ht()最后将海龟隐藏起来turtle。done() 3。3效果图4 3。4代码4谢尔宾斯基三角形ByBigShuanghttps:github。comBigShuangrecursionwithturtleimportmathimportturtle颜色LineColorblackFillColors〔CAE1FF,FFEFDB,8470FF,FF6347,FFDEAD,C1FFC1〕最小绘制长度三角形最小边长Base10三角形边长TriSize250绘制速度MPS10初始化Turtle对象tturtle。Turtle()t。speed(MPS)t。hideturtle()递归函数画下一级别的三角形内部更小的defdrawnextone(triangle,kwargs):如果三角形边长大于最小绘制长度,退出递归ifgetedge(triangle)Base:return否则1根据三边中点绘制内部三角形a,b,ctriangle〔0:3〕ab,ac,bcget3mid(a,b,c)绘制三角形并填色depthkwargs。get(depth,0)iflen(triangle)4:depthtriangle〔3〕取对应深度的颜色colorIdxdepthlen(FillColors)colorFillColors〔colorIdx〕drawtri(ab,ac,bc,colorcolor)2得到三个更小的三角形,对这三个更小的三角形再次调用本函数drawnextone(a,ab,ac,depthdepth1)drawnextone(b,ab,bc,depthdepth1)drawnextone(c,ac,bc,depthdepth1)得到三角行三边边长defgetedge(triangle):triangle:〔(),(),()〕三点坐标组成的列表a,b,ctriangle〔0:3〕ax,ayabx,bybab2(axbx)2(ayby)2returnmath。sqrt(ab2)得到三边中点defget3mid(triangle):triangle:〔(),(),()〕三点坐标组成的列表a,b,ctriangleax,ayabx,bybcx,cyc得到三边中点的坐标ab((axbx)2,(ayby)2)ac((axcx)2,(aycy)2)bc((cxbx)2,(cyby)2)returnab,ac,bc根据顶点坐标绘制三角形,可选颜色defdrawtri(args,kwargs):三点坐标a,b,cargs填充颜色colorkwargs。get(color,None)t。penup()t。setpos(a)ifcolor:t。color(LineColor,color)t。beginfill()t。pendown()t。goto(b)t。goto(c)t。goto(a)t。penup()ifcolor:t。endfill()ifnamemain:edgeTriSizemath。sqrt(3)tri〔(TriSize,TriSize),(TriSize,TriSize),(0,edgeTriSize)〕a,b,ctridrawtri(a,b,c)drawnextone(a,b,c)turtle。done() 4一道中考题 4。1图:截图来自网络,仅供学习,如果侵权请联系,定删! 4。2解题: 图1:0层面积是1 图2:1层面积是34134 图3:2层面积是9163434 图4:3层面积是276491634 图5:4层面积是81256276434 自己整理出来,仅供学习。