- 博客(230)
- 收藏
- 关注
原创 数据结构-栈
判断输入的表达式中括号是否匹配(只含左右括号)2)栈顶指针指向当前位置的元素。判断一个字符串是否为对称串。1)先进后出,后进先出。不存在栈满上溢出的情况。
2024-10-06 20:03:23
373
原创 Timeline: 时间线轮播多图
对全国2014-2023年各省市的人口,做出动态柱状图/时间线轮播多图,即每隔一定时间间隔,自动的切换2014、2015、....2023各省市的人口(即2014-2023年全国省市人口排名前12的情况)
2024-10-05 17:18:48
363
原创 数据结构-顺序表的应用
1、有一个顺序表L,假设元素类型ElemType为整型,设计一个尽可能高效的算法,以第一个元素为分界线(基准),将所有小于或等于它的元素移到该基准的前面,将所有大于它的元素移动到该基准的后面。以第一个元素为基准,从右向左找一个小于或等于基准的元素x,从左向右找一个大于基准的元素y,将两者交换,直到全部找完。2、有一个顺序表L,假设元素类型ElemType为整型,设计一个尽可能高效的算法,将所有奇数移到偶数的前面。
2024-09-17 16:33:03
435
原创 数据结构-顺序表
假设一个线性表采用顺序表表示,设计一个算法,删除其中所有值等于x的元素,要求算法的时间复杂度为O(n),空间复杂度为O(1)9、插入数据元素(在第i个位置插入元素e)--ListInsert(& L, i, ElemType e)8、查找第一个值为e的元素的逻辑序号(即元素下标+1)--LocateElem( L, e)10、删除元素(在第i个位置的元素e)--ListDelete(& L, i, & e)7、获取L中的第i个元素的值--GetElem(L,i,&e)
2024-09-16 20:45:40
801
原创 对目录的操作、获取文件信息
4)关于目录分隔符号,在windows下 "/ " 和 "//" 都可以,比如如"d://aaa//bbb//hi.txt"和"d:/aaa/bbb/hi.txt",linux/unix是"/",比如 /root/home/aa.log 因此建议目录分隔符,为了兼容,linux和windows都使用"/"2)f.close():刷新并关闭此流,也就是f.close()内置的flush功能。3)删除目录 d://aaa和d://bbb//ccc。2)创建多级目录 d://bbb//ccc。
2024-09-15 10:54:27
519
原创 文件的常用操作
1)在d盘的a目录下创建abc.txt文件,并写入10句"hello,python"到文件。# 需求:读取在d盘的a目录下的hello.txt文件,hello.txt已经存在。3)在abc.txt原有内容基础上追加10句,"你好!2)在abc.txt内容覆盖成新的内容10句,"hi,c++"需求:在d盘的a目录下创建hi.txt文件,a目录已经创建好。1)判断在d盘的a目录下是否有hi.txt文件,如果有则删除。2)如果没有,则提示"文件不存在"hello.txt文件。
2024-09-14 20:28:26
378
原创 最佳实践-模板设计模式
1)设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式2)设计模式就像经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们再思考和摸索1、基本介绍抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式2、模板设计模式能解决的问题1)当功能内部一部分实现是确定的,一部分是不确定的,这时可以把不确定的部分暴露出去,让子类去实现。
2024-09-08 14:57:17
728
原创 抽象类介绍
1、默认情况下,Python不提供抽象类,Python附带一个模块,该模块为定义抽象基类提供了基础,该模块名称为abc2、当我们需要抽象基类时,让类继承ABC(abc模块的ABC类),使用@abstractmethod声明抽象方法(@abstractmethod用于声明抽象方法的装饰器,在abc模块中),那么这个类就是抽象类3、抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类的抽象方法。
2024-09-08 14:11:49
378
原创 Class对象和静态方法
9. 类 — Python 3.12.5 文档2)类本身也是对象,即:Class对象内置函数 — Python 3.12.5 文档2)@staticmethod将方法转换为静态方法3)静态方法不会接收隐式的第一个参数4)要声明一个静态方法,语法:class C:........5)静态方法既可以由类调用(如 C.f()),也可以由实例调用(如 C().f())
2024-09-08 11:08:39
342
原创 魔术方法介绍
1)在Python中,所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种特殊的方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行2)魔术方法在类或对象的某些事件发生时会自动执行,让类具有神奇的“魔力”。如果希望根据自己的程序定制特殊功能的类,那么就需要对这些方法进行重写3)Python中常用的运算符、for循环、以及类操作等都是运行在魔术方法之上的1)打印对象默认返回:类型名+对象内存地址,子类往往重写__str__,用于返回对象的属性信息。
2024-09-08 10:28:21
477
原创 面向对象编程-多态
1)多态顾名思义即多种状态,不同的对象调用相同的方法,表现出不同的状态,称为多态2)多态通常作用在继承关系上说明:一个父类,具有多个子类,不同的子类对象调用相同的方法,执行的时候产生不同的状态,就是多态。
2024-08-16 11:27:10
372
原创 面向对象编程-多态的引入
1)问题是:代码的复用性不高,而且不利于代码维护和功能扩展。问题分析:如果动物/食物的种类很多,怎么办?传统的方法带来的问题是什么?2)解决方案:引出->多态。
2024-08-15 20:48:02
237
原创 类型注解-type hint
1)随着项目越来越大,代码也就会越来越多,在这种情况下,如果没有类型注解,很容易不记得某个方法的参数类型是什么2)一旦传入了错误类型的参数,Python是解释性语言,只有在运行时才能发现问题,这对大型项目来说是一个巨大的灾难# 对字符串进行遍历# a:str 给形参a进行类型注解,标注a的类型是strprint(ele)# ctrl+p提示参数时,没有类型提示# 如果类型传错了,就会出现异常1)Union类型可以定义联合类型注解2)在变量、函数(方法)都可以使用Union联合类型注解。
2024-08-15 20:08:01
857
原创 面向对象编程-继承
1)继承可以解决代码复用,让我们的编程更加靠近人类的思维2)当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有子类不需要重新定义这些属性和方法。
2024-08-14 17:35:11
624
原创 面向对象编程-封装
1)封装就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部2)程序只有通过被授权的操作,才能对数据进行访问。
2024-08-14 14:25:50
315
原创 作用域(全局变量、局部变量)
5、属性和局部变量可以重名,访问时带上self,表示访问的是属性,没带self,则是访问局部变量。3、作用域的分类:属性作用域为整个类,比如Cat类:cry eat 等方法使用属性。1、在面向对象编程中,主要的变量是成员变量(属性)和局部变量。4、局部变量:也就是方法中定义的变量,作用域是在它的方法中。2、我们说的局部变量,一般是指成员方法中定义的变量。
2024-08-10 17:55:02
186
原创 对象作为参数传递
1)这里我们讨论的对象,是通过我们自定义的类,创建的对象,比如Cat类->cat对象,Person类->person对象。2)看一个案例,分析输出结果。
2024-08-10 17:32:14
244
原创 成员方法介绍
类除了有一些属性外,还会有一些行为,比如人类有年龄、姓名等属性,我们人类还有一些行为比如:可以说话、跑步...,通过学习,还可以做算术题。这时就要用成员方法才能完成。class 类名:属性...行为...类中定义的行为(函数),我们称为:成员方法/方法在类中定义成员方法和前面学习过的定义函数,基本上是一样的(原理和运行机制是一样的),但是还是有点不同(形式上有不同)定义成员方法的基本语法:def 方法名(self,形参列表):方法体1)在方法定义的参数列表中,有一个self。
2024-08-10 14:57:57
213
原创 类与对象的介绍
1)类中定义的属性(变量),我们也称为:成员变量2)属性是类的一个组成部分,一般是字符串、数值,也可以是其他类型(list、dict等),比如前面定义的Cat类的name、age,就是属性定义类的基本语法:class 类名:属性...行为...1)上面是定义类的基本语法,还有很多细节2)class是关键字,表示后面定义的是类3)属性,即定义在类中的变量(成员变量)4)行为,即定义在类中的函数(成员方法)
2024-08-05 17:57:19
447
原创 包的基本使用
1、从结构上看,包就是一个文件夹,在该文件夹下包含一个__init__.py文件,该文件夹可以用于包含多个模块文件,从逻辑上看,包可以视为模块集合2、包的结构形式示意图3、__init__.py:控制包的导入操作4、导入包&使用的基本语法导入:import 包名.模块使用:包名.模块.功能。
2024-08-05 15:08:57
918
原创 排序的介绍
冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序冒泡排序(Bubble Sorting)的基本思路是:重复地走访需要排序的元素列表,依次比较两个相邻的元素,如果顺序(如从大到小或从小到大)错误,就交换它们的位置。重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。在冒泡排序中,值最大(或最小)的元素会通过交换慢慢"浮"到元素列表的"顶端"。就像"冒泡"一样,所以被称为冒泡排序。
2024-07-29 09:21:23
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人