自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Python高效编程

从 Python 基础开始,注重实践,逐渐构建 Python 知识体系

  • 博客(64)
  • 收藏
  • 关注

原创 Python 实现大整数乘法算法

我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法。今天,我们来介绍一种时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 ...

2019-09-15 22:03:50 17989 4

原创 为什么要写个人博客?

做公众号差不多九个月了,今天给大家介绍下:为什么要写个人博客?主要是搭建个人知识体系写博客,可以将你学的七零八碎的知识点整合到一起,形成完整的个人笔记。这份笔记,记录了你...

2019-08-08 22:45:15 2425 9

原创 Python 实现简易版成绩管理系统

上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统。这次的简易版成绩管理系统,主要有六大功能:增加学生信息、删除学生信息、修改学生信息、查找学生信息、显示学生信息、按 ID 排序。实现效果如下:保存与读取信息首先判断当前路径下,是否存在database.txt这个文件。如果不存在的话,就新建一个。如果存在的话,就按行读...

2019-01-14 20:40:05 7404 8

原创 客户端异步非阻塞 IO 新的流模式(基于 Nim 语言)

Nim 编程语言是一个新型的静态类型、命令式编程语言,支持过程式、函数式、面向对象和泛型编程风格而保持简单和高效。Nim 从Lisp继承来的一个特殊特性--抽象语法树(AST)作为语言规...

2020-04-15 21:42:57 684

原创 Nim编程早茶之死代码[dead code]消除

Nim 每日早茶Nim 语言中的死代码[dead code]消除https://tea.nim-cn.com/nim-lang-1.htmlNim 语言中的死代码[dead code]消除?Nim 语言的编译器,会从最终的二进制文件中移除没有使用过的代码。proc deadCode() = echo "I'm not used!"proc hello() = echo ...

2019-11-16 22:02:40 656

原创 hexo 搭建简约的个人博客并部署到云服务器

使用 hexo 搭建一个简约的个人博客并部署到云服务器上。https://tea.nim-cn.com/archives/环境简介我使用的是 ubuntu 系统,使用的是...

2019-11-16 20:24:41 906

原创 Nim 编程入门之产生指数分布的随机数

这一节,我们使用 Nim 语言来实现符合指数分布的随机数。Nim 语言是一门高效而优雅的系统级编程语言,可以编译成 C, C++, javascript 等后端。官网如下:https://nim-lang.org/中文官网:https://nim-cn.com/指数分布是一种连续概率分布,常用来表示随机事件发生的时间间隔。如果 x > 0 f(x)=1βe−xβ f(x) = \f...

2019-11-03 18:15:59 1042

原创 Nim 编程语言实现超级简单的高斯分布

高斯分布(gauss) 常用的一种分布,这一节我们来介绍如何产生符合高斯分布的随机数。Nim 语言是一门高效而优雅的系统级编程语言,可以编译成 C, C++, javascript 等后端。官网如下:https://nim-lang.org/中文官网:https://nim-cn.com/根据中央极限定理,当 N 足够大的时候,我们可以使用 x = sum(ri) - 6,ri 为 0, ...

2019-11-02 12:03:26 543

原创 Nim 语言编程实现超级简单的均匀分布

Nim 语言是一门高效而优雅的系统级编程语言,官网如下:https://nim-lang.org/中文官网:https://nim-cn.com/下面让我们使用 Nim 语言实现一个简单的均匀分布首先设置一个种子值,这决定随机数的初始值。var randomSeed*: int = 0主要函数proc uniformDist*[T: SomeFloat](left: T, rig...

2019-11-01 21:36:28 715

原创 数据结构之单链表[Nim 语言实现]

这一节,我们来介绍单链表这种数据结构。简介单链表是一种逻辑上连续,而在内存存储位置不连续的线性结构。使用单链表,在插入和删除已知节点时,可以以 O(1) 的时间复杂度完成。单链表由一个个节点组成,每个节点包含当前元素,以及下一个节点的位置信息。就和网页上的连接类似,一个页面不仅有当前信息,还包含下一个网页的连接信息。通过指针或者引用,我们就可以像浏览网页那样,过渡到下一个节点。Nim 语言...

2019-10-31 17:29:25 297

原创 Nim 编程实现大整数乘法算法

我们平时接触的长乘法,按位相乘,是一种时间复杂度为 O(n ^ 2) 的算法。今天,我们来介绍一种,时间复杂度为 O (n ^ log 3) 的大整数乘法(log 表示以 2 为底的对数)。介绍原理karatsuba 算法要求乘数与被乘数要满足以下几个条件,第一,乘数与被乘数的位数相同;第二,乘数与被乘数的位数应为 2 次幂,即为 2 ^ 2, 2 ^ 3, 2 ^ 4, 2 ^ n 等数...

2019-09-15 22:18:38 522

原创 超级简单的虚拟机(Python 实现)

我们这次实现的简单虚拟机,和计算机的 cpu 有点类似。无非就是取指令,执行指令之类的操作。常见的虚拟机通常分为两类,一种是栈式虚拟机,另一种是寄存器虚拟机。比如说 CPython, Jvm 就是基于栈的虚拟机,而 lua 则是基于寄存器的虚拟机。我们这次实现的“玩具”虚拟机,就是一种基于栈的虚拟机。虚拟机有三个重要属性,code 代表要执行的指令列表,stack 用于保存临时变...

2019-09-01 22:47:41 7753 1

原创 快速排序 Nim 语言实现

快速排序是一种平均时间复杂度为 nlog(n) 的原地排序,很适合大规模数据排序。它采用一种分而治之的手段,划分子问题,并递归地求解问题,最后将子问题的解合并为原问题的解。

2019-08-29 08:46:17 648

原创 Nim 编程实现计算器

简易计算器我们这次实现的命令行计算器,支持加减乘除、括号、浮点数、负数,以及查看历史和退出功能。主要的思路:read - parse - print - loop。read 阶段是指从读取用户在提示符(cal> )之后输入的字符串。parse 阶段包括:将用户输入的字符串分割成单个对象比如:符号 +,或者数字 1.2 。其次将中缀表达式转化后缀表达式,接下来计算后缀表达式的数值。...

2019-08-15 22:48:05 369

原创 [Python实战]使用栈实现简易计算器

我们这次实现的命令行计算器,支持加减乘除、括号、浮点数、负数,以及查看历史和退出功能。主要的思路:read - parse - print - loop。read 阶段是...

2019-08-13 08:28:14 808

原创 Nim 编程极简入门

Nim 编程极简入门(一)Nim 语言是一门静态类型的编译语言,语法上与 Python 类似,高效而优雅。安装 Nim在官网 https://nim-lang.org/install.html 下载 Nim 文件,下载完成后,点击文件夹中的 finish.exe 程序,会自动安装MingW。之后要将 D:/nim/bin 和 D:/nim/bin/nim.exe 设置为环境变量。可以选择 ...

2019-08-08 16:57:11 2379 1

原创 动画演示 floodfill 算法填充颜色

上次我们谈到如何使用深度优先搜索解决迷宫问题。这次,我们再来看看深度优先搜索的其他应用,来模仿 photoshop 的魔棒功能来填充颜色。使用扫描线填充算法(scan-l...

2019-07-13 15:03:42 1272

原创 动画演示广度优先算法寻找最短路径

上一节,我们刚刚介绍了使用深度优先算法(DFS)解决迷宫问题,这一节我们来介绍广度优先算法(BFS)。BFS 算法与 DFS 十分相似,唯一的区别就是 DFS 算法使用后...

2019-06-18 10:05:25 1063 1

原创 python 实现深度优先搜索(DFS)

深度优先算法(DFS 算法)是什么?寻找起始节点与目标节点之间路径的算法,常用于搜索逃出迷宫的路径。主要思想是,从入口开始,依次搜寻周围可能的节点坐标,但不会重复经过同一个节点,且不能通过障碍节点。如果走到某个节点发现无路可走,那么就会回退到上一个节点,重新选择其他路径。直到找到出口,或者退到起点再也无路可走,游戏结束。当然,深度优先算法,只要查找到一条行得通的路径,就会停止搜索;也就是说只要有...

2019-06-08 13:04:50 28005 3

原创 动画演示深度优先算法搜寻逃出迷宫的路径

深度优先算法(DFS 算法)是什么?寻找起始节点与目标节点之间路径的算法,常用于搜索逃出迷宫的路径。主要思想是,从入口开始,依次搜寻周围可能的节点坐标,但不会重复经过同一...

2019-06-08 13:00:26 1767 27

原创 Python 实现生命游戏

这次我们使用 Python 来实现生命游戏,这是一种简单的元胞自动机。基于一定规则,程序可以自动从当前状态推演到下一状态。制作的成品如下:先来说说生命游戏的规则:在生命游戏中,每个单元格有两种状态,生与死。在我们的实现中,黄色的单元格代表活着的细胞,红色单元格表示死亡的细胞。而每一个细胞的下一状态,是由该细胞及周围的八个细胞的当前状态决定的。具体而言:当前细胞为活细胞周围有两个或者三...

2019-06-06 11:17:57 1300

原创 Karplus-Strong 算法生成音符

大家有没有听过音叉发出的声音?音叉振动产生的声波很接近正弦波。而计算机合成的纯正正弦波,点击下面的音频即可试听。音频地址怎么说呢,和我们平时听到的乐器声完全不一样。这是因为,正弦波只包含一种频率,而我们平时听到的乐器的声波里掺杂着各式各样的频率。其中,我们把声波中强度最高的频率称为基本频率,把基本频率的倍数频率成为泛音。而基本频率与泛音的配合,使得乐器的音色如此优美。正弦波的声音path ...

2019-05-21 18:07:17 876

原创 Karplus-Strong 算法合成音符

大家有没有听过音叉发出的声音?音叉振动产生的声波很接近正弦波。计算机合成的纯正正弦波,点击下面的音频即可试听。下面是频率为 100 HZ 的音频。记得给公众号加个星标,不...

2019-05-19 22:42:36 640 1

原创 用Python实现一个简单的加密程序

生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库。对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而强化自身的编程能力。关注微信公众号:Python高效编程,了解更多基础知识在 Python 中异或操作符为:^,也可以记作 XOR。按位异或的意思是:相同值异或为 0,不同值异或为 1。具体来讲,...

2019-05-17 19:52:54 8370 1

原创 用 Python 加密文件

生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库。但对于日常学习而言,我们可以借助异或操作,实现...

2019-05-17 19:31:30 4815 17

原创 Python 标准库学习 --- string

关注微信公众号:Python高效编程了解更多想要代码写得好,除了参与开源项目、在大公司实习,最快捷高效的方法就是阅读 Python 标准库。学习 Python 标准库,不是背诵每一个标准库的用法,而是要过一遍留下印象,挑自己感兴趣的库重点研究。这样实际做项目的时候,我们就可以游刃有余地选择标准库。作为这一系列的开始,第一个学习的是 string 模块。string 模块作为内置函数 str 的...

2019-05-16 20:19:50 552

原创 通过例子学递归

关注微信公众号:Python高效编程,学习更多实战文章。思考问题在文章正式开始之前,大家先思考一个问题:给定 1 元、2 元、5 元、10 元 四种纸币,如何通过组合(不限制单张纸币的使用次数)购买 12 元的商品?如果不考虑排序次序,有多少种组合方式?如果考虑排列次序,又有多少种可能的组合?例如十张一元的纸币。大家可以尝试使用 Python 解决此类问题,在文章的结尾处,我会提供自己的思考结...

2019-05-11 12:51:36 238

原创 Python精选历史文章合集!

到目前为止,公众号已经写了22篇原创文章。朝花夕拾,就让我们按照难易程度简单回顾以下历史文章。推荐工具类:win10 小而美的软件基础知识类:Python 初学者必备的常用内置函数python 播放音频与录音入门单链表Python 函数如何实现“重载”经验分享类:我的 Python 学习历程与经验分享基础实战类:python 在命令行模...

2019-04-27 20:47:49 332

转载 精选历史文章合集!

到目前为止,公众号已经写了22篇原创文章。朝花夕拾,就让我们按照难易程度简单回顾以下历史文章。推荐工具类:win10 小而美的软件基础知识类:Python 初学者必备的常...

2019-04-27 19:47:10 516

原创 Python 实现代码行数统计

具体代码在微信公众号:Python高效编程后台回复2019420获取。前面我们一直在介绍图形界面,这次换个口味,在命令行实现代码行数统计程序。本程序共 135 行,其中 18 行空行、110 行有效代码、7行注释,大小为 7.71 KB。主要思路通过 argparse 设置四个参数 -f, -p, -s, -r,其中 -f 表示单个 py 文件,-p 表示文件夹地址。-s 接排序的关键字...

2019-04-20 22:53:59 1768

原创 快来算一算你写了多少行代码

前面我们一直在介绍图形界面,这次换个口味,在命令行实现代码行数统计程序。本程序共 135 行,其中 18 行空行、110 行有效代码、7行注释,大小为 7.71 KB。主...

2019-04-20 22:48:29 1013

原创 为你的 Python 程序写个启动工具箱

到目前为止,公众号已经介绍了不少图形界面的软件,比如猜数游戏、PDF阅读器、贪吃蛇游戏、天气查询软件、PDF 阅读器等。为了方便他人使用,我们常把图形界面打包成 exe 文件。但是如果我们只是为了自己使用方便的话,我们有必要把程序打包成几十乃至上百兆的 exe 文件吗?没有必要。我们只要能够快速启动图形界面就可以了。下面我将介绍几种不需要打开 cmd 窗口就可以显示图形界面的方式。Python ...

2019-04-12 21:52:40 953

原创 我的 Python 学习历程与经验分享

关注微信公众号:Python高效编程· 了解更多。关于我某不知名 211 大学的大二学生,读的是通信工程专业。然而我们学校的通信专业偏硬件,编程方面只教 C 语言。而我比较喜欢软件,所以业余时间学点 Python,写一些简单的代码,感觉很快乐。暗夜一开始的时候,我并不喜欢编程,觉得编程很神秘,很害怕编程。尤其是学完 C 语言之后,连个简单的代码也写不出来。讽刺的是,通过背题、刷题,我的 ...

2019-04-09 17:09:21 2659 6

原创 500 行代码实现 PDF 阅读器

500 行代码实现 PDF 阅读器经过两周的迭代,现在我们的 PyReadon 已经具备一般的 PDF 阅读器的基本功能:添加书籍删除书籍阅读书籍保存记录查看书籍信息前几版相比较,这一版优化了书籍的数据结构,支持同时阅读多本书,支持鼠标左键翻页,并通过与 sqlite3 数据库的交互来保存书库以及书籍信息(地址、页数等)。书籍使用 Book 类来保存书籍信息,比如元数据、...

2019-04-05 17:04:37 1443 1

原创 PyQt5 从零开始制作 PDF 阅读器(二)

上一篇文章中,我们实现了 PDF 阅读器的初始界面。这一次,新增了阅读功能,可以实现基本的翻页以及缩放等操作。不过,暂时只可以同时阅读一本书。

2019-03-30 17:13:22 1775 1

原创 PyQt5 从零开始制作 PDF 阅读器(一)

关注微信公众号 Python高效编程后台回复 2019324 来获取源代码此前,我已经写了三篇关于 Ui 界面的文章,分别是:猜数游戏、计时器程序和天气查询软件。这次,我们使用 Python 实现 PDF 阅读器。第一篇文章,主要介绍如何实现主界面,以及添加、删除图书封面,后续会不断完善程序功能。效果图UI 设计首先使用 Qt Designer 设计出图形界面:新建一个 MainWi...

2019-03-24 22:25:55 7590 1

原创 Python 函数如何实现“重载”

文章地址:Python 函数实现重载单分派泛函数假如你想在交互模式下打印出美观的对象,那么标准库中的 pprint.pprint() 函数或许是一个不错的选择。但是,如果你想 DIY 一个自己看着舒服的打印模式,那么你很可能会写一长串的 if/else 语句,来判断传进来对象的类型。def fprint(obj): if isinstance(obj, list): print...

2019-03-13 16:35:36 4267 1

原创 [Python实战]Python制作天气查询软件

Python实战图形界面之天气查询

2019-03-10 18:10:05 2273 2

原创 [Python实战]你也能写的计时器程序

请关注公众号:Python高效编程,发送计时器,便会得到相应的下载地址。文章地址:[Python实战]你也能写的计时器程序上次,公众号介绍了如何使用 Pyqt5 制作猜数游戏界面,并介绍了如何在 Pycharm 中使用 Qt Designer 生成 UI 文件。这次,我们要学习如何写一个简单的计时器程序。首先,我们使用 Qt Designer 来设计计时器的图形界面,参考如下:...

2019-03-04 20:55:19 2637 1

原创 Python 初学者必备的常用内置函数

本文纲要Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间。目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很常见,这里主要介绍一些新手必备函数及其用法。

2019-02-25 21:12:32 380

空空如也

空空如也

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

TA关注的人

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