python海龟绘图圆形_python之海龟绘图

1. 基本功能介绍

在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟,我们可以绘制出令人惊奇的图片。使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻的视觉效果,而且还可以跟随海龟看看每行代码如何影响到它的移动。这能够帮助我们理解代码的逻辑。所以海龟作图也常被用作新手学习 Python 的一种方式。

1.1 Turtle motion (运动控制)

本节中包含了 运动控制 中常用的一些函数

turtle.goto(x,y)

画笔定位到坐标(x,y)

turtle.forward(distance)

向正方向运动 distance 长的距离

turtle.backward(distance)

向负方向运动 distance 长的距离

turtle.right(angle)

向右偏 angle 度

turtle.left(angle)

向左偏 angle 度

turtle.home()

回到原点

turtle.circle(radius, extent=None, steps=None)

画圆形 radius 为半径,extent 为圆的角度

turtle.speed(speed)

以 speed 速度运动

看到这么多函数肯定已经头大了,我们以例题来讲解。

首先画一个边长为100的正方形,然后再以半径为50画出其3/4圆。

#控制画笔的速度

turtle.speed(5)#将画笔定位到原点

turtle.goto(0,0)#从原点开始,画出一个边长为100的正方形

for i in range(4):#正向运动 100 的距离

turtle.forward(100)#向右偏 90 度

turtle.right(90)#将画笔定位到原点

turtle.home()#画出一个半径为100,占3/4的圆

turtle.circle(50,270)

结果:

webp

1.2 Pen control (画笔控制)

本节包含了对画笔的控制函数,常用的如下:

turtle.pendown()

落笔,在此状态下会画出运动的轨迹

turtle.pendown()

起笔,在此状态下不会画出运动的轨迹

turtle.pensize(width=None)

画笔粗细

turtle.pencolor(*args)

画笔颜色

turtle.fillcolor(*args)

填充颜色

turtle.begin_fill()

开始填充

turtle.end_fill()

结束填充

turtle.write(arg, move=False, align=”left”, font=(“Arial”, 8, “normal”))

写文字

同样,我们以一个例题来讲解。

画一个正方形并填充,最后写一些文字

#控制画笔颜色

turtle.pencolor('red')#落笔

turtle.pendown()#设置填充颜色

turtle.fillcolor('blue')#开始填充

turtle.begin_fill()#从原点开始,画出一个边长为100的正方形

for i in range(4):#正向运动 100 的距离

turtle.forward(200)#向右偏 90 度

turtle.right(90)#结束填充

turtle.end_fill()

turtle.penup()

turtle.goto(100,-100)

turtle.write('Crossin编程教室')

最后的结果是这样

70

同时,我们还可以设置画笔打粗细、画笔的速度等属性,

1.3 Window control (视窗控制)

这里有两个常用的函数

turtle.bgcolor(*args)

设置背景颜色

turtle.bgpic(picname=None)

背景图片填充

设置代码如下

turtle.bgcolor('red')

turtle.bgpic(r'yourpic.png')

2. 海龟绘图实例

我们用几个简单的例子讲解海龟绘图的用法。

2.1 用正方形画圆

importturtlefor i in range(360):

turtle.setheading(i)for i in range(4):

turtle.forward(100)

turtle.left(90)

360 个正方形每隔 1 度排列,短短几行代码可以生成一个漂亮规则的图形。

70

2.2 红色的五角星

使用填充功能画出一个大红星

importturtle

turtle.color('red','red')

turtle.begin_fill()for i in range(5):

turtle.forward(100)

turtle.right(144)

turtle.end_fill()

结果如图:

70

动态时钟

#coding=utf-8

importturtlefrom datetime import *

#抬起画笔,向前运动一段距离放下

defSkip(step):

turtle.penup()

turtle.forward(step)

turtle.pendown()defmkHand(name, length):#注册Turtle形状,建立表针Turtle

turtle.reset()

Skip(-length * 0.1)#开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.begin_poly()

turtle.forward(length* 1.1)#停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.end_poly()#返回最后记录的多边形。

handForm =turtle.get_poly()

turtle.register_shape(name, handForm)defInit():globalsecHand, minHand, hurHand, printer#重置Turtle指向北

turtle.mode("logo")#建立三个表针Turtle并初始化

mkHand("secHand", 135)

mkHand("minHand", 125)

mkHand("hurHand", 90)

secHand=turtle.Turtle()

secHand.shape("secHand")

minHand=turtle.Turtle()

minHand.shape("minHand")

hurHand=turtle.Turtle()

hurHand.shape("hurHand")for hand insecHand, minHand, hurHand:

hand.shapesize(1, 1, 3)

hand.speed(0)#建立输出文字Turtle

printer =turtle.Turtle()#隐藏画笔的turtle形状

printer.hideturtle()

printer.penup()defSetupClock(radius):#建立表的外框

turtle.reset()

turtle.pensize(7)for i in range(60):

Skip(radius)if i % 5 ==0:

turtle.forward(20)

Skip(-radius - 20)

Skip(radius+ 20)if i ==0:

turtle.write(int(12), align="center", font=("Courier", 14, "bold"))elif i == 30:

Skip(25)

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-25)elif (i == 25 or i == 35):

Skip(20)

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-20)else:

turtle.write(int(i/5), align="center", font=("Courier", 14, "bold"))

Skip(-radius - 20)else:

turtle.dot(5)

Skip(-radius)

turtle.right(6)defWeek(t):

week= ["星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"]returnweek[t.weekday()]defDate(t):

y=t.year

m=t.month

d=t.dayreturn "%s %d%d" %(y, m, d)defTick():#绘制表针的动态显示

t =datetime.today()

second= t.second + t.microsecond * 0.000001minute= t.minute + second / 60.0hour= t.hour + minute / 60.0secHand.setheading(6 *second)

minHand.setheading(6 *minute)

hurHand.setheading(30 *hour)

turtle.tracer(False)

printer.forward(65)

printer.write(Week(t), align="center",

font=("Courier", 14, "bold"))

printer.back(130)

printer.write(Date(t), align="center",

font=("Courier", 14, "bold"))

printer.home()

turtle.tracer(True)#100ms后继续调用tick

turtle.ontimer(Tick, 100)defmain():#打开/关闭龟动画,并为更新图纸设置延迟。

turtle.tracer(False)

Init()

SetupClock(160)

turtle.tracer(True)

Tick()

turtle.mainloop()if __name__ == "__main__":

main()

结果是一个动态的时钟,下图只是一个截图

1785229-20191025151842120-989269304.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLSQL Developer导入csv文件到oracle

csv文件内容: 要导入的表结构 create table RPT_MONILUCE_2_P01 ( imsi NUMBER, road_line NUMBER, ci NUMBER, diff NUMBER, rn NUMBER, sdate DATE, report_id NUMBER(20) ) 步骤: 1、在csv第一行上增加…

erwin 不能输入中文_国产开源建模软件PDMan与国外商业建模软件ERwin的主要功能比较...

在数据库建模的过程中,我们经常会使用到ERwin或者Power Designer之类的建模软件,来构建我们的逻辑模型和物理模型。但是这类软件都属于商业软件,需要企业购买相应的许可证授权。有些时候,我们会在没有购买这类商业建模软件的环境下…

已知一点经纬度,方位角,距离,求另一点经纬度

参考了博文:http://blog.csdn.net/pyx6119822/article/details/52298037 ------------------------------------------------ package hellotest;public class LonLatTest3 {/** 大地坐标系资料WGS-84 长半径a6378137 短半径b6356752.3142 扁率f1/298.2572236*//**…

python的基本语术_一起学python-彻底掌握专业术语“变量”的概念

昨天分享了笨方法学习编程,今天就让我们通过实战来接触python,掌握专业术语“变量”的概念吧 python 中的变量的基本概念和初中代数的方程式X的概念是一样的,只是在计算机程序当中这个X不仅仅可以代表一个数字,还可以代表一段文字…

lamp自动部署工具_Linux一键配置工具ezhttp介绍

简介: ezhttp是一个Linux一键配置工具,采用bash脚本语言编写。支持自动配置LAMP,LNMP,LNAMP环境,以前提供各种其它的配置工具,如自动配置swap,配置iptables等。项目托管在github,地址为https://github.com/centos-bz/e…

git设置全局账号密码_jenkins2.222使用之二、总体设置

构建前提:由于构建的时候是基于maven、git(码云)以及jdk1.8来的,所以这些都需要和jenkins安装在同一台服务器上面。全局工具配置:1、配置jdk系统管理-全局工具配置-jdk,配置如下:jdk版本可以配置多个,构建的时候&#…

Mybatis源码之(TypeAliasRegistry)TypeAlias别名实现机制

原文链接:http://blog.csdn.net/qq924862077/article/details/52612589 ---------------------------------- 在Mybatis编程中我们经常会用到将某个bean作为参数类型parameterType或者结果返回值类型ResultType,所以很多时候我们需要把完成的Bean的包名…

Java中Synchronized的用法

2019独角兽企业重金招聘Python工程师标准>>> 《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念…

concat特征融合_MSFNet:多重空间融合网络进行实时语义分割(北航和旷视联合提出)...

作者:Tom HardyDate:2020-02-01来源:MSFNet:多重空间融合网络进行实时语义分割(北航和旷视联合提出)原文链接:https://arxiv.org/abs/1911.07217主要内容实时语义分割是一项具有挑战性的任务,因…

wifi信号手机测试软件,专业的WiFi检测工具有哪些?如何解决wifi信号不好?

原标题:专业的WiFi检测工具有哪些?如何解决wifi信号不好?有朋友wifi测试软件有哪些?WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要…

python创建数组与列表_python基础(三):数组和列表

下面是小凰凰的简介,看下吧! 💗人生态度:珍惜时间,渴望学习,热爱音乐,把握命运,享受生活 💗学习技能:网络 -> 云计算运维 -> python全栈( 当前正在学习…

Mybatis之typeAlias配置的3种方法

原文链接&#xff1a;http://www.cnblogs.com/lxcmyf/p/6444120.html ------------------------------- 扩展阅读&#xff1a;http://blog.csdn.net/zengmingen/article/details/70163420 ------------------------------------ 1.定义别名&#xff1a; <typeAliases>…

计算机函数两个表格找相同,wps筛选出两个表格中的重复项(countif 函数简单使用)【已解决】...

假设&#xff0c;有以下两个表格文件。为了掩饰&#xff0c;数据就几个。AB两个表格&#xff0c;现在要做的是从A表格中&#xff0c;去除跟B表格重复的内容&#xff0c;只保留剩余的数据。第一步&#xff0c;先把B表格中的 蔬菜名称 那一列&#xff0c;复制到A表格中。(如果数据…

python常用正则表达式_Python3常用正则表达式

正则表达式速查表 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如&#xff0c;“n“匹配字符”n“。”\n“匹配一个换行符。串行”\\“匹配”\“而”\(“则匹配”(“。 ^ 匹配输入字符串的开始位置。如果设置了RegExp…

Spring Cloud 学习笔记(一) 之服务治理模块Spring Cloud Eureka 搭建注册中心

2019独角兽企业重金招聘Python工程师标准>>> 关于springboot的学习请参考前面的文章 接下来我们会开启一系列关于springcloud的学习文章。 一、概念 首先我们看下官方的解释 Service Discovery is one of the key tenets of a microservice-based architecture. Try…

java分治法求数列的最大子段和_同事为进大厂天天刷Java面试题,面试却履败!究其原因竟是它在捣鬼。...

写在前面疫情过后&#xff0c;招聘与求职受影响到底有多大&#xff1f;我不知道&#xff0c;但我的真实感受是&#xff0c;即使有疫情的影响&#xff0c;最近还是持续有朋友来跟我说他们今年工作的新动向。有人跳槽去了大厂&#xff0c;有人下定决心出来创业&#xff0c;也有人…

中国移动wlan优化app-截图

Nokia的wlan优化项目得到了中国移动省公司的认同&#xff0c;成为了重点项目&#xff0c;转移了其他项目组开发。 我单独负责开发Android端app。还没开发完&#xff0c;源码也移交了&#xff0c;不再继续参与开发。 新任务是负责现有平台从Oracle转为大数据。截图纪念下近半个…

linux软件安装管理

Linux软件安装管理 TonyLinux系统工程师难度初级 时长 3小时 6分 学习人数64016 综合评分9.8收藏上面是linux 的源代码安装包 linux有两种类型的软件安装方式&#xff1a; 1、源代码安装 这种方式的软件安装&#xff0c;可以指定软件的安装目录&#xff0c;软件的运行效率高&am…

ts语音自建服务器,自建TeamSpeak语音服务器,免费提供给专注游戏的玩家使用!...

先提一句&#xff0c;带过节奏的云玩家 可以滚了&#xff01;​​​以下内容更新于2020/5/22 15:30&#xff1a;​根据 洛杉矶湖人名宿孙悦 ​的提醒&#xff0c;不推荐下载ts1.cn的盗版客户端&#xff0c;也不推荐俱乐部或者各位玩家租用ts1.cn的盗版服务器。具体可查看帖子 h…

电子电器架构刷写方案——General Flash Bootloader

电子电器架构刷写方案——General Flash Bootloader 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 注&#xff1a;文章1万字左右&#xff0c;深度思考者入&#xff01;&#xff01;&#xff01; 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免…