零基础学编程015:画些有趣的图案

从《零基础学编程014:小海龟做画》中我们学会了基本的做图命令,只需要用上循环语句,就可以画出比较复杂的图案来,比如:

from turtle import *

for i in range(255) :
    forward(50 + i)
    left(100)

这里总共循环255次,每次步子迈得大了一点点,每走一步之后左转100度,画出来的图案就是这样:

小海龟走得是不是太慢?可以按组合键CTRL + C 中断程序的运行,在for语句前加上speed(9) 可以让小海龟以最快的速度做画。不过中断之后,屏幕上已经被画乱了,需要用reset() 清空画布。完整的代码是:

from turtle import *

reset()   # 把画布清空,小海龟回到初始点
speed(9)  # 最快速度为9,最慢速度为1
for i in range(255) :
    forward(50 + i)
    left(100)

这里写了2行注释,程序员为了让别人或者是几个月之后的自己能够看懂程序,会加上一些解释说明。这是一种良好的编程习惯,黑客只要看你写过的注释,基本就能判断出你的编程水平。Python中的单行注释非常简单,在#符号之后的全是注释,只是给人类阅读的,计算机会忽略这些字符。

把旋转角度从100换成99,可以得到不同的图案:

还可以加点颜色变化,请自行试验:

from turtle import *

reset()
speed(9)

for i in range(255) :
    colormode(255)    # 颜色分量值不超过255
    pencolor(i, i, i) # 画笔颜色会越来越淡
    forward(50 + i)
    left(99)

colormode(255)表示红、绿、蓝三种配色的值不超过255。

pencolor( )设置画笔的颜色,后面三个参数为R、G、B三分量,即红、绿、蓝。

练习:试着运行下面的代码,看看出现什么图案?

import turtle from turtle import * def part( total, length, breadth, col ): angleInc = 360/total width( breadth ) color( col ) for i in range(total): forward( length ) left( angleInc ) def rosette( total, length, width, color, angleInc ): for i in range( int(360/angleInc) ): part( total, length, width, color ) left( angleInc ) turtle.setup( 300, 300, 20, 20 ) turtle.speed(9) rosette(10,40,1,"blue",36) rosette(5,80,1,"red",36) turtle.exitonclick()

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-01-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏落花落雨不落叶

canvas画简单电路图

62111
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2182
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4667
来自专栏杨龙飞前端

scrollto 到指定位置

2514
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2577
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2546
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4908
来自专栏菩提树下的杨过

Flash/Flex学习笔记(23):运动学原理

先写一个公用的小球类Ball: package{ import flash.display.Sprite; //小球 类 public class B...

25310
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6848

扫码关注云+社区