一流程序员靠数学,最后都怎么,样了

日期:2020-02-13 18:32:51   来源:互联网   编辑:小狐   阅读人数:271

一流程序员靠数学,最后都怎么,样了(图1)

网上曾流传着这样的段子,戏说程序员中的等级:

一流程序员靠数学,二流靠算法,三流靠逻辑,四流靠SDK,五流靠Google和StackOverFlow,六流靠百度和CSDN。低端的看高端的就是黑魔法!

玩笑里藏的是残忍的现实,异步君不禁流下泪水。虽然整个大学就在被高等数学、离散数学、微积分、线性代数等数学课支配的恐惧中度过,但还是总在挂科的边缘徘徊,根本没有重视数学。

一流程序员靠数学,最后都怎么,样了(图2)

在学上有一个著名的“木桶理论”是指用一个木桶来装水,如果组成木桶的木板参差不齐,那么、这个木桶能装多少水,只能由这个木桶中最短的木板决定。

一流程序员靠数学,最后都怎么,样了(图3)

对普通编程来说,高中数学成绩不错就可以了。但涉及到高端编程就吃力了,比如算法、深度学习等。不得不说,数学这块“木板”往往决定了程序员能否往更高层次进阶。

年少不知数学重要,长大方悔没学好。

生成乘法表

考虑三个数字 a、b 和 n,其中 n 是整数,使得 a×n = b。此处我们可以说,b是 a 的第 n 个倍数。例如,4 是 2 的第二个倍数,1024 是 2 的第 512 个倍数。

一个数字的乘法表列出了该数字的所有倍数。例如,2 的乘法表是这样的(这里给出了 2 的前三个倍数)

我们的下一个程序就是为用户输入的任何数字生成最大到乘数 10 的乘法表。

>>> item1 = “apples”>>> item2 = “bananas”>>> item3 = “grapes”>>> print“At the grocery store, I bought some {0} and {1} and {2}”.formatitem1, item2, item3At the grocery store, I bought some apples and bananas and grapes

首先,我们创建了三个(item1、item2 和 item3)每个指代不同的字符串(苹果、香蕉和葡萄),在 print函数中,我们键入字符串,它包含了三个在大括号中的占位符,分别为{0}、{1}和{2}。接下来是.format,它的参数为之前创建的三个,这会告诉 Python 按照列出的顺序,用这些保存的值来填充这三个占位符,因此,在 Python 的输出文本中,第一个的内容替换了{0},第二个的内容替换了{1},依此类推。

使用指向我们要输出的值并非必要,我们可以在.format中直接键入值,如下例所示:

请注意,占位符的数量和(或键入值)的数量必须相等。了解了 format的工作原理之后,接下来让我们看看生成乘法表的程序:

multi_table函数实现程序的主要功能,它将输出 a 的乘法表(a 也是参数)因为我们要输出从 1 到 10 的乘法表,所以在?处有一个 for 循环,它将迭代这些数字中的每一个数字,输出它本身和数字 a 的乘积。当你执行程序时,它会让你输入一个数字,该程序输出其乘法表:

看到这张清晰又有秩序的乘法表了吗?这正是我们使用了.format函数,根据可读、统一的模板输出的内容。你可以使用 format函数来进一步控制数字输出的形式。例如,如果希望数字只有两位小数,可以参考下面的例子:

Enter a number : 5>>> “{0}”.format(1.25456)“1.25456”>>> “{0:.2f}”.format(1.25456)“1.25”

第一个 format 语句将我们输入的数字原封不动地输出。在第二个语句中,我们将占位符修改为{0:.2f},这意味着我们只需要小数点后面的两个数字,其中 f 表示一个浮点数。如你所见,在下一个输出中,小数点后只有两个数字。请注意,如果数字小数点后的位数多于你指定的位数,则该数字将四舍五入,例如:

>>>“{0:.2f}”.format(1.25556)“1.26”

在这里,1.25556 向上取整到最接近的百分位,并输出为 1.26。如果将.2f 应用到整数上,则会在小数点后面添加零:

>>>“{0:.2f}”.format (1 )“1.00”

添加两个零是因为我们指定在小数点后输出两个数字。

计算整数因子

当非零整数 a 除另一个整数 b,余数为 0 时,a 称为 b 的因子。例如,2 是所有 偶数整数的因子。我们可以编写下面的函数来确定非零整数 a 是否是另一个整数 b 的因子:

>>> def is_factor(a, b) if b % a == 0: return True else: return False

我们使用%运算符来计算余数。如果你发现自己在问“4 是不 是 1024 的因子”这类问题,可以使用 is_factor函数得到答案:

>>> is_factor(4, 1024) True

对于任何正整数 n,如何找到其所有的正因子?对于 1 和 n 之间的每个整数, 我们检查 n 除以该整数后的余数。如果余数为 0,那么这个整数就是一个因子。使 用 range函数来编写一个程序,它将遍历 1 到 n 之间的每个数字。

在编写完整的程序之前,先来看看 range如何工作。range函数的典型用法如下所示:

在这里,我们设置了一个 for 循环,并给 range函数传入了两个参数。range 函数从第一个整数参数(起始值)开始,一直到第二个整数参数(停止值)截止。 在这个例子中,我们告诉 Python 输出该范围内的数字,从 1 开始,到 4 停止。注意, 这意味着 Python 不会输出 4,所以后输出的数字是停止值之前的数字 3。同时也 要注意,range函数只接收整数作为参数。

你也可以不指定 range函数的起始值,在这种情况下,起始值被假定为 0。 例如:

由 range函数产生的两个连续整数之间的差称为步长值(step value)默认情 况下,步长值为 1。要定义其他的步长值,请将其指定为第三个参数(这时,需指 定起始值)例如,下面的程序将输出 10 以下的奇数:

我们已经了解了 range函数是如何工作的,接下来考虑一个因子计算程序。因 为我们将要编写一个相当长的程序,所以在 IDLE 器里编写,而不是在交互式 的 IDLE 界面中。你可以在 IDLE 中选择 File->New Window或者 New File来启 动器。请注意,我们首先用三个单引号来注释代码,这些引号之间的文本 不会被 Python 作为程序的一部分执行,它们只是我们对程序的注释。

factors函数定义了一个 for 循环,在n处,该循环使用 range函数对 1 和输入 的数字之间的每个整数迭代一次。这里,我们要迭代到用户输入的整数 b,所以停 止值被设置为 b+1。对于每个整数 i,程序检查输入数字 b 除以 i 后是否没有余数, 如果没有余数,就输出 i。

当你运行此程序(选择 Run->Run Module)时,它会要求你输入一个数字。如 果你输入的数字是正整数,程序会输出其因子,例如:

如果输入的是非整数或负整数,程序会输出一条错误信息,并要求你输入一 个正整数:

Your Number Please: 15.5 Please enter a positive integer

在这个例子中,我们通过检查程序的无效输入,使程序对用户更加友好。因为 我们的程序仅用于查找正整数的因子,所以要检查输入的数字是否大于 0 并且 使用 is_integer函数检查输入的数是否是整数,以确保输入有效。

如果输入的数不是正整数,程序将输出一个用户友好的指令,而不是一长串的错误信息。

-END-

最后,异步君给大家推荐一本书,可以将程序设计和数学巧妙地结合起来,从简单的项目开始,应用Python解决高中和大学低年级的数学问题,比如几何、概率、统计以及微积分等,为进一步学习更复杂的数学内容以及Python编程语言打下坚实的基础。

本书也可作为Python初学者的入门读物,通过学习书中的示例程序和完成那些编程,读者可以提高自己的编程能力和技巧。

一流程序员靠数学,最后都怎么,样了(图4)

今日福利

一流程序员靠数学,最后都怎么,样了(图5)

Python数学编程

阿米特·萨哈(Amit Saha) 著

许杨毅,刘旭华 译

今日互动话题:

本文相关词条概念解析:

整数

整数(Integer):像-2,-1,0,1,2这样的数称为整数。德语中的整数叫做Zahlen。(整数是表示物体个数的数,0表示有0个物体)整数是人类能够掌握的最基本的数学工具。整数的全体构成整数集,整数集合是一个数环。在整数系中,自然数为0和正整数的统称,称0为零,称-1、-2、-3、…、-n、…(n为整数)为负整数。正整数、零与负整数构成整数系。一个给定的整数n可以是负数(n∈Z-),非负数(n∈Z*),零(n=0)或正数(n∈Z+)。如果不加特殊说明,我们所涉及的数都是整数,所采用的字母也表示整数。

网友评论
相关阅读
事业单位教师编制要求年龄,先来看看这5个基本要求

事业单位教师编制要求年龄,先来看看这5个基本要求

你开始备考了吗?担心自己不符合报名条件今天民师教育小编就带大

安雅,埃斯基尔森演讲,在一个瞬息万变的世界中,教育不仅让学生做好考试准备

安雅,埃斯基尔森演讲,在一个瞬息万变的世界中,教育不仅让学生做好考试准备

尼尔斯布鲁克 哥本哈根商学院首席执行官兼安雅·埃斯基尔森受邀

粉笔教育的1元包邮礼包由来已久

粉笔教育的1元包邮礼包由来已久

中新网9月23日电 9月23日,粉笔教育针对2021年国家考

中注协,准考证打印,对于还有没打印的考生

中注协,准考证打印,对于还有没打印的考生

准考证打印,昨天始已经正式开始了。前后三天都将是打印的高峰期

大专可报,公馆,致力于为教师

大专可报,公馆,致力于为教师

茂南区公馆镇蒲炉塘小学茂名市茂南区公馆镇蒲炉塘小学,是茂南区

所以单招大专生是可以参加部队专升本的

所以单招大专生是可以参加部队专升本的

单招大专生能在部队考军校吗?关于这个问题,首先要注意的是大专

强基计划实施首年即遇冷,教育面对面

强基计划实施首年即遇冷,教育面对面

今年高校招生最引人注目的改革,应该是第一年实施的“强基计划”

刚刚,北京71万考生收到CPA报名退款

刚刚,北京71万考生收到CPA报名退款

昨天,准考证已经正式开始打印了!考生都在紧张地准备考试或打印

如果你的本科不是985或者重点985,不料白白浪费4年时间,家长的认可,都怪我们

如果你的本科不是985或者重点985,不料白白浪费4年时间,家长的认可,都怪我们

很多家长、考生在高考报考时,经常忽略一个关键的问题,那就是地

国办,传染病防控知识等教育

国办,传染病防控知识等教育

新京报快讯 据网,9月23日,办公厅发布《关于加快医学教育创