自然数的概念直接来自人们的生活,但数学家们为自然数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':

# 只知道前驱是a

return a

else:

# 其他一概不知

return None

return number

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

# 返回a的前驱是谁(a是谁的后继),这也是a唯一知道的事情

def nPre(a):

if isZero(a):

raise TypeError

return a('pre')

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

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

原文链接:https://blog.csdn.net/xiaorang/article/details/105384263

python1到100个自然数_python学数学1-1:认识数字--自然数公理相关推荐

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

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

  2. python学数学1-1:认识数字--自然数公理

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

  3. python1到100奇数和_python计算1~100的和,1~100奇数的和,1~100偶数的和,一条代码求1~100的和...

    1.计算1~100的数之和----for循环实现1~100的和 sum1 = 0 for i in range(1,101): sum1= sum1 +i i+= 1print(f"1-10 ...

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

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

  5. python1到100奇数相加_Python:从inpu将奇数相加

    有点小问题.我正在编写一个简单的程序,它接受数字的输入(例如1567),它将奇数相加,并在输出中列出它们.这是我的代码:import math def oddsum(n): y=n%10 if(y== ...

  6. 学数学或物理学到 high 很刺激,是一种怎样的经历与感受?

    吴育昕 ,Google-Megvii-FAIR炼丹中 田渊栋 等 1346 人赞同 当年学线性代数. 一开始看的都是中规中矩的教材, 从行列式出发, 讲矩阵, 讲线性变换. 然后有一天没忍住, 看了那 ...

  7. 为什么要学数学?因为它真的没用啊!

    全世界只有3.14 % 的人关注了 爆炸吧知识 数学之用 无用之用 有一天,表妹过来问了我两个问题: 数学有什么用?那些深奥的公式对于普通人有什么意义? 相信大多数人都有这个疑问,但总是找不到一个标准 ...

  8. NOIP 为什么要学 数学

    NOIP 为什么要学 数学 1.初赛 问题求解 就是两个数学问题.全卷100分占10分.初赛的其他部分还会涉及数学. 2.复赛 day2第一道就是数学问题,没有经过专门的学习,该题是拿不到100分的. ...

  9. jzoj5935小凯学数学

    jzoj5935小凯学数学 Description 由于小凯上次在找零问题上的疑惑,给大家在考场上带来了很大的麻烦,他决心好好学习数学         本次他挑选了位运算专题进行研究 他发明了一种叫做 ...

最新文章

  1. 数字营销迎来黄金期 TalkingData推出“营销云”平台
  2. Redis 你该懂的点
  3. 号称迄今为止最快,.NET6带来了什么?
  4. 视频编解码器常见问题介绍
  5. hdu 1023 Train Problem II
  6. WPF 文字换行TextWrapping 显示不全用省略号TextTrimming 显示不全弹提示内容ToolTip
  7. L2Dwidget.js L2D网页动画人物添加
  8. 决胜未来,2019年前端开发十大战略性技术布局
  9. 单片机c语言定时器控制流水灯,单片机-定时器流水灯
  10. 啊哈C语言 第2章 梦想直航(第1-8讲)
  11. 企业传播需要拥有的5个风险意识
  12. Joplin 的思维导图 Mindmap(脑图)插件
  13. 33c3 CTF web WriteUp
  14. 饭后小甜点leetcode——堆
  15. 计算机网络技术艺术设计方面,【艺术设计论文】数字技术下的新媒体艺术设计(共3150字)...
  16. 华为社招机考考什么_牛客网-华为-2020届校园招聘上机考试-软件类机考-3
  17. Markdown KaTex 积分符号
  18. 【Hadoop】P2 Hadoop简介
  19. Zotero文献同步
  20. 【JavaScript-进阶】详解数据类型,内存分配,API元素对象获取

热门文章

  1. 分数混合运算简便方法_分数混合运算和简便计算
  2. 最近组织游泳社的体会
  3. html banner图片滚动,无缝循环滚动(适用banner、图片滚动)
  4. 西北乱跑娃 -- mysql常用操作命令
  5. 如何将XPS批量转换成PDF
  6. linux【网络】网络请求延迟变大了,我该怎么办?
  7. Unity_画线_地面画框_类似汽车停车位_拖尾组件Trail Renderer_Demo
  8. c语言dfs算法初步讲解,[转载]算法初步
  9. vue中使用mapBox绘制圆形范围
  10. 四叉树C++实现(增删改查,找邻居)