当前位置: 首页 > 编程日记 > 正文

第四章 python的turtle库的运用

我们可以尝试用python的自带turtle库绘制一条蟒蛇

首先我们设计一下蟒蛇的基本形状

我们先把这段蟒蛇绘制的实例代码贴出来,各位可以在自己的本地运行一下看看效果,然后我们再继续分析代码:

 1 #PythonDraw.py
 2 import turtle
 3 turtle.setup(650, 350, 200, 200)
 4 turtle.penup()
 5 turtle.fd(-250)
 6 turtle.pendown()
 7 turtle.pensize(25)
 8 turtle.pencolor("purple")
 9 turtle.seth(-40)
10 for i in range(4):
11     turtle.circle(40, 80)
12     turtle.circle(-40, 80)
13 turtle.circle(40, 80/2)
14 turtle.fd(40)
15 turtle.circle(16, 180)
16 turtle.fd(40 * 2/3)
17 turtle.done()

程序关键:import保留字,引入了一个绘图体系,名字叫:turtle,就是海龟

学会海龟绘图体系之后,我们可以完成更加复杂的绘制:五角星绘制、国旗绘制、机器猫绘制

掌握了绘制一条线的方法,就可以绘制整个世界

turtle库概述:

turtle库的turtle绘图体系的python实现

turtle绘图体系:1969年诞生,主要用于程序设计入门

python的标准库之一,入门级的图形绘制函数库

python的计算生态:python标准库+第三方库

标准库:随解释器直接安装到操作系统的功能模块

第三方库:需要经过安装才能使用的功能模块

turtle的原理:

turtle是一种真实的存在,有一只海龟,在窗体的正中心,在画布上游走

走过的轨迹形成了绘制的图形

海龟由程序控制,可以变换颜色、改变宽度等

turtle的绘图窗体:

turtle的一个画布空间,最小单位是像素

turtle的绘图窗体:

turtle的绘图窗体:

1 turtle.setup(width, height, startx, starty)

注意三点:

1、setup设置船体的大小及位置

2、4个参数后两个参数可选

3、setup不是必须的

turtle空间坐标体系

绝对坐标:

1 turtle.goto(x,y)

这句是常用语法,让海龟爬

我们试试如下的代码,然后看看运行结果

1 import turtle
2 turtle.goto( 100, 100)
3 turtle.goto( 100,-100)
4 turtle.goto(-100,-100)
5 turtle.goto(-100, 100)
6 turtle.goto(0,0)

我们运行之后看看效果,如下图所示:

海龟的空间坐标体系

turtle.circle(r,angle),海龟左侧圆心,半径为r画圆

1 import turtle
2 turtle.circle(100,90)
3 turtle.done()

动手试试上述代码,会加深对circle函数的理解

下面我们了解一下海龟库的角度坐标体系

turtle.seth(angle)

1、seth() 改变乌龟行进方向

2、angle为绝对角度

3、seth只改变方向但不行进

海龟也有相对角度

1 turtle.left(angle)
2 turtle.right(angle)

我们来试试如下代码的绘制效果,来体会Turtle的角度体系

1 import turtle
2 turtle.left(45)
3 turtle.fd(150)
4 turtle.right(135)
5 turtle.fd(300)
6 turtle.left(135)
7 turtle.fd(150)
8 turtle.done()

绘制结果如下图所示:

下面我们涉及一下RGB色彩体系

万物色都可以由三种颜色构成

RGB指的是红绿蓝三个通道的颜色组合

覆盖视力所能感知的所有颜色

RGB每色取值范围是0-255或0-1小数

常用的RGB色彩:

英文名称RGB整数值RGB小数值中文名称
white255,255,2551,1,1白色
yellow255,255,01,1,0黄色
magenta255,0,2551,0,1洋红
cyan0,255,2550,1,1青色
blue0,0,2550,0,1蓝色
black0,0,00,0,0黑色
seashell255,245,2381,0.96,0.93海贝色
gold255,215,01,0.84,0金色
pink255,192,2031,0.75,0.80粉红色
brown165,42,420.65,0.16,0.16棕色
purple160,32,2400.63,0.13,0.94紫色
tomato255,99,711,0.39,0.28番茄色

turtle的RGB色彩模式

默认采用小数值,可以切换成整数值:

1 turtle.colormode(mode)
2 #1.0:RGB小数值模式
3 #255:RGB整数值模式

turtle程序语法元素分析:

库引用:

扩充python程序功能的方式

用import保留字完成,采用<a>.<b>()编码风格

import <库名>

<库名>.<函数名>(<函数参数>)

 1 #PythonDraw.py
 2 import turtle
 3 turtle.setup(650, 350, 200, 200)
 4 turtle.penup()
 5 turtle.fd(-250)
 6 turtle.pendown()
 7 turtle.pensize(25)
 8 turtle.pencolor("purple")
 9 turtle.seth(-40)
10 for i in range(4):
11      turtle.circle(40, 80)
12      turtle.circle(-40, 80) 
13 turtle.circle(40, 80/2)
14 turtle.fd(40)
15 turtle.circle(16, 180)
16 turtle.fd(40 * 2/3)
17 turtle.done()

可是,超级多的turtle,好烦,咋办????

import的更多用法:

使用from和import保留字共同完成

from <库名> import <函数名>

from <库名> import *

<函数名>(<函数参数>)

 1 #PythonDraw.py
 2 from turtle import *
 3 setup(650, 350, 200, 200)
 4 penup()
 5 fd(-250)
 6 pendown()
 7 pensize(25)
 8 pencolor("purple")
 9 seth(-40)
10 for i in range(4):
11     circle(40, 80)
12     circle(-40, 80)
13 circle(40, 80/2)
14 fd(40)
15 circle(16, 180)
16 fd(40 * 2/3)
17 done()

这么好的方法咋不早说呢???

因为第一种方法不会出现函数重名问题,而第二种方法会出现函数重名问题

import的更多用法

使用import和as保留字共同完成

import <库名> as <库别名>

<库别名>.<函数名>(<函数参数>)

相当于给库起个简单的名字,如:狗娃

 1 #PythonDraw.py
 2 import turtle as t
 3 t.setup(650, 350, 200, 200)
 4 t.penup()
 5 t.fd(-250)
 6 t.pendown()
 7 t.pensize(25)
 8 t.pencolor("purple")
 9 t.seth(-40)
10 for i in range(4):
11      t.circle(40, 80)
12      t.circle(-40, 80)
13 t.circle(40, 80/2)
14 t.fd(40)
15 t.circle(16, 180)
16 t.fd(40 * 2/3)
17 t.done()

这个方法比较推荐,也简洁了代码书写。

下面我们来分析下面这段代码的画笔控制函数

1 turtle.penup()
2 turtle.fd(-250)
3 turtle.pendown()
4 turtle.pensize(25)
5 turtle.pencolor("purple")

画笔操作后一直有效,一般成对出现

turtle.penup() #抬起画笔,海龟在飞 别名:turtle.pu()

turtle.pendown() #方向画笔,海龟在爬 别名:turtle.pd()

画笔设置后一直有效,直到下次重新设置

turtle.pensize(width) 别名:turtle.width(width)

画笔宽度,也就是海龟的腰围

turtle.pencolor(color) color为颜色字符串或者RGB值

画笔颜色,海龟在涂装

pencolor(color)中的color参与可以有三种形式

1、颜色字符串 :turtle.pencolor("purple")

2、RGB的小数值:turtle.pencolor(0.63,0.13,0.94)

3、RGB的元组值:turtle.pencolor((0.63,0.13,0.94))

turtle的运动控制函数

控制海龟行进:走直线&走曲线

turtle.forward(d)  别名turtle.fd(d)

向前行进,海龟走直线

d:行进距离,可以为负数

turtle.circle(r,extend=None)

根据半径r绘制extend角度的弧形

r:默认圆心在海龟左侧r距离的位置

extent:绘制角度,默认360度整圆

方向控制函数

turtle.seth(45)

turtle.seth(-135)

控制海龟面对的方向:绝对角度和相对角度

turtle.left(angle)  海龟向左转

turtle.right(angle)  海龟向右转

angle:在海龟当前行进方向上旋转的角度

循环语句与range()函数

1 for i in range(4):
2     tirtle.circle(40,80)
3     tirtle.circle(-40,80)

按照一定次数循环执行一组语句

for <变量> in range(<次数>):

<被循环执行的语句>

<变量>表示每次循环的计数,0到<次数>-1

range()函数:产生循环计数序列

range(N) 产生0到N-1的整数序列,共N个

range(M,N)产生M到N-1的整数序列,共N-M个

转载于:https://www.cnblogs.com/chy8/p/9448606.html

相关文章:

oracle导入索引b报错,impdp导入索引很慢

impdp用NETWORK_LINK从远程库导入到本地库&#xff0c;导入表的速度还正常&#xff0c;导入索引的速度特别慢。2个小时才导1300个索引。使用imp的格式&#xff1a;impdp vebackup/abc DIRECTORYDATABAK_DIR NETWORK_LINKprimarydb_link SCHEMASveasms TABLE_EXISTS_ACTIONREPLA…

新的mysql如何使用_如何使用新的MySQL更新日志

使用新的MySQL更新日志的方法未必人人都会&#xff0c;下面就教您如何使用新的MySQL更新日志的方法&#xff0c;希望对您能够有所帮助。如果你只使用一使用新的MySQL更新日志的方法未必人人都会&#xff0c;下面就教您如何使用新的MySQL更新日志的方法&#xff0c;希望对您能够…

find_in_set

在查询表中数据用 ‘,’隔开的记录时 如图所示 用like 查询auth 字段中含A5是查不出来的 如图所示 用find_in_set 可以查询出 auth字段含 ‘A5’的记录 如图所示 用法介绍&#xff1a; find_in_set 可以查询出字段内容以英文逗号隔开的记录 find_in_set(匹配值,字段名)转载于:h…

一堆棋子java代码编程_网易2018校招内推编程题-堆棋子-C++实现

0 1 3 10解法暴力枚举所有可能的点。如图所示&#xff0c;黑点为输入点。所需遍历的点为红线的交点&#xff0c;红圈表示。当时自己写的是遍历了外围红线所构成的封闭矩形里面所有的点了&#xff0c;只有60%的AC率&#xff0c;原因超时。看了康学长的代码&#xff0c;才知道有些…

linux free命令详解和使用实例(查看内存使用率)

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中&#xff0c;free命令是最经常使用的命令之一1&#xff0e;命令格式&#xff1a; free [参数] 2&#xff0e;命令功能&#xff1a; free 命令显示系统使用和空闲的…

awk linux 获取端口号_Linux提权后获取敏感信息命令

如果不能执行的可能是不同类型的linux。系统版本?cat /etc/issuecat /etc/*-releasecat /etc/lsb-releasecat /etc/redhat-release内核版本&#xff1f;cat /proc/versionuname -auname -mrsrpm -q kerneldmesg | grep Linuxls /boot | grep vmlinuz环境变量&#xff1f;cat /…

lemp-------3多站点访问,,访问控制,,虚拟目录

基于ip vi /etc/nginx/nginx.conf server { listen 192.168.1.142:80; server_name localhost; access_log logs/host.access.log main; location / { root /web2; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location /50x.html { root…

oracle统计id出现次数,oracle 统计sql

oracle 统计月平均交易次数 &#xff1a;select n_tsc_src_usr_id , floor(count(c_tsc_no)/trunc(months_between(max(d_tsc_req_time),min(d_tsc_req_time))))from tbl_tsc_basegroup by n_tsc_src_usr_idhaving months_between(max(d_tsc_req_time),min(d_tsc_req_time)) &g…

java避免使用orderby_java – Spring安全配置@Order不是唯一的例外

我试图在我的Spring Security配置中注册多个过滤器,但是我总是得到相同的异常&#xff1a;04-Nov-2015 14:35:23.792 WARNING [RMI TCP Connection(3)-127.0.0.1]org.springframework.web.context.support.AnnotationConfigWebApplicationContext.refreshException encountered…

es 启动问题

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] vim /etc/security/limits.conf 文件末尾添加&#xff1a; mst hard nofile 65536 mst soft nofile 65536 mst是es启动用户 max virtual memory areas vm.max_map_count [65…

imrot matlab,Matlabtuxiangpipei

文件名大小更新时间Matlab图像匹配的都可以用的到做三维重建\matlabcode\examples-code\11.jpg.......................................\..........\.............\addons\rectifData.mat.......................................\..........\.............\......\shelves.jp…

mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案

MySQL5.7后将sql_mode的ONLY_FULL_GROUP_BY模式默认设置为打开状态&#xff0c;这样一来&#xff0c;很多之前的sql语句可能会出现错误&#xff0c;错误信息如下&#xff1a;Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggreg…

通过web sql实现增删查改

<!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title></head><body><h3>***添加学生***</h3>学号&#xff1a;<input type"text" id"id&qu…

java发送苹果消息慢_Spring-boot JMS 发送消息慢的解决方法

Spring-boot JMS 发送消息慢的问题解决Servicepublic class Producer {Autowiredprivate JmsMessagingTemplate jmsTemplate;public void sendMessage(Destination destination, final String message){jmsTemplate.convertAndSend(destination, message);}}经使用JMeter进行压…

快速幂 + 矩阵快速幂

快速幂 1 #include<iostream>2 #include<algorithm>3 #include<cstring>4 #define LL long long5 using namespace std;6 7 LL Pow(LL a, LL b)8 {9 LL ans 1; 10 while(b ! 0){ 11 if(b&1) 12 ans * a; 13 a …

【Ctsc2011】幸福路径

题目链接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id2306 给定一张有向图&#xff0c;每个点有权值&#xff0c;蚂蚁从某个节点出发&#xff0c;初始体力值为$1$&#xff0c;每走一条边$体力值*p$&#xff0c;每经过一个点会获得幸福值为$点权*体力值$&…

mysql 去重con_python 爬虫 实现增量去重和定时爬取实例

前言&#xff1a; 在爬虫过程中&#xff0c;我们可能需要重复的爬取同一个网站&#xff0c;为了避免重复的数据存入我们的数据库中 通过实现增量去重 去解决这一问题 本文还针对了那些需要实时更新的网站 增加了一个定时爬取的功能&#xff1b;本文作者同开源中国(殊途同归_)&a…

oracle数据导出方法,oracle多种导入导出数据方法

dmp格式:1.dmp格式的导出可以通过客户端工具(PL/SQL)操作来完成,通过菜单栏---->Tools---->Export Tables&#xff0c;然后设置勾选相应参数即可,rows代表是否连同数据一起导出2.导出还可以用cmd工具,速度也更快:exp [email protected] filed:\***.dmp fullyfully表示全导…

java 枚举转byte_如何在java中将一个枚举转换为另一个枚举?

一种方法是在您的详细枚举中定义一个方法asSimple()&#xff1a;public enum Detailed {PASSED {OverrideSimple asSimple() {return PASSED;}},INPROCESS {OverrideSimple asSimple() {return RUNNING;}},ERROR1,ERROR2,ERROR3;public Simple asSimple() {return Simple.ERROR…

BZOJ4566: [Haoi2016]找相同字符

BZOJ4566: [Haoi2016]找相同字符 Description 给定两个字符串&#xff0c;求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两个子串中有一个位置不同。Input 两行&#xff0c;两个字符串s1&#xff0c;s2&#xff0c;长度分别为n1&#x…

mysql索引空间太大_MySQL优化索引

1. MySQL如何使用索引索引用于快速查找具有特定列值的行。如果没有索引&#xff0c;MySQL必须从第一行开始&#xff0c;然后遍历整个表以找到相关的行。表越大&#xff0c;花费越多。如果表中有相关列的索引&#xff0c;MySQL可以快速确定要在数据文件中间查找的位置&#xff…

Mac-sublime text 3破解版

在史蒂芬周下载破解版安装package controlimport urllib.request,os,hashlib; h df21e130d211cfc94d9b0905775a7c0f 1e3d39e33b79698005270310898eea76; pf Package Control.sublime-package; ipp sublime.installed_packages_path(); urllib.request.install_opener( urll…

oracle library cache lock,【案例】Oracle等待事件library cache lock产生原因和解决办法...

【案例】Oracle等待事件library cache lock产生原因和解决办法时间:2016-12-07 18:56 来源:Oracle研究中心 作者:网络 点击:次天萃荷净Oracle研究中心案例分析&#xff1a;运维DBA发现Oracle数据库出现library cache lock等待事件导致cpu使用非常高&#xff0c;结合案例来…

python uiautomation选择list内容_使用python UIAutomation从QQ2017(v8.9)群界面获取所有群成员详细资料,...

首先安装pip install uiautomation, 再运行本文代码。或者下载https://github.com/yinkaisheng/Python-UIAutomation-for-Windows代码(包含了uiautomation module)&#xff0c;直接运行demos目录里的脚本get_qq_group_members.pyuiautomation.py是我写的一个python封装微软UIAu…

【BZOJ】2734: [HNOI2012]集合选数

题目链接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id2734 考虑$N4$的情况&#xff1a; \begin{bmatrix} 1&3 &X \\ 2&X &X \\ 4&X &X \end{bmatrix} 其实就是吧最小值丢在了矩阵中${(0,0)}$的位置上&#xff0c;对于矩阵中的任意…

Linux命令:tar命令批量解压方法总结

tar命令批量解压方法总结 (2010-05-24 17:48:46) 转载▼标签&#xff1a; tar 批量解压 杂谈 分类&#xff1a; linux学习 由于linux的tar命令不支持批量解压&#xff0c;所以很多网友编写了好多支持批量解压的shell命令&#xff0c;收集了一下&#xff0c;供大家分享&#xff…

php column not found,java.sql.SQLException: Column 'cloumn name' not found.

Hi,My system configuration:Mandrake 9.0 Tomcat 4.1.24 MySQL 4.0.12. Apache[問題]我有一隻Servlet app. 如果 Tomcat MySQL APache IBM JDK 1.3 or SUN JDK 1.4.1_02在一開機時就起動. 我在http://localhost:8080/servlet/myApp 是可以看到Servlet run 起來. 可是如…

批量新建文件夹并命名_dos命令实现批量新建文件夹

1、批量新建文件夹&#xff08;使用命令&#xff1a;MD&#xff09;实现案例&#xff1a;假如我们要新建10个文件夹&#xff0c;这10个文件夹的名称分别是数字1-10来命名。以下详细步骤&#xff1a;1&#xff09;在excel表里面把需要批量新建的文件夹名字放到一列&#xff08;假…

java去掉mongodb日志_如何禁用mongoDB java驱动程序日志记录?

我试图禁用mongo-java-driver-3.0.0的日志输出.我试图在我的应用程序开始之前设置它们,然后加载mongo驱动程序,但它没有帮助.// Enable MongoDB logging in generalSystem.setProperty("DEBUG.MONGO", "false");// Enable DB operation tracingSystem.setP…

5793. 【NOIP2008模拟】小S练跑步

Description 小S是一个爱锻炼的孩子&#xff0c;他在放假期间坚持在A公园练习跑步。但不久后&#xff0c;他就开始为在重复的地点练习感到厌烦了&#xff0c;他就打算去B公园跑步。但是小S由于没有去过B公园&#xff0c;他不知道B公园是否适合练习跑步&#xff0c;又不知道在B公…