当前位置: 首页 > news >正文

|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…...

Windows与Office激活神器:KMS_VL_ALL_AIO使用全攻略

Windows与Office激活神器:KMS_VL_ALL_AIO使用全攻略 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office的激活问题头疼吗?每次看到那个烦人的"激…...

终极指南:如何在macOS上轻松安装KLayout版图设计软件

终极指南:如何在macOS上轻松安装KLayout版图设计软件 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout 想要在macOS上安装专业级的集成电路版图设计工具KLayout吗?😊 作为一款功能…...

Windows Cleaner终极指南:3分钟解决C盘爆满,让电脑重获新生![特殊字符]

Windows Cleaner终极指南:3分钟解决C盘爆满,让电脑重获新生!🚀 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是…...

如何用QKeyMapper实现Windows键鼠手柄自由映射:免费开源终极指南

如何用QKeyMapper实现Windows键鼠手柄自由映射:免费开源终极指南 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠&…...

【智能算法】淘金优化算法(GRO)实战:从理论到代码的寻优之旅

1. 淘金优化算法(GRO)初探:从挖矿到代码的奇妙映射 第一次听说淘金优化算法时,我脑海中立刻浮现出19世纪美国西部的淘金热场景。有趣的是,这个算法的发明者K Zolf团队正是从这段历史中获得灵感。想象一下,…...

Webpack优化实战:从配置到性能调优

Webpack优化实战:从配置到性能调优 大家好,我是蔓蔓。在大厂工作时,我负责过多个大型项目的Webpack配置和优化。今天我来和大家分享Webpack优化的实战技巧。 基础优化 合理配置mode // webpack.config.js module.exports {mode: process.env…...

从特征稀缺到精准定位:基于HS-FPN与可变形注意力的白细胞检测新范式

1. 白细胞检测的现状与挑战 在医学影像分析领域,白细胞检测一直是个让人头疼的问题。想象一下,医生需要从密密麻麻的血细胞图像中找出白细胞,就像在沙滩上找特定形状的贝壳一样困难。传统方法主要依赖医生手动操作显微镜,不仅效率…...

C语言实现终端菜单系统:从字符串解析到表驱动设计

1. 项目概述:为什么我们需要一个终端菜单系统?在嵌入式开发、服务器运维或者任何需要在纯命令行终端环境下工作的场景里,我们打交道最多的就是一个“黑框框”。这个黑框框,也就是终端,功能强大但交互原始。每次调试、测…...

【亲测免费】 Teigha各版本使用汇总

Teigha各版本使用汇总 【下载地址】Teigha各版本使用汇总 这份汇总不仅提供了这些版本的下载链接,更重要的是,它详细记录了在C#环境下,特别是使用VS2010作为开发平台时,针对每个版本的测试与使用经验。无论是构建Web应用程序还是W…...

架构实战:面向特种设备合规的非侵入式机器人跨层调度解耦设计

摘要: 在智能园区的多机协同配送业务中,如果上位机调度系统直接与底层品牌各异的电梯强耦合,不仅研发适配成本高,且入侵特种设备总线的方案极难通过国家特种设备检验局的安全审核。面对合规双重限制,架构师亟需一种高度…...