|Python新手小白中级教程|第二十七章:面向对象编程(示例操作)(3)使用turtle库与类结合
文章目录
- 前言
- 一、项目:使用类Circle画出圆形(不调用turtle库)
- 1.基础指令class
- 2.使用turtle画出大圆与小圆
- 3.使用其他功能画一只眼睛
- 二、使用turtle库画正方形
- 总结
前言
hello,我是BoBo仔,welcome来看我的文章
这节课,我们在上两节课的基础上学习更加深入且实用的内容
是不是迫不及待了?让我们开始吧!
上两节课文章链接
课时1:
https://editor.csdn.net/md/?articleId=138410664
课时2:
https://editor.csdn.net/md/?articleId=138445091
一、项目:使用类Circle画出圆形(不调用turtle库)
1.基础指令class
这节课我们要使用Python的第三方库turtle,如果有需要,可以看看我之前发的文章加深印象
课时1
https://editor.csdn.net/md/?articleId=136085783
课时2:
https://editor.csdn.net/md/?articleId=136089890
课时3:
https://editor.csdn.net/md/?articleId=136100116
这里我们先模仿上节课的逻辑,先设置一个类
这里我们的目标是画大圆和小圆,所以我们的对象对应大小圆分别是:r_large r_little,因为下文我使用半径画画,所以这里的对象我们用半径r
所以,基础代码就over了
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_little
但是,对于这个项目来说,没有turtle库命令,就像pygame的init方法没有pygame指令一样,就像个光杆司令,没啥实质性的用处
所以,下一步就是导入turtle库指令
2.使用turtle画出大圆与小圆
OK,我们先导入turtle库,但是为了指令方便,我们以变量t的形式代替单词turtle
import turtle as t
这就是导入指令
其次,我们的目标就是调用指令
画圆的指令circle大家一定要会
先看基本格式:

这里我们主要用到了三个量:半径,圆心角度,以及边数
这里我们的半径是必填的,角度extent是默认圆周角360°,steps默认1(圆形只有一条边)
然后,我们就可以运用这个语法执行任务了
先把前几行写出来:
import turtle as t
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_little
其次就是给两个对象一人一个画图函数
这里我们让小圆的画图程序函数为draw_c_little(self),大圆为:draw_c_large(self)
import turtle as t
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_littledef draw_c_large(self):def draw_c_little(self):
然后就是画圆圈的操作
这里我们有两个东西非常重要,一个是画图语句,一个是半径radius的表示方法
我们在前面也提到了:init方法构造对象之后,我们使用对象的方法必须是self.对象名
学会这个之后,再结合基础语法,我们就完成了类的操作
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_littledef draw_c_large(self):t.circle(self.r_large)#这里的self别忘了def draw_c_little(self):t.circle(self.r_little)#这里的self也别忘了
OK,到此,我们的类Circle操作结束,接下来就是调用
调用代码不用我说了,非常简单,只要照着前面的结构去调用即可
draw_c_large = Circle(100,0)#这里我们设大圆半径为100,因为这里我们有两个对象,所以要把其中一个空出来,下一个同理
draw_c_little = Circle(0,50)#设小圆半径为50
draw_c_large.draw_c_large()
draw_c_little.draw_c_little()
半径可以随便设,这里我们要注意:不能把小圆的位置空开,否则会报错:

完整代码如下:
import turtle as t
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_littledef draw_c_large(self):t.circle(self.r_large)#这里的self别忘了def draw_c_little(self):t.circle(self.r_little)#这里的self也别忘了draw_c_large = Circle(100,0)#这里我们设大圆半径为100,因为这里我们有两个对象,所以要把其中一个空出来,下一个同理
draw_c_little = Circle(0,50)#设小圆半径为50
draw_c_large.draw_c_large()
draw_c_little.draw_c_little()
也可以写成这样,输出相同

import turtle as t
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_littledef draw_c(self):t.circle(self.r_large)#这里的self别忘了t.circle(self.r_little)
draw_c = Circle(100,50)#这里我们设大圆半径为100,因为这里我们有两个对象,所以要把其中一个空出来,下一个同理
draw_c.draw_c()
结果如下:

这里我们可以加一个方法turtle.done(),让作品停留在画面上
也可以加一个turtle.hideturtle(),隐藏海龟
3.使用其他功能画一只眼睛
OK,这就是该程序的所有内容了,大家可以多下修饰,画一只“小眼睛”

源码如下:
import turtle as t
class Circle:def __init__(self,r_large,r_little):self.r_large = r_largeself.r_little = r_littledef draw_c(self):t.color('black','black')t.pensize(2)t.begin_fill()t.circle(self.r_large) # 这里的self别忘了t.end_fill()t.pensize(1)t.color('white','white')t.begin_fill()t.circle(self.r_little)t.end_fill()
draw_c = Circle(100,50)#这里我们设大圆半径为100,因为这里我们有两个对象,所以要把其中一个空出来,下一个同理
draw_c.draw_c()
t.done()
t.hideturtle()
怎么样,是不是很酷呢?
二、使用turtle库画正方形
之前我已经带大家画一遍了,现在大家自己尝试一下
我们设这个类为Quadrate,对象为a_large , a_little
import turtle as t
class Quadrate:def __init__(self, a_large, a_little):self.a_large = a_largeself.a_little = a_littledef draw_quadrate(self):t.color('green', 'green')t.pensize(2)t.begin_fill()for i in range(1,5):t.forward(self.a_large)# 这里的self别忘了t.right(90)t.end_fill()t.pensize(1)t.color('blue','blue')t.begin_fill()for i in range(1,5):t.forward(self.a_little)t.right(90)t.end_fill()
draw_quadrate = Quadrate(100, 50)
draw_quadrate.draw_quadrate()
t.hideturtle()
t.done()
这就是全部代码,下面是样式

如果再加入一点创意,作品将更加完美!
总结
本节课,我们通过turtle和类的结合完成了两个项目,大家都学会了吗?下节课的内容更加精彩,不容错过!
最后,制作不易,别忘了一圈三连,点个关注!
相关文章:
|Python新手小白中级教程|第二十七章:面向对象编程(示例操作)(3)使用turtle库与类结合
文章目录 前言一、项目:使用类Circle画出圆形(不调用turtle库)1.基础指令class2.使用turtle画出大圆与小圆3.使用其他功能画一只眼睛 二、使用turtle库画正方形总结 前言 hello,我是BoBo仔,welcome来看我的文章 这节课…...
Android OpenMAX(五)高通OMX Core实现
上一节了解了OMX Core提供的内容,这一节我们看看高通OMX Core是如何实现的。本节代码参考自: omx_core_cmp.cpp registry_table_android.c qc_omx_core.h 1、OMX_Init/OMX_Deinit OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init() {DEBUG_PRINT(...
XXE漏洞
一、概述 1、XXE:XML外部实体注入攻击 2、XML:可扩展标记语言。 (1)没有固定标签,所有标签都可以自定义,但有限制规则。 (2)用于数据对的传输与存储,常被用于充当配置文件 推荐教程:XML 教程 (3)后缀…...
[华为OD]C卷 BFS 亲子游戏 200
题目: 宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自 的位置,地图上每个格子有不同的Q糖果数量,部分格子有障碍物。 游戏规则Q是妈妈必须在最短的时间&a…...
大模型微调实战之强化学习 贝尔曼方程及价值函数(五)
大模型微调实战之强化学习 贝尔曼方程及价值函数(五) 现在, 看一下状态-动作值函数的示意图: 这个图表示假设首先采取一些行动(a)。因此,由于动作(a),代理可能会被环境转换到这些状…...
初探MFC程序混合使用QT
一、背景 随着操作系统国产化替代的趋势越发明显,软件支持国际化、跨平台,已然是必须做的一件事情。原有的软件UI层用的是MFC,将其换成QT,想必是一种较好的方案。对于大型软件,特别是已发布,但还处于不断迭…...
【LeetCode题库】1068. 产品销售分析 I —— MySQL 性能提升,using()关键字
文章目录 原题题解解题笔记 —— JOIN USING()关键字对性能的提升 我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~ 原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~ 如有错误、疑惑,欢迎【评论】指正…...
leetcode 1 ~ 100
文章目录 1. 两数之和(用哈希表减少查找的时间复杂度)2. 两数相加(高精度加法)3.无重复字符的最长子串:(模板:经典的滑动窗口算法)5. 最长回文子串(枚举)6. Z…...
分享6个免费下载电子书的网站
着急看书的宝子们看这里! 收藏了一堆电子书网站终于能派上用场了~ 01/Z-Library https://zh.zlibrary-be.se/ 世界上最大的电子图书馆,拥有超千万的书籍和文章资源,99%的书籍资料都能在这里找到。 我给的这个网址现在还能正常打开使用&…...
typescript的入门到吐槽:看了typescript,发现前端真的卷,
typescript TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TypeScript 与 JavaScript 的区别 其实就是对JavaScript的封装,把一个弱类型语言封…...
抖店商品详情API接口,商品上架(主图,价格,sku等属性,)item_get-获得抖店商品详情
抖店商品详情API接口,商品上架(主图,价格,sku等属性,)item_get-获得抖店商品详情 {"code": 0,"msg": "调用成功","time": "1715166889","data&quo…...
STM32使用ADC单/多通道检测数据
文章目录 1. STM32单片机ADC功能详解 2. AD单通道 2.1 初始化 2.2 ADC.c 2.3 ADC.h 2.4 main.c 3. AD多通道 3.1 ADC.c 3.2 ADC.h 3.3 main.c 3.4 完整工程文件 1. STM32单片机ADC功能详解 STM32单片机ADC功能详解 2. AD单通道 这个代码实现通过ADC功能采集三脚电…...
Unity 性能优化之动态批处理(四)
提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、动态合批是什么?二、使用动态批处理1.打开动态合批2.满足条件 三、检查动态合批是否成功五、动态合批弊端总结 前言 动态批处理是常用优…...
Windows 11 系统安装时如何跳过联网和逃避微软账号登录
问题描述 Windows 11 是从 22H2 版本之后开始强制联网何登录微软账号的。 这就带来两个问题: 1、如果我的电脑没有网络或者网卡驱动有问题,那就无法继续安装系统了。 2、如果我有强怕症,就是不想登录微软账号,害怕个人信息泄露…...
uniapp + vue3 使用axios
场景 uniapp自带的uni.request不太好用,也有可能是自己用axios用的太熟悉了,所以还是用axios趁手点,所以尝试在uniapp中使用axios。 操作 因为uniapp项目没有package.json,所以先在项目根目录下执行 npm init, 执行完毕后直接…...
关于前后端的参数传递
以前端javascript,后端nodejsexpress为例,后端可以从前端发来的request里获取这些属性:header、query、url、params、body,其中params和query是从url中解析获得,不过express已帮我们做好了,就不用我们自己再…...
华火电焰灶,科技打造“新”厨房
家里最大的空气污染源其实来自厨房里的燃气灶!——斯坦福大学发表的《科学进展》期刊 厨房在家庭中占有举足轻重的地位,它不仅是一个烹饪美食的场所,更是家人情感交流的重要空间。厨房大致经历了两次变革,分别是以柴火灶为主体的厨…...
普通人副业要趁早,5种靠谱且持久的赚钱副业
中年危机、35岁被裁,这些听起来就让人焦虑的词汇,是否也让你感到不安?别担心,只要你早早开启副业之旅,这些都不是问题。 今天,我要为你介绍的这5种副业,不仅能帮你赚钱,还能让你的能…...
【文献解析】3D高斯抛雪球是个什么玩意
论文地址:https://arxiv.org/abs/2308.04079 项目:3D Gaussian Splatting for Real-Time Radiance Field Rendering 代码:git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive 一、文章概述 1.1问题导向 辐射…...
嘎嘎好用的虚拟键盘第二弹之中文输入法
之前还在为不用研究输入中文而暗自窃喜 这不新需求就来了(新需求不会迟到 它只是在路上飞一会儿) 找到了个博主分享的代码 是好使的 前端-xyq 已经和原作者申请转载了 感谢~~ 原作者地址:https://www.cnblogs.com/linjiangxian/p/16223681.h…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
