自然数的概念直接来自人们的生活,但数学家们为自然数N建立了完整的公理体系。皮亚诺公理就是接受最广的一个。

我们这里使用扩展的自然数(即包含了0的自然数)

  • ①N中有一个元素,记作0。
  • ②N中任一个元素都能在 N 中找到一个元素作为它的后继者。
  • ③0不是任何元素的后继者。
  • ④不同元素有不同的后继者。
  • ⑤(归纳公理)N的任一子集M,如果0∈M,并且只要x在M中就能推出x的后继者也在M中,那么M=N。

让我们来自己动手实现一个单纯的自然数系统N。

为了避免和我们习惯的数字混淆,我们将完全不使用任何程序中的数字变量。

  • ① 对于0元素,我们用None表示,通过函数zero获得。
  • ②任何元素都有后继,我们用一个函数nNext来获得它。
  • ④不同元素有不同的后继,用一个函数nPre来获得某个元素是谁的后继。
  • ③0不是任何元素的后继,所以nPre(zero())将报错。
  • ⑤上面四条公理已经足够建立起自然数的框架,最后的归纳公理将用来建立整个比较和运算体系。

我们首先看关于0的定义,用两个函数来实现:
# 返回特例数字“0”,其特点是它不是任何数字的后继

def zero():return ['自然数的起点','零']
def isZero(a):return a==['自然数的起点','零']

zero()获得特例数字0,这个0,可以用任何内容来代表。唯一的关键是我们有办法用isZero()函数判断它是0即可。
为了这一原则显得更加明显,我们这里特意用了比较复杂的表示:用一个含有两个元素的列表来代表这个0。

接下来是后继与前驱的实现,也用了两个函数:

# 返回a的后继
def nNext(a):def number(cmd):if cmd== 'pre':# 只知道前驱是areturn aelse:# 其他一概不知return Nonereturn number

nNext()这里涉及一点高阶函数的知识。构造了一个函数,用这个函数来代表数字。这个函数接收一个参数,当这个参数是"pre"的时候,返回这个数字的前驱,显然是为了给下一个函数nPre使用。除此之外,任何其他的参数都返回None,代表一无所知。

# 返回a的前驱是谁(a是谁的后继),这也是a唯一知道的事情
def nPre(a):if isZero(a):raise TypeErrorreturn a('pre')

nPre()除了数字0报错之外,其余的数字,直接返回它的前驱,很明确。

在后面的课程中,我们将从这几个看似简单的基本函数开始,构建起完整的算术框架。我们将深刻地理解,我们日常所使用的数字背后其实真的只有几条公理而已。

python学数学1-1:认识数字--自然数公理相关推荐

  1. python1到100个自然数_python学数学1-1:认识数字--自然数公理

    自然数的概念直接来自人们的生活,但数学家们为自然数N建立了完整的公理体系.皮亚诺公理就是接受最广的一个. 我们这里使用扩展的自然数(即包含了0的自然数) ①N中有一个元素,记作0. ②N中任一个元素都 ...

  2. python找数字做加法升级版答案_python学数学1-2:认识数字--自然数加法

    目前的数字,只能通过这样的方式来定义. z = zero() one = next(z) two = next(one) three = next(two) four = next(three) 而且 ...

  3. python @符号_用Python学数学之Sympy代数符号运算

    在我们初.高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题.不断运算上,计算方法.运算技巧.笔算能力以及数学公式的记忆仿佛成了我们学习数 ...

  4. python数学符号代码_用Python学数学之Sympy代数符

    在我们初.高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题.不断运算上,计算方法.运算技巧.笔算能力以及数学公式的记忆仿佛成了我们学习数 ...

  5. 用Python学数学之Sympy代数符号运算

    在我们初.高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题.不断运算上,计算方法.运算技巧.笔算能力以及数学公式的记忆仿佛成了我们学习数 ...

  6. python符号计算_用Python学数学之Sympy代数符号运算

    在我们初.高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题.不断运算上,计算方法.运算技巧.笔算能力以及数学公式的记忆仿佛成了我们学习数 ...

  7. python找数字、做加法_Python数学1-2:理解数字——自然数加法,python,12,认识

    目前的数字,只能通过这样的方式来定义. z = zero() one = next(z) two = next(one) three = next(two) four = next(three) 而且 ...

  8. python积分计算高等数学_Python与高等数学之Python与积分!用Python学数学

    计算机科学的起源是为了解决数学问题,所以,在某种程度上,可以把计算机科学归为数学的一个分支.因此,可以通过使用Python程序来学习高等数学中的知识,如积分.微分等,反之,也可以通过解决数学问题深化P ...

  9. 学python对数学要求吗_python 学习和数学知识 - 文章分类 - 风中小郎君 - 博客园...

    文章分类 - python 学习和数学知识 http://www.cnblogs.com/vamei 摘要:它们的区别在于应用的对象不同.1.map()map() 是一个Series的函数,DataF ...

最新文章

  1. P2B: Point-to-Box Network 点云目标跟踪(CVPR 2020)
  2. 儿智展---国内首个少儿智能产品专业展11月登陆上海
  3. skywalking es7_SpringCloud下skywalking的快速入门
  4. Android—Window、WindowManage、屏幕绘制及刷新
  5. 《C++ Primer 第五版》(第1~6章总结)
  6. 数据:DeFi总锁定价值突破170亿美元
  7. 解决window.open被拦截问题
  8. java数据流无法输出验证码
  9. 服务器主板显示B1,电脑检测卡显示b1是啥意思
  10. vscode为各自项目添加launch和setting
  11. 阿里云 部署并开启nodejs应用
  12. 函数参数约定、传递顺序、传递方式
  13. QTP软件测试工具学习
  14. tongweb自动部署_将web应用迁到TongWeb
  15. Adobe Reader历史版本安装包下载
  16. 一次局域网入侵全过程
  17. 物联网嵌入式学习路线
  18. 基于JWT的API权限鉴定
  19. This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively use
  20. 计算机网络学习笔记(广域网)

热门文章

  1. 超级账本学习之二:了解Peer
  2. tomcat 优化解决方案
  3. 编译原理(龙书第二版)--怎么求FIRST集
  4. 给i奥 自言自语 giao难系列
  5. 从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天
  6. Unity shader弹痕,脚印做法(理论实现,实际应用要考虑很多问题),个人分享,欢迎交流
  7. SX1281驱动学习笔记一:Lora驱动移植
  8. 2018年上海米其林指南--榜单
  9. 巨控GRM230模块在分散式污水行业专用解决方案
  10. dcloud云函数中如何使用事务