Python
文章平均质量分 59
Python学习笔记
糖心煎蛋
这个作者很懒,什么都没留下…
展开
-
数据结构与算法【Python实现】(十一)RSA加密算法
一、密码与加密传统密码:加密算法是秘密的现代密码系统:加密系统是公开的,密钥是秘密的对称加密(加密解密过程使用一个密钥)非对称加密(加密解密过程使用不同密钥)二、RSA非对称加密系统公钥:用来加密、是公开的私钥:用来解密,是私有的1、RSA加密算法过程p = 53q = 59n = p*qnOut[5]: 3127fai = (p-1)*(q-1)faiOut[7]: 3016e = 3d = 2011(...原创 2022-01-27 13:27:20 · 1616 阅读 · 0 评论 -
数据结构与算法【Python实现】(十)欧几里得算法
约数:如果整数a能被整数b整除,那么a叫做b的倍数,b叫做a的约数给定两个整数a,b,两个数所有公约数中的最大值即为最大公约数如何计算两个数的最大公约数:欧几里得——辗转相除法#递归算法def gcd(a, b): if b == 0: return a else: return gcd(b, a % b)#非递归算法def gcd_2(a, b): while b > 0: r = a % b原创 2022-01-26 23:54:55 · 1461 阅读 · 0 评论 -
数据结构与算法【Python实现】(九)动态规划
一、斐波那契数列Fn =Fn-1 + Fn-2原创 2022-01-26 18:55:33 · 1492 阅读 · 0 评论 -
数据结构与算法【Python实现】(八)贪婪算法
一、贪心算法贪心算法,又称贪婪算法。是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解贪心算法并不保证会得到最优解,但是在某些问题上,贪心算法的解就是最优解。要会判断一个问题能否用贪心算法来计算。eg1:找零问题假设商店老板需要找零n元钱,钱币面额有:100元、50元、20元、5元、1元,如何诏令使得所需钱币张数最少?t = [100, 50, 20, 5, 1]def change(t,n):原创 2022-01-21 12:15:13 · 586 阅读 · 0 评论 -
数据结构与算法【Python实现】(七)平衡二叉搜索树/AVL树
一、AVL树概念AVL树:AVL树是一棵自平衡的二叉搜索树AVL树具有以下性质:根的左右子树的高度之差的绝对值不能超过1根的左右子树都是平衡二叉树balance factor:记录左右子树高度之差二、AVL树的旋转动画:Binary Search Tree, AVL Tree - VisuAlgo插入一个节点可能会破坏AVL树的平衡,可以通过旋转操作来修正插入一个节点后,只有从插入节点到根节点的路径上的节点的平衡可能被改变。我们需要找出第一个...原创 2022-01-19 13:05:16 · 1005 阅读 · 0 评论 -
数据结构与算法【Python实现】(六)二叉树、二叉搜索树
一、树树是一种可以递归定义的数据结构。树是由n个节点组成的结合:如果n=0,是一颗空树;如果n>0,那么一定存在一个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树。树的实例:模拟文件系统class Node: def __init__(self, name, type="dir"): self.name = name self.type = type #"dir" or "file" self.child原创 2022-01-17 17:11:56 · 935 阅读 · 0 评论 -
数据结构与算法【Python实现】(五)哈希表
一、哈希表哈希表是一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作:insert(key,value):插入键值对(key,value)get(key):如果存在键为key的键值对则返回其value,否则返回空delete(key):删除键为key的键值对直接寻址表:key为k的元素放到k位置上改进直接寻址表:哈希 Hashing构建大小为m的寻址表Tkey为k的元素放到h(k)位置上h(k)是个函数,将k...原创 2022-01-14 16:53:48 · 1037 阅读 · 0 评论 -
数据结构与算法【Python实现】(四)链表
一、链表原创 2022-01-13 17:15:39 · 65 阅读 · 0 评论 -
数据结构与算法【Python实现】(三)栈和队列应用——迷宫问题
一个二维列表表示迷宫(0表示通道,1表示围墙),给出算法,求一条走出迷宫的路径1、使用栈——深度优先搜索回溯法 一条路走到黑,不行就回退思路:从一个节点开始,任意找下一个能走的点,当找不到能走的点时,退回上一个点寻找是否有其他方向的点使用栈存储当前路径,没有路时出栈maze = [ [1,1,1,1,1,1,1,1,1,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,0,0,1,1,.原创 2022-01-13 00:05:20 · 795 阅读 · 1 评论 -
数据结构与算法【Python实现】(三)列表、栈、队列
数据结构指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成简单来说,数据结构就是设计数据以何种形式保存在计算机中。程序 = 数据结构 + 算法数据结构按照逻辑结构可以分为线性结构、树结构和图结构线性结构:数据结构中的元素存在一对一的相互关系树结构:存在一对多的相互关系图结构:存在多对多的相互关系一、列表(数组)列表(其他语言称数组)是一种基本数据类型1、列表中的元素是如何存储的?数组如何查找:32位机器上,一个整数占4个字节。按照列原创 2022-01-11 23:14:19 · 921 阅读 · 0 评论 -
数据结构与算法【Python实现】(二)其他排序
一、其他排序1、希尔排序一种分组插入排序算法首先取一个整数 d1=n/2 ,将元素分为 d1 个组,每组相邻两元素之间距离为 d1 ,在各组内进行直接插入排序,相当于分组插入排序取第二个整数 d2 = d1/2,重复上述分组排序,直到 d1=1,即所有元素在同一组内进行直接插入排序希尔排序每趟并不使某些元素有序,而是使整体数据越来越接近有序;最后一趟排序使所有数据有序。def insert_sort_gap(li,gap): for i in range(gap, len(原创 2022-01-07 22:13:56 · 940 阅读 · 0 评论 -
数据结构与算法【Python实现】(一)查找和基础排序
一、汉诺塔问题def hanoi(n,a,b,c): #从a经过b移动到c if n>0: hanoi(n-1,a,c,b) #从a经过b移动到c print("盘%d moving from %s to %s" %(n,a,c)) hanoi(n-1,b,a,c) #从b经过a移动到chanoi(2,'A','B','C')递推式 h(x)=2h(x-1)+1 约等于2的n次方二、顺序查找...原创 2022-01-04 22:08:37 · 903 阅读 · 0 评论 -
Python | eval 函数
eval()函数:将字符串当成有效的表达式 求值并返回计算结果eg:eval计算器input_str = input("请输入计算题:")print(eval(input_str))不要滥用eval:在开发时不要使用 eva l直接转换 input 的结果eg:如果在eval中输入system方法,可以执行任何的终端命令,会造成危险,如:#查看了当前目录下的所有文件__import__('os').system('ls') #在当前目录下新建了文件__import__原创 2021-12-23 00:34:58 · 229 阅读 · 0 评论 -
Python | 文本编码
文本文件存储的内容是基于字符编码的文件,常见的编码有ASCII码、UNICODE编码等1、ASCII编码一个ASCII编码在内存中占用1个字节的空间,计算机中只有256个ASCII字符 (2的8次方)2、UNICODE编码计算机中使用1-6个字节来表示一个UTF-8字符,涵盖了地球上几乎所有地区的文字大多数汉字会使用3个字节标识UTF-8是UNICODE的一种编码格式<python2默认使用ASCII,python3默认使用UNICODE>如何在pyt..原创 2021-12-22 21:39:03 · 876 阅读 · 0 评论 -
Python | 文件操作、os模块
一、操作文件的步骤 打开文件、读/写文件、关闭文件二、操作文件的函数方法open打开文件,并返回文件操作对象read将文件内容读取到内存write 将指定内容写入文件close关闭文件open函数负责打开文件,并返回文件对象read/write/close三个方法都需要通过文件对象来调用1、read方法——读取文件open函数 的第一个参数是要打开的文件名(区分大小写) 如果文件存在,返回文件操作对象;如果不存...原创 2021-12-22 16:05:54 · 176 阅读 · 0 评论 -
Python | 包、发布模块
一、包的概念包是一个包含多个模块的特殊目录目录下有一个特殊的文件__init__.py优点:使用 import 包名可以一次性导入包中的所有模块__init__.py要在外界使用 包 的模块,需要在__init__.py中指定对外界提供的模块列表eg:from . import send_messagefrom . import receive_message二、发布模块如果希望自己开发的模块,分享给别人,可以按照以下步骤1、制作发布压缩包的步骤(原创 2021-12-22 12:36:38 · 506 阅读 · 1 评论 -
Python | 模块
一、模块的两种导入方法1、import 模块名导入后,使用模块提供的工具——全局变量、函数、类为模块起别名:import 模块名1 as 别名2、from 模块名 import 工具名导入后,不需要通过模块名,可以直接使用模块提供的工具——全局变量、函数、类如果两个模块存在同名的函数,那么后导入模块的函数会覆盖掉先导入的函数一旦发现冲突,可以用as关键字给其中一个工具起一个别名3、from 模块名 import * (不推荐使用)导入后,不需要通过.原创 2021-12-21 19:44:29 · 64 阅读 · 0 评论 -
Python | 异常
一、异常程序在运行时,如果解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常。程序停止执行并提示错误信息 这个动作,称之为 抛出(raise)异常。程序开发时,很难将所有的特殊情况都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性二、捕获异常1、简单的捕获异常语法在程序开发中,如果对某些代码的执行不确定是否正确,可以增加 try 来捕获异常try: 尝试执行的代码except: 出现错误处理t.原创 2021-12-21 16:41:19 · 289 阅读 · 0 评论 -
Python | 单例模式、new方法
一、单例设计模式1、设计模式 设计模式是前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题的成熟的解决方案 使用 设计模式 是为了可重用代码,让代码更容易被让人理解,保证代码可靠性2、单例设计模式 目的——让 类 创建的对象,在系统中只有唯一的一个实例 每一次执行 类名( ) 返回的对象,内存地址是相同的,如音乐播放器 同时只能播放一首歌。二、__new__方法使用类名() 创建对象时,...原创 2021-12-21 13:14:23 · 799 阅读 · 0 评论 -
Python | 静态方法
一、静态方法在开发时,如果需要在类中封装一个方法,这个方法: 既 不需要 访问 实例属性 或 调用实例方法 也 不需要 访问 类属性 或 调用类方法就可以将这个方法封装成一个 静态方法语法如下:@staticmethoddef 静态方法名(): pass静态方法 需要使用修饰器@staticmethod 标识,来告诉解释器这是一个静态方法通过类名,调用静态方法eg:class Dog(object): dog_cou...原创 2021-12-20 22:00:34 · 484 阅读 · 0 评论 -
Python | 类属性和类方法
一、实例1、使用面向对象开发。第一步是设计类2、使用 类名() 创建对象,其动作有两步: a.在内存中为对象分配空间 b.调用初始化方法__init__为对象初始化3、对象创建后,内存中就有了一个对象的实实在在的存在——实例通常把创建出来的对象叫做类的实例,对象的属性叫做实例属性在程序执行时,对象各自拥有自己的实例属性,调用对象的方法,可以通过self.【每个对象都有自己独立的内存空间,保存各自不同的属性】【多个对象的方法,在内存中只有一份...原创 2021-12-20 21:53:38 · 450 阅读 · 0 评论 -
Python | 多继承
一、多继承概念子类 可以拥有多个父类,并且具有所有父类的属性和方法语法:class 子类名(父类1,父类2……) pass<注>如果不同的父类中存在同名的方法,应该尽量避免使用多继承二、MRO—方法搜索顺序Python中针对类提供了一个内置属性__mro__ 可以查看方法搜索顺序MRO是method resolution order,主要用于在多继承时 判断方法、属性的调用路径eg:print(子类名.__mro__)三、新原创 2021-12-20 17:06:17 · 479 阅读 · 0 评论 -
Python | 单继承、方法重写、多态
面向对象的三大特性:1、封装,根据职责将属性和方法封装到一个抽象的类中2、继承,实现代码的重用,相同的代码不需要重复的编写3、多态,不同的对象调用相同的方法,产生不同的实行结果,增加代码的灵活度一、单继承1、继承的概念、语法和特点继承的概念:子类 拥有 父类 的所有方法和属性语法:class 类名(父类名): pass子类 继承自 父类,可以直接享受父类中已经封装好的方法,不需要再次开发子类中应该根据职责,封装子类特有的属性和方法<子类是父类的原创 2021-12-20 12:58:39 · 411 阅读 · 0 评论 -
Python | 私有属性和私有方法
应用场景: 在实际开发中,对象的某些属性和方法 可能只希望在对象的内部被使用,而不希望在外部被访问到。私有属性就是对象不希望被公开的属性;私有方法就是对象不希望被公开的方法定义方式: 在定义属性或方法时,在属性名/方法名前增加两个下划线__,定义的就是私有属性/方法 在对象的内部方法中,可以访问对象的私有属性...原创 2021-12-20 12:22:48 · 320 阅读 · 0 评论 -
Python | 类和对象
一、类和对象类和对象是面向对象编程的两个核心概念1、类类是对一群具有相同特征或行为的事物的一个统称,是抽象的,不能直接使用。就像一个模板,是负责创建对象的。 特征 被称为 属性 行为 被称为 方法2、对象对象是由类创建出来的一个具体存在,可以直接使用由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法<先有类,再有对象>3、类和对象的关系类是模板,对象是根据类这个模板创建出来的。类只有一个,而对象可以有很多个...原创 2021-12-19 16:11:03 · 11436 阅读 · 2 评论 -
Python | 函数的返回值、缺省参数和多值参数
一、函数返回多个值 利用元组可以返回多个值<在函数内部,修改局部变量的引用,不会影响到外部变量的应用如果使用了 方法 修改数据的内容,会影响到外部全局变量的数据>⭐ += 运算符 在Python中,列表变量调用 += 运算符本质上是在执行列表变量的extend方法,会影响外部的变量二、缺省参数定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做 缺省参数调用函数时,如...原创 2021-12-18 16:40:00 · 864 阅读 · 0 评论 -
Python | 变量的引用
一、变量的引用 变量 和 数据 都是保存在内存中的 在Python中函数的 参数传递 以及 返回值 的都是靠 引用 传递1、引用Python中: 变量 和 数据 是分开存储的;数据保存在内存中的一个位置;变量中保存着数据在内存中的地址 变量中记录数据的地址,就叫做引用 使用 id() 函数可以查看变量中保存数据所在的内存地址<注> 如果变量已经被定义,当给一个变量赋值的时候...原创 2021-12-18 16:00:15 · 6154 阅读 · 0 评论 -
Python | 字符串相关方法
1、判断类型2、查找与替换3、大小写转换4、文本对齐5、去除空白字符6、拆分和连接原创 2021-12-18 15:33:21 · 383 阅读 · 0 评论