自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 python hashlib模块及实例

密码撞库,简单理解就是创建一个猜测可能是明文密码的字典,然后将这些明文转换成密文,然后跟截获的密文进行比对,但密文相同的话那么通过字典就知道了对应的明文密码。可以看到,这里传入的密码1跟密码2 的长度是不一样的,但是经过同一种hash算法转化成密文之后密文的长度是一样长的,所以经过同一中hash算法,不管传入的明文密码的长度是多长,转换后的密文长度都是一样长的。为了方便理解,我们可以将hashlib中的hash算法理解为一个工厂,用户传入的明文为原材料,而后输出的密文就是该工厂经过加工的产品。

2023-11-01 22:23:18 321

原创 随机生成验证码实例

随机生成验证码

2023-10-25 22:11:51 224

原创 python time 模块

在python中对于时间的描述存在三种格式

2023-10-25 21:27:11 193

原创 python内置函数sorted,map,filter,匿名函数lambda

需要明确的是匿名函数也是函数,也就是说“lambda x,y:x+y ”这段代码其实也是在进行定义的。那么就可以 " ret(1,2)" 这样进行调用了,但是这样是可以进行调用,但是违背了匿名函数的宗旨:匿名。从定义上看,匿名函数简单来说就是没有名字的函数,在调用的时候不是通过函数名字来调用的。而对于匿名函数来说,匿名函数不需要显示地定义函数名,使用【lambda + 参数 +表达式】的方式。了解内置函数的读者,可能知道这个函数可以为列表进行排序,下面我们仔细看看这个函数。map 函数是映射的作用。

2023-10-15 10:20:10 111

原创 可迭代对象,迭代器对象

什么是可迭代对象和迭代器对象?简单来说,迭代就是迭代取值,每次取出来的值都是基于上一次取出的值继续的结果。注:简单的循环并不是迭代。列表,元组,集合,字典,都是可迭代对象,为什么这么说呢?简单来说就是这些类型的下面都内置了__iter__()内置函数,通过内置函数__iter__()可以将可迭代对象转化成迭代器对象。

2023-10-11 17:15:59 38

原创 python无参装饰器实现

什么是装饰器呢,简言之,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。这里为其传递多个参数,那么按照位置参数将实参传递为形参,但是从上面的例子可以看出来,3,4,5,6这个实参并没有对应的位置参数,那么这个时候*args就将这些没有对应的位置形参的实参整合成一个元组(3,4,5,6)。那么装饰器就登场了,装饰器就是在不更改原函数代码的基础上进行扩展函数的功能。

2023-09-28 19:57:10 65

原创 python闭包函数

因为,我们知道函数名在内存中的存储就是函数体的内存地址,那么既然是数据就可以当作变量来使用,这里直接返回的是函数f 的内存地址,通过一个变量名res来接收返回值,但是如果我们返回的是f()的话,就导致返回给res的值是None,(也就是函数 f 的执行结果)并不是内存地址,也就无法实现在全局名称空间中直接调用函数f。其实在装饰器中,我们封装函数,但是在装饰器中并不是所用的函数都是有参函数和无参函数,但是有些时候有需要我们去向函数中传递参数,那么这个时候就可以用到了闭包函数。其实闭包函数的功能还是很强大的。

2023-09-26 14:08:26 113

原创 python中函数对象多重选择代码优化

一,函数内存中的存储二,函数对象三,函数中的多个选择代码优化。

2023-09-24 12:07:22 102

原创 python名称空间详解

在为变量命名的时候会在不经意间创建了相同名称的变量名,这时,当我们需要用到这个变量的时候,计算机并不知道我们需要的时哪个变量。所以这时,名称空间就起到了作用。名称空间提供了在项目中避免名字冲突的一种方法。各个命名空间是独立的,没有任何关系的,所以一个名称空间中不能有重名,但不同的名称空间是可以重名而没有任何影响。例如:在计算机文件目录中,同意路径下不能存在相同名字的文件(夹),但是在不同的路径下可以存在相同名字的文件(夹)。

2023-09-22 20:22:07 104

原创 N皇后问题(回溯算法来解决)

所以算法的具体思想就是将 N 个皇后逐一放置在不同的行,以“回溯”的方式逐一测试出每行皇后所在行的具体位置,最终确定所有皇后的位置。我们可以看到,从左上至右下这条对角线来说,点的坐标y-x的绝对值是一个定值,而对于从左下至右上这条对角线来说,点的坐标y+x的值是一个定值。可以把八皇后问题扩展到n皇后问题,即在n×n的棋盘上摆放n个皇后,使任意两个皇后都不能处于同一行、同一列或同一斜线上。我们用一个数组来进行存放每行皇后所在的列的位置,这样既方便进行打印,同时也方便进行位置的比价。

2023-07-20 11:08:46 234

原创 回溯算法解决迷宫问题

2)然后选择一个方向进行移动,将行走过的位置记为“Y”,如果这个位置就是终点位置的话就表示找到了一条通向终点的路线(这样的话打印出来的就是Y就表示一条路线)。在程序中我们运用不同的字符来表示迷宫中的不同区域,1表示可以行走的位置,0表示黑色墙壁障碍,这样的话迷宫就可以用矩阵来表示。解决,即从起点开始,采用不断“回溯”的方式逐一试探所有的移动路线,最终找到可以到达终点的路线。4)重复2,3步,要么会找到终点的位置,要么会回溯到起点位置,表明所有位置都已经判断完毕了。//判断是否可以向上移动。

2023-07-19 11:21:33 745

原创 汉诺塔问题(递归)

汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。每次只能移动柱子最顶端的一个圆盘;每个柱子上,小圆盘永远要位于大圆盘之上;一根柱子上摞着 3 个不同大小的圆盘,那么在不违反规则的前提下,如何将它们移动到另一个柱子上呢?如图提供一种解决方案:汉诺塔问题中,3 个圆盘至少需要移动 7 次,移动 n 的圆盘至少需要操作 2n-1 次。

2023-07-18 12:45:52 128

原创 哈希查找算法

哈希查找算法又称散列查找算法,是一种借助哈希表(散列表)查找目标元素的方法,查找效率最高时对应的时间复杂度为 O(1)。哈希查找算法既支持有序数列也支持无序数列,是比较高效的查找算法。

2023-07-14 10:51:39 33

原创 插值查找算法

插值查找算法,其实是对二分查找的改良。同二分查找算法一样,都是针对的是有序数组,换句话说,就是插值查找算法和二分查找算法都是只能在升序或者是降序的数组中查找目标元素。但是插值查找算法作为二分查找算法的“改良版”,它所针对的有序数组又存在另一条限制,就是该数组中的元素必须是均匀分布的,例如:{1,2,3,4,5,6,7,8,9,10}这样的升序数组元素分布就是均匀的,因为元素之间的差值都是同一个值。像{10,30,70,100,500}这样的升序数组元素的分布就不是均匀的。

2023-07-13 10:46:48 57

原创 顺序查找算法

顺序查找算法又称顺序搜索算法或者线性搜索算法,是所有查找算法中最基本、最简单的,对应的时间复杂度为O(n)。顺序查找算法适用于绝大多数场景,既可以在有序序列中查找目标元素,也可以在无序序列中查找目标元素。

2023-07-12 10:50:53 341

原创 从数组中查找最值(三种基本算法)

程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢?所以这里简单提供了三种比较常见的算法来查找数组中的最值(这里以查找最大值为例)

2023-07-12 10:33:38 16140

原创 计数排序算法

通过统计序列中各个元素出现的次数,完成对整个序列的升序或降序排序。

2023-07-08 10:46:46 48

原创 快速排序算法

快速排序算法是在分治算法基础上设计出来的一种排序算法,和其它排序算法相比,快速排序算法具有效率高、耗费资源少、容易实现等优点。

2023-07-07 10:06:49 21

原创 摩尔投票算法查找多数元素(绝对众数)

首先先确定数组的第一个元素作为当前查找元素,然后向后遍历,当遇到相同元素就让计数器加1,遇到不同的元素就让计数器减1,当计数器的值减为0时,则当前的元素值并不是绝对众数,则换下一个元素作为当前查找元素,然后重复上面的操作。当遍历完整个数组后,计数器还不为0 ,则该数就是绝对众数。摩尔投票算法是一个比较冷门的算法,一般都是用来解决绝对众数问题,绝对众数就是其在整个数组元素中,个数大于n/2(n表示整个数组长度)。该算法的时间复杂度为O(n),空间复杂度较高效。

2023-07-06 16:21:56 99

原创 希尔排序算法

希尔排序算法是更一种高效的插入排序算法,和普通的插入排序算法相比,希尔排序算法减少了对元素的大小比较和移动元素的次数,从而提高了算法的效率。

2023-07-06 10:26:45 35

原创 插入排序算法

利用排序算法对数据进行升序或者是降序。

2023-07-05 11:22:29 60 1

原创 数组指针讲解

C语言中的数组指针讲解

2023-05-30 15:08:02 93

原创 C语言游戏项目——贪吃蛇游戏

C语言实现基本项目——贪吃蛇游戏

2023-05-25 16:19:11 1294 1

原创 整数在内存中的存储,原码,反码,补码

整数存储时的原码,反码,补码

2023-03-13 17:17:56 128

原创 #实现三子棋细解

#三子棋细解

2022-12-15 16:54:55 60 1

原创 sizeof 和 strlen 的区别和用法

sizeof 和 strlen 的区别和用法

2022-11-26 18:57:19 699

原创 #打印杨辉三角

#打印杨辉三角

2022-11-23 20:24:59 77

原创 #求最大公约数的三种常见方法

#求最大公约数的三种常见的方法

2022-11-19 11:58:25 458

原创 #有序序列合并

#有序序列合并

2022-11-14 16:16:16 124

原创 #对序列中整数去重

#对序列中整数去重

2022-11-14 15:36:08 302

原创 在序列中删除指定的数

在序列中删除指定的数

2022-11-14 09:15:20 177

原创 判断序列是否为有序序列

判断一个序列是否是有序序列

2022-11-13 17:30:26 602

原创 求最小公倍数的三种方法

求最小公倍数的三种方法

2022-11-12 11:29:39 1853

原创 在有序数组中查找元素的两种常见方法(顺序查找和折半查找)

在有序数组中查找元素的两种常见的方法(顺序查找和折半查找)

2022-11-11 16:01:56 541

原创 C语言浮点数保留两位小数,对第三位小数进行四舍五入

C语言对浮点数保留两位小数,对第三位小数进行四舍五入

2022-11-10 13:19:59 3454

原创 字符串比较(或登陆验证)

字符串比较函数strcmp的调用,字符串之间比较(或者用户登录验证)

2022-11-09 16:06:06 232

原创 比较二值图像相似度

比较二值图像相似度(两个二维数组的相似度)

2022-11-09 10:02:19 669

原创 寻找数组中的众数(找出超一半的数)

寻找数组中的众数(找出超一半的数)

2022-11-08 15:38:45 592 2

原创 求素数的几种常见方法

求解素数的常见的两种方法

2022-11-08 11:06:56 1305 1

原创 有序序列插入一个数字

向一个有序序列中插入一个数而不改变原来数组的顺序

2022-11-07 16:58:30 734 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除