Python五边形万花筒
vlookup函数有格式要求吗本课时主要来学习一个Python趣味案例:螺旋万花筒。
正如用简单的几行代码就能编出一个好程序,简单的形状也可以组成复杂的画面。螺旋万花筒用代码把不同的形状和颜组合起来,让你创作出足以在画廊中展出的大师级作品。
一、游戏是如何运行的?
当你运行程序时,Python的海龟在屏幕上画圆圈,一个接一个。每次画圆圈的时候,乌龟都会改变圆圈的位置、角度、颜和大小。随着海龟的移动,一幅幅精彩的抽象画就慢慢地出现了。
看一组万花筒程序跑出来的作品效果:
二、工作原理
“螺旋万花筒”工作流程图
程序首先设置了一些执行过程中保持不变的值,如乌龟的速度,然后开始一个循环。在循环中,先选择一个新的画笔颜,画一个圆圈,旋转方向并且移动海龟,接着重复这几个步骤。当你退出程序时,它才会停止。
python代码画图案【工作原理分析】
为了让图案变得丰富多彩,这个作品使用了itertools模块中的cycle(函数。cycle(函数让循环通过颜列表,一遍又一遍。这样,你就可以很方便地使用不同的画笔颜。
三、开始画吧
首先我们要在屏幕上画一个圆,然后不断重复地画圆,但是每个圆都略有不同。
html空格是什么符号1、导入乌龟模块
import turtle
2、设置好乌龟属性
商品列表页面html模板turtle.bgcolor('light blue')turtle.speed('fast')turtle.pensize(4)
3、选择画笔颜,画一个圆圈
turtle.pencolor('red')turtle.circle(30)
4、画更多的圆圈
仅仅只画一个圆还不够,我们还需要很多。这里我们用到一个技巧,就是把画一个圆圈的代码放入一个函数,但是在其中添加一行让它调用自己。这个让函数重复调用自己的技巧就叫做递归。
import turtledef draw_circle(size):turtle.pencolor(‘red’) turtle.circle(size) draw_circle(size)turtle.bgcolor('light blue')turtle.speed('fast')turtle.pensize(4)draw_circle(30)
【知识卡片-递归】
当一个函数调用它自己的时候,就叫做“递归”。这是在程序中实现循环的另一种方式。运用递归时,我们通常要在每次调用函数的时候改变其参数。比如在螺旋万花筒作品中,函数每次调用自己时就要改变圆圈的尺寸、角度和位置。
5、先测试你的程序
这时候如果运行程序,你应该会看到海龟一遍又一遍地画着同样的圆。这似乎并不是我们所期待的。不过别担心,下面我们就会修正这个问题。个人博客不能备案
6、改变颜,增加尺寸
为了生成令人赞叹的图案,我们要对代码做一些修改,增加圆圈的尺寸,改变它的颜。这段代码使用了cycle(函数,它需要一个列表作为参数,它会返回一个特殊类型的列表——环。然后你可以用next(函数轮回地访问这个“环”。
import turtlefrom itertools import cyclecolors = cycle(['red', 'orange', 'yellow', 'green', 'blue', 'purple'])def draw_circle(size):turtle.pencolor(next(colors)) turtle.circle(size) draw_circle(size + 5)
再次运行程序:
这时候运行程序,你可以看到修改了圆圈的颜和尺寸,海龟不再一遍又一遍地画着同样的圆圈,而是重叠地画着不同颜和尺寸的圆圈。
7、改变圆圈的角度和位置,增强图案效果
def draw_circle(size, angle, shift):turtle.pencolor(next(colors)) turtle.circle(size) turtle.right(angle) turtle.forward(shift) draw_circle(size + 5, angle + 1, shift + 1)
再来运行程序,看看效果
四、查看完整代码
现在我们输入上述分析的代码,看看程序运行出来的效果吧
import turtlefrom itertools import cyclecolors = cycle(['red', 'orange', 'yellow', 'green', 'blue', 'purple'])def draw_circle(size, angle, shift):turtle.pencolor(next(colors)) turtle.circle(size) turtle.right(angle) turtle.forward(shift) draw_circle(size + 5, angle + 1, shift + 1)turtle.bgcolor('light blue')turtle.speed('fast')turtle.pensize(4)draw_circle(30, 0, 1)
五、修正与微调
当你程序运行得很顺利之后,你可以继续钻研你的代码,让它画出更神奇、更匪夷所思的
图案。
你可以更改线笔粗细,看看效果
你可以调整角度与位置,看看效果
django框架天下第六 详细教程你还可以在循环体中设置不断变换的背景颜,看看效果
六、最后,继续发挥你疯狂的想象力,探索新的图案吧。期待与我们一起分享你的成果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论