个人房产查询系统网站官网/网上营销推广
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
在前3节的实例中,我们一直绘制的都是直线,实际上,海龟绘图还可以绘制其他形状的图形,如圆形、多边形等,下面分别进行介绍。
1 绘制线条
在海龟绘图中,画笔处在落笔状态时,只要海龟移动时就会绘制出移动轨迹线条。通过改变移动的方向和位置可以绘制出各种线条。在绘制线条时,主要通过15.1.2小节介绍的控制方向和位置的方法实现。下面通过一个实例来演示如何绘制复杂的线条。
实例15.3 绘制台阶
通过逆时针旋转90度,向前移动,再顺时针旋转90度,并向前移动,可以实现一级台阶的绘制,重复多次这样的操作,就可以绘制出多级台阶的形状,代码如下:
import turtle # 导入海龟绘图模块
turtle.color('blue') # 设置画笔颜色为蓝色
turtle.forward(40) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(20) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.forward(20) # 向前移动
turtle.right(90) # 顺时针旋转90度
turtle.forward(40) # 向前移动
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行程序,将在屏幕上绘制5级台阶,如图15.21所示。
图15.21 绘制5级台阶
在绘制线条时,结合循环可以绘制出很多复杂、有趣的图案,例如下面的实例。
实例15.4 绘制回文图案
使用海龟绘图结合for循环可以实现回文图案。实现方法:在循环中,不断地增加移动的距离,并向一个方法旋转指定角度即可实现。具体代码如下:
import turtle # 导入海龟绘图模块
turtle.color('green') # 画笔颜色为绿色
# 输出回文图案
for i in range(32): # 循环32次
turtle.forward(i*2) # 向前移动
turtle.left(90) # 逆时针旋转90度
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行程序,将显示如图15.22所示的图案。
图15.22 绘制回文图案
2 绘制矩形
在海龟绘图中,没有提供绘制矩形的方法,不过可以使用旋转+移动位置来实现。下面看一个具
体的实例。
实例15.5 绘制彩色边框的矩形
绘制一个长150像素,宽200像素的矩形,并且每条边的颜色不一样。代码如下:
import turtle # 导入海龟绘图模块
turtle.shape('turtle') # 改变海龟光标的形状为海龟
turtle.width(3) # 画笔粗细
turtle.color('orange') # 画笔颜色为橙色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color('red') # 画笔颜色为红色
turtle.forward(100) # 画一条100像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color('green') # 画笔颜色为绿色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color('purple') # 画笔颜色为紫色
turtle.forward(100) # 画一条100像素的线
turtle.ht() # 隐藏海龟光标
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行程序,屏幕中逐渐绘制一个彩色边框的矩形,绘制完成后海龟光标将隐藏,如图15.23所示。
图15.23 绘制彩色边框的矩形
如果将图15.23所示的矩形重复旋转多次将得到一个圆形图案。修改后的代码如下:
import turtle # 导入海龟绘图模块
def drawrect(num):
for i in range(1,num+1):
turtle.left(5)
turtle.width(3) # 画笔粗细
turtle.color('orange') # 画笔颜色为橙色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color('red') # 画笔颜色为红色
turtle.forward(100) # 画一条100像素的线
320
Python 从入门到实践
turtle.right(90) # 顺时针旋转90度
turtle.color('green') # 画笔颜色为绿色
turtle.forward(200) # 画一条200像素的线
turtle.right(90) # 顺时针旋转90度
turtle.color('purple') # 画笔颜色为紫色
turtle.forward(100) # 画一条100像素的线
turtle.ht() # 隐藏海龟光标可以提升速度
drawrect(100)
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行程序,将看到不断地绘制彩色边框的矩形,最终停留在如图15.24所示的图案上。
图15.24 绘制圆形图案
3 绘制圆或弧形
在海龟绘图中,使用circle()方法可以绘制圆或者弧形。circle()方法的语法如下:
turtle.circle(radius, extent=None, steps=None)
参数说明:
l radius :必选参数,用于指定半径,其参数值为数值。圆心在海龟光标左边一个半径值的位置。
l 如果值为正数,则按照逆时针方向绘制圆弧,否则按照顺时针方向绘制。
l extent :可选参数,用于指定夹角的大小,数值(或None),如果设置为None或者省略,则绘制整个圆。另外,如果指定的值不是完整圆周,将以当前画笔位置为一个端点绘制圆弧。
l steps :可选参数,用于指定边数。对于圆实际上是以其内切正多边形来近似表示的,这里的 steps就是指定的正多边形的边数。如果extent参数省略时,则该参数需要通过关键字参数的形式指定(即需要使用steps = 边数)。
例如,绘制一个红色的,半径为80的圆,代码如下:
import turtle
turtle.color('red') # 设置画笔的颜色
radius = 80 # 定义半径
turtle.circle(radius,None) # 绘制圆
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行上面的代码,将绘制如图15.25所示的圆。
再例如,绘制一个绿色,半径为80的半圆弧,代码如下:
import turtle
turtle.color('green') # 设置画笔颜色
radius = 80 # 定义半径
turtle.circle(radius,180) # 绘制半圆弧
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行上面的代码,将绘制如图15.26所示的半圆弧。
图15.25 绘制圆
图15.26 绘制弧
实例15.6 绘制五环图案
通过循环绘制5个半径为100的不同颜色的圆形,通过调整位置组成五环图案。代码如下:
import turtle # 导入海龟绘图模块
turtle.resizemode('auto') # 改变模式为自动
radius = 100 # 圆的半径
turtle.width(10) # 画笔粗细
colorlist = ['royalblue','black','red','yellow','green'] # 颜色列表
turtle.penup() # 抬笔
turtle.back(radius*2) # 移动一个圆的距离
turtle.pendown() # 落笔
for i in range(5): # 循环5次
turtle.color(colorlist[i]) # 设置画笔颜色
turtle.circle(radius) # 绘制圆
if i != 2: # 不是第三个圆时
turtle.penup() # 抬笔
turtle.forward(radius*2) # 移动一个圆的距离
turtle.pendown() # 落笔
else:
turtle.penup() # 抬笔
turtle.goto(radius*-1,radius*-1) # 移动到第二行的第一个圆的位置
turtle.pendown() # 落笔
322
Python 从入门到实践
turtle.ht() # 隐藏画笔
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行程序,将在屏幕上绘制由5个圆组成的五环图案,效果如图15.27所示。
图15.27 绘制五环图案
另外,在海龟绘图中,还提供了绘制圆点的dot()方法。通过该方法可以在屏幕上绘制指定大小和颜色的实心圆点。dot()方法的语法如下:
turtle.dot(size=None, *color)
参数说明:
l size :用于指定圆点的直径,参数值为>=1的整型数,省略则取pensize+4和2*pensize中的较大值。
l color :用于指定圆点的颜色,其参数值为颜色字符串或颜色数值元组。
例如,在屏幕上绘制一个蓝色的、直径为50的圆点,代码如下:
import turtle # 导入海龟绘图模块
turtle.dot(50, "blue")
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行上面的代码,将在屏幕上绘制如图15.28所示的圆点。
图15.28 绘制圆点
4 绘制多边形
在海龟绘图中,绘制多边形通常有两种方式。一种是通过circle()方法实现,另一种是通过循环旋转、移动实现。下面分别进行介绍。
l 通过circle()方法实现
将circle()方法的参数steps设置为想要的多边形的边数,即可绘制指定边数的正多边形,例如,绘制一个正8边形的代码如下:
import turtle # 导入海龟绘图模块
turtle.color('red')
turtle.circle(100,steps=8) # 绘制正8边形
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行上面的代码,将绘制一个正八边形,如图15.29所示。
图15.29 绘制正八边形
l 通过循环旋转、移动实现多边形
在15.4.2小节绘制矩形时,我们通过移动指定距离(表示边长)并旋转(90度)4次绘制出了一个矩形。那么如果把矩形换成正方形,就可以通过循环4次的操作来实现。通过这种方式也可以实现绘制其他的正多边形。关键要素如下:
Ø 循环次数=边数。
Ø 旋转角度=180-内角的度数,内角的度数计算公式为:内角=(边数-2)*180/边数。即旋转角度=180-(边数-2)*180/边数)。
Ø 移动的距离=边长。
例如,要绘制一个彩色边框的正8边形,代码如下:
import turtle # 导入海龟绘图模块
colorlist = ['pink','purple','skyblue','cyan','green','lime','orange','red']
turtle.width(2) # 线粗2像素
side = 8 # 边数
for i in range(side):
turtle.color(colorlist[i]) # 设置边框的颜色
turtle.forward(60) # 边长
turtle.left(180-(side-2)*180/side) # 旋转角度
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行上面的代码,将绘制一个彩色边框的正八边形,如图15.30所示。
图15.30 绘制彩色边框的正八边形
5 绘制填充图形
在海龟绘图中,默认绘制的图形只显示轮廓,不会填充,这时可以使用begin_fill()和end_fill()方法绘制填充图形。其中begin_fill()方法放置在绘制要填充的形状之前调用,而end_fill()方法设置在绘制完要填充的形状之后调用,并且要保证前面已经调用了begin_fill()方法。
例如,将15.4.4小节通过circle()方法绘制的正八边形填上绿色,代码如下:
import turtle # 导入海龟绘图模块
turtle.color('green') # 填充颜色
turtle.begin_fill() # 标记填充开始
turtle.circle(100,steps=8) # 绘制正8边形
turtle.end_fill() # 标记填充结束
turtle.ht() # 隐藏画笔
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
运行上面的代码,将显示如图15.31所示的绿色实心正八边形。
相关文章:

绘制图形
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在前3节的实例中,我们一直绘制的都是直线,实际上,海龟绘图还可以绘制其他形状的图形,如圆形、多边形等…...

SpringAop实战(xml文件/纯注解两种方式)
AOP的概述 什么是AOP? 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程 • AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构 • AOP最早由AOP联盟的组织提出的,制定了…...

(八)Linux的进程与线程
多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的程序被称为一个任务。一个任务包含一个或多个完成独立功能的子任务,其中子任务可以是进程或线程。Linux就是一个支持多任务的操作系统,比起单任务系统它的功能增强许多。 一.进程 进程:一个具有独立功…...

Map-JAVA面试常问
1.HashMap底层实现 底层实现在jdk1.7和jdk1.8是不一样的 jdk1.7采用数组加链表的方式实现 jdk1.8采用数组加链表或者红黑树实现 HashMap中每个元素称之为一个哈希桶(bucket),哈希桶包含的内容有以下4项 hash值(哈希函数计算出来的值) Key value next(…...

prometheus+grafana搭建监控系统
1.prometheus服务端安装 1.1下载包 使用wget下载 (也可以直接去官网下载包Download | Prometheus) wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz1.2解压 tar xf prometheus-2.44…...

flink学习-flink sql
动态表 在flink的数据处理中,数据流是源源不断的,是无界的,所以对于flink处理的数据表是一张动态表,所以对于动态表的查询也是持续的,每接收一条新数据会进行一次新的查询。 持续查询 因为数据在一直源源不动的到来…...

高考填报志愿攻略,5个步骤选专业和院校
在高考完毕出成绩的时候,很多人会陷入迷茫中,好像努力了这么多年,却不知道怎么规划好未来。怎么填报志愿合适?在填报志愿方面有几个内容需要弄清楚,按部就班就能找到方向,一起来了解一下正确的步骤吧。 第…...

Kubernetes排错(十)-处理容器数据磁盘被写满
容器数据磁盘被写满造成的危害: 不能创建 Pod (一直 ContainerCreating)不能删除 Pod (一直 Terminating)无法 exec 到容器 如何判断是否被写满? 容器数据目录大多会单独挂数据盘,路径一般是 /var/lib/docker,也可能是 /data/docker 或 /o…...

使用QtGui显示QImage的几种方法
问题描述 我是一名刚学习Qt的新手,正在尝试创建一个简单的GUI应用程序。当点击一个按钮时,显示一张图片。我可以使用QImage对象读取图片,但是否有简单的方法调用一个Qt函数,将QImage作为输入并显示它? 方法一:使用QLabel显示QImage 最简单的方式是将QImage添加到QLabe…...

C++ lamda
1 lamada 的函数指针存在哪里?需要通过分析编译后的二进制; 2 捕获了什么? 为什么捕获?捕获的范围是什么? 捕获的生命周期是什么? lambda 定义匿名函数,使得代码更加灵活简洁; lam…...

Linux_应用篇(27) CMake 入门与进阶
在前面章节内容中,我们编写了很多示例程序,但这些示例程序都只有一个.c 源文件,非常简单。 所以,编译这些示例代码其实都非常简单,直接使用 GCC 编译器编译即可,连 Makefile 都不需要。但是,在实…...

51单片机STC89C52RC——8.1 8*8 LED点阵模块(点亮一个LED)
目录 目的/效果 一,STC单片机模块 二,8*8 LED点阵模块 2.1 电路图 2.1.1 8*8 点阵模块电路图 2.1.2 74HC595(串转并)模块 电路图 2.1.3 芯片引脚 2.2 引脚电平分析 2.3 74HC595 串转并模块 2.3.1 装弹(移位…...

2024最新免费版轻量级Navicat Premium Lite 下载和安装教程
2024最新免费版轻量级Navicat Premium Lite 下载和安装教程 关于猫头虎 大家好,我是猫头虎,别名猫头虎博主,擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品评…...

PHP+laravel 生成word
此功能较为繁琐我会从源头讲起 首先是数据库设置,下面是我的数据库结构 合同模版表 CREATE TABLE contract_tpl (id bigint unsigned NOT NULL AUTO_INCREMENT,name varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 合同名称,file varchar(191) COLL…...

redis集群简单介绍及其搭建过程
Redis集群 1、哨兵模式 哨兵可以有多个,从服务器也可以有多个,从服务器也可以有多个,在Redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会实现主从切换&#x…...

linux桌面运维----第五天
1、创建用户命令useradd: 作用:创建用户 语法:useradd [选项名] 用户名 选项: -d<登入目录> 指定用户登入时的起始目录。 【掌握】 -g<群组> 指定用户所属的群组(基本组)。【掌握】…...

【SQL Server数据库】简单查询
目录 用SQL语句完成下列查询。使用数据库为SCHOOL数据库 1. 查询学生的姓名、性别、班级名称,并把结果存储在一张新表中。 2. 查询男生的资料。 3. 查询所有计算机系的班级信息。 4.查询艾老师所教的课程号。 5. 查询年龄小于30岁的女同学的学号和姓名。…...

Docker 从入门到精通(大全)
一、概述 1.1 基本概念 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。…...

基于JSP的在线教育资源管理系统
开头语: 你好呀,我是计算机学长猫哥!如果你对在线教育资源管理系统感兴趣或者有相关需求,欢迎在文末找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:IDE、N…...

在java中代理http请求,如何避免陷入循环?
在 Java 中,代理 HTTP 请求时,如果不小心配置不当,可能会导致循环请求。循环请求通常发生在代理服务器将请求再次发送回自己,形成一个死循环。为了避免这种情况,可以采取以下几种方法: 将域名设置为指定的…...

国内镜像源网址
腾讯:腾讯软件源 (tencent.com) 阿里:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 清华:清华大学开源软件镜像站 | Tsinghua Open Source Mirror...

合适的智能猫砂盆到底怎么挑?开放式封闭式一次说清!
想当初我也是在网上看了各种测评,纠结了好久才下定决心入手了智能猫砂盆。封闭式和开放式都用过,各有各的利与弊,不过最后的我还是选择了开放式的智能猫砂盆,因为开放式的设计结构会更加方便我观察小猫,哪个铲屎官不喜…...

阿里云开启ssl证书过程记录 NGINX
🤞作者简介:大家好,我是思无邪,2024 毕业生,某厂 Go 开发工程师.。 🐂我的网站:https://www.yishanicode.top/ ,持续更新,希望对你有帮助。 🐞如果文章或网站…...

C语言程序设计 9.37 调用随机函数为5x4的矩阵置 100以内的整数,输出该矩阵,求出每行元素之和,并把和的最大的那一行与第一行的元素对调
void count_sum(int sum[]) {int i;printf("每行相加的情况如下\n");for (i 0;i < 5; i){printf("%d ", sum[i]);}printf("\n"); } void test(int arr[5][4]) {int i, j;srand((unsigned)time(NULL));//添加这个可以每次不同的随机数&#x…...

Webpack: 借助 Babel+TS+ESLint 构建现代 JS 工程环境
概述 Webpack 场景下处理 JavaScript 的三种常用工具:Babel、TypeScript、ESLint 的历史背景、功能以及接入 Webpack 的步骤借助这些工具,我们能构建出更健壮、优雅的 JavaScript 应用 使用 Babel ECMAScript 6.0(简称 ES6) 版本补充了大量提升 JavaSc…...

孩子不想上学,父母应如何教育?“强迫教育”会激起孩子反抗心理
上周末朋友聚会,都是家有上学娃的年纪,闲聊中,话题自然少不了孩子的上学问题。其中,不少朋友都有抱怨过同一个问题:孩子不想上学,即使人到了学校,心也不在学校。 事实上,孩子出现…...

Python深度学习技术
原文链接:Python深度学习技术 近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。Transformer模型(BERT、GPT-…...

ECharts 雷达图案例002 - 诈骗性质分析
ECharts 雷达图案例002 - 诈骗性质分析 📊 ECharts 雷达图案例002 - 诈骗性质分析 深入挖掘数据背后的故事,用可视化手段揭示诈骗行为的模式和趋势。 🔍 案例亮点 创新的数据展示方式,让复杂的诈骗数据一目了然。定制化的雷达图…...

想远程控制手机,用哪个软件好?
很多人都想知道安卓系统或iOS系统要如何实现手机远程控制手机、电脑远程控制手机,分别需要用到什么软件,这篇文章一次说清楚。 注意,安卓系统需要是7.0及以上版本,iOS系统需要是11及以上版本。具体使用步骤请点击关注,…...

数字内容“遍地开花”,AI技术如何创新“造梦”?
文 | 智能相对论 作者 | 陈泊丞 这是春晚舞台西安分会场《山河诗长安》的一幕:“李白”现世,带领观众齐颂《将进酒》,将中国人骨子里的豪情与浪漫演绎得淋漓尽致。 这又是浙江义乌商品市场里的另一幕:只会说几个英文单词的女老板…...