1695_week2_算法与函数(MIT使用Python编程学习手记)

2023-05-16

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com)

首先说明一下,这部分信息的整理只是我个人的理解。由于自己的知识功底以及英语水准,很可能会有大量的疏漏。再此,我只想把自己学习时候的一点收获整理分享一下。如果能够给别人一点点帮助,荣幸之至。如果有错误,也请予以斧正。如果感觉我有描述不清的,当然也可以跟我邮件交流。由于直接复制代码排版上会有很多问题,稳文中代码全都截取VIM编辑器的界面展示。如果需要代码可以给我发邮件索取,以下是我的联系方式:

Email : greyzhang@126.com

这部分学习需要有一定的Python学习基础了,需要掌握的概念大致有以下几个:

Python的语法、Python的数据类型(整形、浮点、元组、列表、字典等)。有一个数据类型需要单独拿出来强调一下,那就是布尔量。接下来的很多判断或者程序分支的概念会建立在最一个布尔量的判断基础上。

在之前的学习手记中已经总结了一部分Python的语句操作,我们可以通过在Python shell中年输入一系列的语句来实现某个功能。看起来,我们是让计算机运行了我们的软件功能,但是功能肯定是远远不够。

迭代

在程序设计中,一个很重要的算法概念便是迭代。通过迭代,我们可以反复重用同一段代码来解决我们的问题。通过程序语言对我们需要处理的信息进行描述,然后再迭代的程序段中反复执行我们写好的一段程序,在执行的过程中通过对布尔量的查看判断来确认我们是否找到一个合适的结果。这是对“猜想——验证”的计算机思考方法的一种实践尝试。

接下来通过一个简单的小例子来说明一下:通过Python实现求解一个正整数点额平方。

代码如下:

这里我们用到了while循环,while循环最简单的结构如下:

While <判断条件>:

循环体

以上程序的执行结果:

>>> ================================ RESTART ================================

>>>

3*3 = 9

如果改变x的数值,可以得到你想要的不同结果。比如改成12345,执行结果如下:

>>> ================================ RESTART ================================

>>>

12345*12345 = 152399025

虽说此处还谈不上代码的优化,使用Python可以有更好的实现方法。但是可以看出的式程序执行速度还是很快的,一瞬间就可以得出你想要的结果。

猜想——验证

“猜想——验证”是计算机思维的一种常用的方法,我们假定一系列的可能性然后一次次验证,最终判断是否有我们想要的结果。

通过一个简单的例子来说明一下:寻找一个整数是否存在整数立方根。

我们可以从0开始,直到这个数本身为止一次次查看猜测数值的三次方是否等于给出的整数。如果找到那就寻找到了这个数的整数立方根,如果找不到,那这个数肯定是没有整数立方根。

设计代码如下:

执行结果如下:

>>> ================================ RESTART ================================

>>>

input a number:123

can't find %d's cube root

>>> ================================ RESTART ================================

>>>

input a number:27

cube root of 27 is: 3

通过以上的例子可以看出“猜想——验证”方法的大致步骤:

1,给出初始的猜想

2,在循环的结构中不断验证,如果满足条件则终止,因为找到了我们要的答案。如果不满足验证条件,那么在循环结构中改变猜想再次验证。

常用迭代的特点:

通过以上几个例子大致可以总结出常用迭代程序的特点:

1,有一个状态变量

a,在循环体外进行初始化

b,在循环体中改变状态量

c,判断验证的依据来自于状态量的变化

2,状态量递减:

A,初始化的数值为整数

B,执行的时候整数非负

C,<=0的时候结束

D,在循环中递减

以上特点并不是所有迭代程序的特征,但是是常用迭代程序一般都有的特点。如果满足以上特点的迭代程序,我们可以通过看状态量的数值来弄清楚我们程序的执行度。由于规律递减的存在,我们很清楚就能够知道到底还有多少没有执行完。

For循环:

While循环通常可以用来对一系列信息进行验证,如同我们前面看到的数字。在Python中,对这种情况的处理还有另外一种特殊的方式叫做for循环。

For循环的结构入下:

For <判断条件> :

循环体

在for循环中,循环的状态量首先被绑定为序列中的第一个元素,然后执行循环体程序。循环体执行结束后,状态量绑定为第二个元素,执行循环体程序,一直这样执行下去。如果遇到break,循环会直接终止。

如果想使用一系列连续的数字序列,可能会用到Python的内置函数range(n)。这个函数可以用来产生0到n-1的连续数字序列。函数是重载的,针对不同的需要也可以有更加方便的使用方式。

下面使用for循环实现上面的cube root功能:

执行结果如下:

>>> ================================ RESTART ================================

>>>

input a number:27

cube root of 27 is 3

>>> ================================ RESTART ================================

>>>

input a number:-27

cube root of -27 is -3

>>> ================================ RESTART ================================

>>>

input a number:123

123 is not a perfect cube

以上代码不仅完成了与之前while循环相同的功能,而且同时支持负数的判断。

浮点数的处理;

首先看一下十进制的表示:

302 = 3*10**2 + 0*10**1 + 2*10**0

为什么我们的祖先首先采用的是十进制的计数方式呢?那是因为我们有十根手指头,但是计算机没这个。计算机知道的就只有开或者关两种状态,只知道0或者1。

这样,用二进制表示一个十进制的例子如下:

10011 = 1*2**4 + 0*2**3 + 0*2**2 + 1*2**1 + 1*2**0

(用十进制表示是19 = 16 + 2 + 1)

在计算机的内部,数字是以二进制的形式才存储的。考虑一下10011除以2后的表达方式,实际上可以表示为:1*2**3 + 0*2**2 + 0*2**1 + 1*2**0。如果在计算机中进行除以2的操作,实际上是把二进制的数值向右移动了一位。

把这思考的一切用Python处理展示出来,可以设计如下的代码:

执行效果如下:

>>> ================================ RESTART ================================

>>>

input a number:19

10011

>>> ================================ RESTART ================================

>>>

input a number:-19

-10011

如果考虑到分数会是怎么样呢?

3/8 = 0.375 = 3*10**(--1) + 7*10**(-2)+5*10**(-3)

0.375 * (2 ** 3) = 3(十进制)

转换为二进制:11

除以(2**3),也就是右移三位:0.011(二进制)

设计代码如下:

代码执行结果如下:

>>> ================================ RESTART ================================

>>>

Enter a decimal number between 0 and 1: .375

Remainder = 0.375

Remainder = 0.75

Remainder = 0.5

011

.011

The binary representation of the decimal 0.375 is .011

>>> ================================ RESTART ================================

>>>

Enter a decimal number between 0 and 1: .1

Remainder = 0.1

Remainder = 0.2

Remainder = 0.4

Remainder = 0.8

Remainder = 0.6

Remainder = 0.2

Remainder = 0.4

Remainder = 0.8

Remainder = 0.6

Remainder = 0.2

Remainder = 0.4

Remainder = 0.8

Remainder = 0.6

Remainder = 0.2

Remainder = 0.4

Remainder = 0.8

Remainder = 0.6

Remainder = 0.200000000001

Remainder = 0.400000000001

Remainder = 0.800000000003

Remainder = 0.600000000006

Remainder = 0.200000000012

Remainder = 0.400000000023

Remainder = 0.800000000047

Remainder = 0.600000000093

Remainder = 0.200000000186

Remainder = 0.400000000373

Remainder = 0.800000000745

Remainder = 0.60000000149

Remainder = 0.20000000298

Remainder = 0.40000000596

Remainder = 0.800000011921

Remainder = 0.600000023842

Remainder = 0.200000047684

Remainder = 0.400000095367

Remainder = 0.800000190735

Remainder = 0.60000038147

Remainder = 0.200000762939

Remainder = 0.400001525879

Remainder = 0.800003051758

Remainder = 0.600006103516

Remainder = 0.200012207031

Remainder = 0.400024414062

Remainder = 0.800048828125

Remainder = 0.60009765625

Remainder = 0.2001953125

Remainder = 0.400390625

Remainder = 0.80078125

Remainder = 0.6015625

Remainder = 0.203125

Remainder = 0.40625

Remainder = 0.8125

Remainder = 0.625

Remainder = 0.25

Remainder = 0.5

0001100110011001100110011001100110011001100110011001101

.0001100110011001100110011001100110011001100110011001101

The binary representation of the decimal 0.1 is .0001100110011001100110011001100110011001100110011001101

关于不能够表示为num/(2 ** n)的这种形式,判断结束条件当然不能够以能够整除为条件。因为数据的存储在计算机中的位数是有限制的。在一定精度内,这种判断可以使用一个比较小的精度值与之比较作为结束的判断条件。

常用的算法:

逐次逼近

1,选择合适的步长

太小计算时间长

太大可能计算不出结果

2,给出一个最小精度作为判断条件

二分查找

1,选择中间数

判断

根据判断决定是否再次二分查找

结束条件:达到允许精度

2,特点

缩短周期

更加智能化

适合处理有序序列

牛顿-莱布尼茨

1,g - p(g)/p’(g)是多项式方程的猜想更优解

2,特点:

高效

需要数学处理作为前提

求解平方根:

逐次逼近法:

执行结果:

>>> ================================ RESTART ================================

>>>

root of number 25.000000 is 4.999000

>>> ================================ RESTART ================================

>>>

root of number 24.000000 is 4.897959

结果还算是精确,由于步长选择比较小运算时间较长。

二分查找:

执行结果:

>>> ================================ RESTART ================================

>>>

12.5

6.25

3.125

4.6875

5.46875

5.078125

4.8828125

4.98046875

5.029296875

5.0048828125

4.99267578125

4.99877929688

5.00183105469

5.00030517578

5.00030517578

牛顿-莱布尼茨:

执行结果:

>>> ================================ RESTART ================================

>>>

13.0

7.46153846154

5.40602696273

5.01524760194

5.00002317825

5.00002317825

尝试做一个复杂运算,求12345的平方根:

关于迭代的概括:

1,用相同的方法反复验证>>> ================================ RESTART ================================

>>>

6173.0

3087.499919

1545.74914984

776.867784296

396.37925959

213.761837095

135.756512451

113.345688237

111.130142813

111.108057708

111.108057708

11次迭代便得出一个很好的解,足以看出算法优秀的重要性。如果采用逐次逼近,这将会是很大的工作量。

2,猜测的方式可以灵活使用多种算法。

函数:

关于函数,解决的问题不仅仅是功能的重用还有一个功能的抽象。函数可以把一个功能抽象出来,让其他人在不需要考虑函数的实现细节的基础上使用它。这种抽象可以称之为黑盒抽象,这不仅让代码重用变得更加简单也让代码的调试变得更加容易。

能够开始学习函数的设计,需要有基本的Python语言知识以及循环结构的了解,这些之前已经整理。之前的循环结构的确是能够在一定程度上解决代码重用的问题,但是解决的不够完美,如果我们需要重复多个循环那我们需要把整个循环体代码拷贝多次。这也带来了另外一个问题——变量的管理以及代码修改的困难。很可能我们使用的多个拷贝代码段中的变量会相互影响,当需要改变某一个语句的时候我们也可能需要修改多次。函数在使用上则要比这方便的多。

下面在举例演示一下函数的使用,通过一个简单的函数实现求两个数值中的最大值。

代码如下:

在IDLE中load之后,运行效果如下:

>>> ================================ RESTART ================================

>>>

>>> MaxNum(223,112)

223

>>> MaxNum(-6,-10)

-6

>>> x = 1

>>> y = 2

>>> MaxNum(123,456)

456

>>> MaxNum(x,y)

2

上面不仅能够看到代码可以重用,结果不受上次调用的影响,而且能够看到在IDLE环境中的x,y的赋值不会影响到函数中的x和y的数值。这是因为函数有着自己独立的变量空间,而且互不影响。关于每次调用的互不影响,递归的算法可以很好地说明,这个后面有时间在做整理。关于独立的变量空间,可以把上面的代码修改一下,如下:

LOAD到IDLE中测试使用如下:

>>> ================================ RESTART ================================

>>>

>>> MaxNum(123,321)

321

>>> MinNum(123,456)

123

>>> x = 1

>>> AddX(x)

3

通过以上例子,可以很好地说明函数的参数的特点。在其他的语言中,参数可能会更加准确的描述为形参。

函数运行的机理与步骤总结:

1,获取参数值

2,把参数值传入表达式中并执行运算

3,返回。如果存在return语句,那么函数执行结束前会返回return语句操作的对象。如果没有,那么函数返回none。

4,形参与传入的参数值脱离关系。

形参相关总结:

1,每次函数调用都会创建自己独立的局部变量

2,全局变量与局部变量不会冲突

3,同样的形参名字可以存在于不同的函数而且彼此不会冲突

关于函数的调试:

以函数的方式进行程序的设计时,输入输出得到了很好地控制。如果函数最终的执行不是我们想要的结果,通常比较好的一种方式是在函数中间加入print语句来查看中间部分变量的变化。这部分具体的描述在之前也已经整理,在博客中也可以找得到。

另一个非常重要的注意点是:在你不知道到底是什么原因导致错误之前,不要随便改动代码。

函数的引用:

如果把一个或者几个函数写到了一个文件,那么这个文件就被称为一个模块。引用这个模块的函数的方法是使用import表达式,通常有三种使用的方式。

方式一: import block

这种方式在使用block模块中的函数fun时需要以以下方式调用:

Block.fun(参数)

方式二:from block import fun as my_fun

这样,我们在自己的代码中可以使用my_fun(参数)的方式来完成方式一的功能。

方式三:from block import *

使用这种方式,可以加模块名直接使用fun(参数)的形式。

需要注意的是,import不仅仅引入模块中的函数同时也引入了模块中的全局量。如果在之前的环境中有与之重名的全局量会被其覆盖,这是需要注意的事情。

想做一个简单的学习总结,没想到看似简单的东西内容确实不少。好的是我这是在整理自己的学习手记,要是真的做为提供给别人的一份教程,那我的工作量真得能够把自己吓住了。最后,祝过路人学习进步、事业有成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1695_week2_算法与函数(MIT使用Python编程学习手记) 的相关文章

  • 二级域名绑定二级目录的两种方法

    当用WordPress建站后 xff0c WordPress位于二级目录 xff08 v ar www html xff09 下 xff0c 进行域名解析时如何把域名解析到二级目录下 xff0c 网络上一般有两种方法 xff0c 一是利用接
  • PMP 真的没用吗?

    最近在备考2018 3 24 的pmp 认证考试 xff0c 有不少收获 xff0c 此前我曾在群里邀请大家一起备考 xff0c 一些人跳出来就说考这些有啥用 xff1f 干技术的把技术干好就行了 xff0c 技术人员最烦这些没点技术的项目
  • 一个嵌入式产品的从研发到量产的流程(作者:gooogleman@foxmail.com)

    作者 xff1a gooogleman 64 foxmail com 一个嵌入式产品的开发流程是 1 了解清楚客户需求 2 模具开发 3 硬件工程师准备硬件 xff0c 物料选型 xff0c 原理图 xff0c PCB和模具工程师商议PCB
  • 【电赛国赛备赛笔记】【赛题经验分享会】

    存在的问题 光流问题 起飞后定不住飞行过程中方向太偏光照度对飞行稳定性的影响纹理变化对飞行稳定性的影响 目前还没有很好的解决办法 xff0c 但如果不限制使用器材的话 xff0c 用双目摄像头可能可以解决问题 赛题准备 视觉方面的算法和代码
  • APM32f003替换STM32进行低成本系统开发

    STM32F003是基于Arm Cortex M0内核的32位MCU xff0c 工作电压为2 4 3 6V xff0c 主频48MHz xff0c 内置16KB Flash 定时器 ADC 通信接口 APM32F003系列主频与STM32
  • 【VSCode】Windows 下搭建 C++ 环境

    文章目录 Part I 预备知识Part II 搭建过程Part III 安装较高版本的MinGW Part I 预备知识 MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境 MinGW 收集了一系列免费的Windo
  • 路由器开发————概念理解

    区别 xff1a 静态ip 可以直接使用Internet上网的IP xff08 相当于公网IP xff09 pppoe 从运营商那里动态获取的静态IP的过程就是PPPOE 运营商为了提高他手上拥有的静态IP的利用率 xff0c 而做出的动态
  • 干了三年java外包,我转AI了....

    谈及到程序员外包这件事 xff0c 我想我是比较有发言权的一个 xff0c 即使我现在已经从一个外包公司的JAVA开发转行做人工智能算法 我是2018年毕业的 xff0c 一毕业找的第一份工作就是一家外包公司 xff0c 主要做的是承接甲方
  • 人工智能的算法有哪些?AI常用算法

    人工智能 xff08 AI xff09 是一个非常广泛的领域 xff0c 其中包含许多不同的算法和技术 以下是一些常见的人工智能算法 xff1a 人工智能的算法有哪些 xff1f 机器学习 xff08 Machine Learning xf
  • 卡尔曼滤波五个公式各个参数的意义

    卡尔曼滤波五个公式各个参数的意义 wccsu1994 2018 11 30 10 49 33 45928 收藏 218 分类专栏 xff1a 卡尔曼滤波 版权 系统的状态方程为 xff1a 这个状态方程是根据上一时刻的状态和控制变量来推测此
  • FutureTask 示例

    1 简单示例 2 泡茶 1 简单示例 创建 FutureTask FutureTask lt Integer gt futureTask 61 new FutureTask lt gt gt 1 43 2 创建并启动线程 Thread t1
  • Centos6.5下进行PHP版本升级

    统计插件 WP Statistics 要求PHP5 4以上 xff0c 可本机PHP为5 3 3 xff0c 无奈只有对服务器PHP进行升级 xff0c 遂写下本文 Step1 xff1a 查看安装服务器当前安装版本 php V Step2
  • 一段日子的结束, 也是一段日子的开始

    一个朋友说的 xff0c 一段日子的结束 xff0c 也是另一段日子的开始 也正是我现在的状态 xff0c 我结束了一段往事 xff0c 也因此开始了一段日子 xff0c 曾经的曾经已离我远去 昨天和好朋友聊天到很晚 xff0c 谈了很多
  • 岁月静好

    不是说马年会马上转运的 xff0c 是不是蛇年的时候前半年太幸福了 xff0c 用了太多的好人品 xff0c 各种奖学金 xff0c 各种申请中标 xff0c 各种荣誉 xff0c 然后我要还了 小猴子说我开始会依赖人了 xff0c 哈哈
  • STM32 中重定向printf 和 scanf

    uart c 如果使用 pragma import use no semihosting 则在MDK中不勾选use Microlib 当前代码直接重定向没使用 pragma import use no semihosting 故需要选择us
  • Ubuntu环境下Pixhawk原生固件PX4的编译

    Ubuntu下Pixhawk原生固件PX4的编译这个问题困扰了两天时间 xff0c 可能是博主脑力不够 xff0c 主要是环境搭建不起来 xff0c 主要原因应该是路径的原因 xff0c 最后在大师傅的帮助下还好成功将路径搭建好 xff0c
  • 远程连接虚拟机的Network error: Connection timed out问题

    MobaXterm远程连接虚拟机的Network error Connection timed out问题 我使用的是MobaXterm远程连接我使用VMware创建的虚拟机 更新一下 xff1a 如果出现这种问题 xff0c 极大可能是服
  • springboot项目接入天猫精灵

    springboot项目接入天猫精灵 最近工作需要使用到天猫精灵的语音功能 xff0c 大体是通过呼叫对应的 调用词 实现携带参数 xff0c 然后调用我项目中的接口 xff0c 以实现对应的业务 所以在此简单的记录下使用过程 实际上 xf
  • Lesson 9.2&9.3&9.4 黑箱:不可解释的深层神经网络&探索多层神经网络:层vsh(z)

    二 黑箱 xff1a 深层神经网络的不可解释性 首先从结构上来看 xff0c 多层神经网络比单层神经网络多出了 中间层 中间层常常被称为隐藏层 xff08 hidden layer xff09 xff0c 理论上来说可以有无限层 xff0c
  • UnicodeEncodeError: 'gbk' codec can't encode character ...

    使用Python写文件的时候 xff0c 或者将网络数据流写入到本地文件的时候 xff0c 大部分情况下会遇到 xff1a UnicodeEncodeError 39 gbk 39 codec can 39 t encode charact

随机推荐

  • 一文简单了解并构建DockerFile

    GreatSQL社区原创内容未经授权不得随意使用 xff0c 转载请联系小编并注明来源 GreatSQL是MySQL的国产分支版本 xff0c 使用上与MySQL一致 作者 xff1a 蟹黄瓜子文章来源 xff1a GreatSQL社区投稿
  • 头文件中定义和声明的问题

    头文件中定义和声明的问题 1 头文件中不可以放变量的定义 xff01 一般头文件中只是放变量的声明 xff0c 因为头文件要被其他文件包含 include xff0c 如果把定义放在头文件的话 xff0c 就不能避免多次定义变量 C 43
  • Apache中更改PHP版本型号

    如何对服务器PHP版本进行升级 xff0c 详看我另外一篇博文 xff0c 这篇文章我们将讲述如何在Apache中更改PHP版本型号 Step1 xff1a 查看Apache用的PHP什么版本 新建一个文档 xff0c 命名为info ph
  • 简述AGV通信接口标准-VDA5050

    引言 德国汽车工业协会 德语 xff1a Verband der Automobilindustrie e V 简称VDA xff0c 通过 其 34 VDA 5050 34 接口 xff0c 早在2019年起 xff0c 不同制造商的车辆
  • C语言结束输入(两种方法)

    方法1 xff1a 输入数据 while getchar 61 39 n 39 scanf 34 d 34 amp Data data i 43 43 61 Data 方法2 xff1a for i 61 0 i lt 100 amp am
  • OpenCV(项目)车牌识别3 -- 模板匹配

    目录 一 基础理论 1 思想 2 大致过程 二 详细过程 1 首先需要模板库 2 得到模板 3 原图限定大小 4 模板匹配 5 匹配所有子文件夹 xff0c 保存最佳得分 xff08 最匹配项 xff09 三 大致过程 xff08 细分类
  • PMP项目管理中的重要角色

    PMP及PMBOK有个大问题 xff0c 就是没有统一的角色职责及流程 xff0c 考试也是随意性很强 xff0c 这给考生带来很多困扰 一个管理体系 xff0c 首先是人员分工安排 比如 xff1a PRINCE2 xff0c 明确的组织
  • 书房再次升级啦~~

    国庆长假 xff0c 在家里面一顿折腾 xff0c 墙全部重新粉刷 xff0c 书房 卧室 客厅三种不同颜色 书房的颜色是当时在装饰城的展厅里面偷偷扣的墙皮 xff0c 在多乐士店色卡里面对出来的 xff0c 哈哈 ps 这篇日志的照片是用
  • 基于K近邻法的手写数字图像识别

    数字图像处理课程论文 题目 xff1a 数字图像识别 摘要 模式识别 PatternRecognition 是一项借助计算机 xff0c 就人类对外部世界某一特定环境中的客体 过程和现象的识别功能 xff08 包括视觉 听觉 触觉 判断等
  • Ubuntu 16.04升级内核到20.04

    一 首先需要从16 04 18 04 sudo mv etc apt sources list sudo mv etc apt sources list d list 1 改变源 xff08 粘贴下面这一段到终端并运行 xff09 cat
  • 互斥和二进制信号量的使用

    1 二进制信号量 semBCreate SEM Q FIFO SEM Q PRIORITY SEM EMPTY SEM FULL 有两个作用 xff1a xff08 1 xff09 任务间的互斥 xff0d xff0d 同一个任务获取和释放
  • 【C++】关于以下划线开头的变量名

    系 统头文件里将宏名 变量名 内部函数名用 34 34 开 头就是为了避免与用户用的名字冲突 因为当你 xff03 include 系 统头文件时 xff0c 这些文件里的名字都有了定义 xff0c 如果与你用的名字冲突 xff0c 就可能
  • 1689_MATLAB处理Excel文件提升篇

    全部学习汇总 xff1a GreyZhang g matlab MATLAB once used to be my daily tool After many years when I go back and read my old lea
  • 1690_Python中的复数数据类型

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 之前总结的知识中设计的数据类型有整形 浮点 字符串等 xff0c 这些类型表示的都是
  • linux 命令终端提示符显示-bash-4.1#

    昨晚对服务器自带Python升级后 xff0c 终端就不是以前root 64 主机 43 路径的显示方式了 查了很多资料 xff0c 有人说是root目录下 bash profile和 bash两个文件缺失 xff0c 但我的这两个文件是存
  • 1691_python学习笔记之week3_递归

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 最初接触递归的时候觉得这个有点不好理解 xff0c 怎么能够有这种思维方式 xff1
  • 1692_Git版本控制管理 21-40

    全部学习汇总 xff1a GreyZhang toolbox 常用的工具使用查询 xff0c 非教程 xff0c 仅作为自我参考 xff01 github com 我曾经多次在工作中接触软件版本管理 xff0c 接触过多个公司的软件版本管理
  • 1693_Python处理Excel学习小结 21-41

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 说起来这是我来到北京之后开始接触的第一个新技术 xff0c 我对此痴迷 xff0c
  • 1694_week1_MIT使用Python编程学习手记1

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 首先说明一下 xff0c 这部分信息的整理只是我个人的理解 由于自己的知识功底以及英
  • 1695_week2_算法与函数(MIT使用Python编程学习手记)

    全部学习汇总 xff1a GreyZhang python basic My learning notes about python github com 首先说明一下 xff0c 这部分信息的整理只是我个人的理解 由于自己的知识功底以及英