Python实现七彩蟒蛇绘制实例代码


Posted in Python onJanuary 16, 2018

本文主要研究的是Python编程turtle的实例,绘制一个七彩蟒蛇。。具体如下。

第2周的课后练习里,有一道题目,要求修改“蟒蛇绘制”程序,对Python 蟒蛇的每个部分采用不同颜色,绘制一条彩色蟒蛇。

原蟒蛇绘制程序如下:

因为刚开始学Python,不太熟悉,所以自己加了一些注释,方便理解。

#蟒蛇绘制
import turtle

def drawSnake(rad,angle,len,neckrad):
  for i in range(len):
    turtle.circle(rad,angle) #画圆 rad:圆半径 angle:圆弧度
    turtle.circle(-rad,angle) #运行轨迹右侧rad远的地方绘制圆
  turtle.circle(rad,angle/2)
  turtle.fd(rad) #表示直线爬行,forward,参数表示爬行的距离
  turtle.circle(neckrad+1,180)
  turtle.fd(rad*2/3)

def main():
  turtle.setup(1300,800,0,0) #设置窗口宽+高+起始位置
  pythonsize = 30
  turtle.pensize(pythonsize) #设置笔的宽度
  turtle.pencolor("blue") #设置笔的颜色
  turtle.seth(-40) #设置笔的起始角度
  drawSnake(40,80,5,pythonsize/2)

通过仔细分析了该代码,发现这段代码中画笔的颜色,是通过pencolor()来设置,如果想要将颜色变为彩色,显然不能再用这种方法,因此我想到了用列表来解决这个问题,于是在drawSnake里创建一个名为colors的列表变量并且在列表中放置6种颜色,如下所示:

colors = [“red”,”orange”,”yellow”,”green”,”cyan”,”blue”]

在此之前呢,因为原先的程序里,len的值是5,因此画出来的蟒蛇的身体只有五部分,为了显示为七彩,特地将len的值改为6.

在for循环里,在绘画之前,增加了一条语句,用来设置画笔的颜色:

turtle.color(colors[i])

colors[i]中,i和for循环里的是同一个变量,当i从0变化到5,相应的,color()就会从前面所添加的、名为colors的颜色名称列表中选取一种颜色,设置为画笔的颜色。

而蟒蛇的头部,则利用turtle.color(“purple”)设置为第7种颜色。

运行之后,我发现turtle每次绘图,都是从画板的中心开始的,我觉得不太好看,于是想找到一种方法能够改变绘图的起点,目前我找到的方法是,利用penup(),goto(),pendown()命令来改变画笔起点的位置,如下所示:

turtle.penup()
turtle.goto(-350,0)
turtle.pendown()

如果后续再发现更好的方法,再更新。

一条七彩的蟒蛇就绘制好啦~

#蟒蛇绘制
import turtle

def drawSnake(rad,angle,len,neckrad):

  colors = ["red","orange","yellow","green","cyan","blue"]
  for i in range(len):
    turtle.color(colors[i])
    turtle.circle(rad,angle)
    turtle.circle(-rad,angle)

  turtle.color("purple")
  turtle.circle(rad,angle/2)
  turtle.fd(rad)
  turtle.circle(neckrad+1,180)
  turtle.fd(rad*2/3)

def main():
  turtle.setup(1300,800,0,0)
  turtle.penup()
  turtle.goto(-350,0)
  turtle.pendown()
  pythonsize = 30
  turtle.pensize(pythonsize)
  turtle.seth(-40)
  drawSnake(40,80,6,pythonsize/2)

main()

结果展示:

Python实现七彩蟒蛇绘制实例代码

总结

以上就是本文关于Python实现七彩蟒蛇绘制实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
浅析Python中的join()方法的使用
May 19 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
Django中的文件的上传的几种方式
Jul 23 Python
python三方库之requests的快速上手
Mar 04 Python
详解Python字符串切片
May 20 Python
python里运用私有属性和方法总结
Jul 08 Python
Python print不能立即打印的解决方式
Feb 19 Python
jupyter notebook指定启动目录的方法
Mar 02 Python
Python基础之操作MySQL数据库
May 06 Python
Python中字符串对象语法分享
Feb 24 Python
答题辅助python代码实现
Jan 16 #Python
python实现百万答题自动百度搜索答案
Jan 16 #Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 #Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 #Python
Python面向对象编程之继承与多态详解
Jan 16 #Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 #Python
python中将字典形式的数据循环插入Excel
Jan 16 #Python
You might like
PHP_Flame(Version:Progress)的原代码
2006/10/09 PHP
php设计模式之单例模式代码
2016/06/11 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
javascript解析json实例详解
2014/11/05 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
深入理解Python对Json的解析
2017/02/14 Python
使用python实现BLAST
2018/02/12 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Python坐标线性插值应用实现
2019/11/13 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
社区志愿者活动方案
2014/08/18 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
党小组考察意见
2015/06/02 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL