python杨辉三角_学点数学和编程终身受益:看看杨辉三角形

b5a4062ad14a683aab47504be206908b.png

他叫杨辉,长啥模样无所谓,反正古代人都是当官的样儿

一个叫杨辉的人,中国南宋末年的数学家、数学教育家。大约在13实际中叶至后半叶活动于苏杭一带。虽然他的生卒年和生平无从详考,但是,他确实是我们中国古代数学为数不多的几个杰出的研究者之一,其代表当然是“杨辉三角形”了。

杨辉三角形是二项式系数在三角形中的一种几何排列。在欧洲,这个叫做帕斯卡三角形。这个三角形在印度叫做“须弥山之梯”;在伊朗叫做“海亚姆三角”。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年!将近400年,不要因此对我国有莫名的荣耀感,真的不要,因为人家帕斯卡也做出了很大的贡献,而且考虑到后来西方自然科学全面的领先和现如今幸福生活基本都是源于自然科学和逻辑的推进......

回到杨辉三角形,它把组合数 内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的优美结合。真的太优美了,赶紧看看下面的短片,它阐释了许多这个不起眼的三角形的奥秘,而且还有科学家最新研究的成果:

神秘的杨辉三角形(摘自油兔必)

杨辉三角形的构造

拿出一张纸,首先在纸的顶部中心写一个1。三角形的下一行是通过将前一行中的相邻元素相加而构成的,由于第一行中的1旁边没有任何内容,因此将相邻元素视为0:

2d6eeafb42c01c4fa67c21109328dbeb.png

接下来就是在下一行重复上面的过程,于是你就又看到了一个这样的新行:

d34dec9c92c313e7aeb108a5d9c2c476.png

5428a259b3e3f55f100a8eac9b7f1b3f.png

实际上,杨辉三角形(我是中国人,当然不说帕斯卡三角形了哈啊哈)可以无穷尽的持续下去,因此它可以产生无穷的行,就像下面这样:

767c85507e909e26bdd8c26fe2457ee9.png

杨辉三角形有众多神奇之处,从上面的视频中可大概看出一二:我也是头一次发现,杨辉三角形还能在概率论中也有应用,比如你想计算生“三个女孩、二个男孩”这样的理想家庭的概率,居然也能从它中求出。还有就是神奇的“分形几何”的谢尔宾斯基三角形也居然与杨辉三角形有关联!太不可思议了,我之前写的《python编程乌龟宝典》这本书中就举例了“谢尔宾斯基三角形”,我的公众号里也有这篇文章,摘出来大家有兴趣可以读下:

混沌游戏,让你惊掉下巴

刘老师今天的课程就是讲解Python编程打印出杨辉三角形:这个杨辉三角形是奥赛、青少年各种信息竞赛、或是应聘程序员笔试考验你基本知识的一个经常出的题目,因为它用不了多少行代码,但却能考验你编程思想中的“循环”或“列表”的基本概念,很好地考验你的基本功。

 1#!Writen By McoLiu
2import pprint
3#1-->建立一个空的二维列表10*10(打印10行杨辉三角数),将里面填满0
4a = []
5for i in range(10):
6    a.append([])
7    for j in range(10):
8        a[i].append(0)
9#pprint.pprint(a)  #这个用于临时测试
10
11#2-->两边(首尾)都填充为1。
12for i in range(10):
13    a[i][0] = 1
14    a[i][i] = 1
15#pprint.pprint(a)  #这个用于临时测试
16
17#3-->中间填充杨辉三角形的数。
18for i in range(2,10):
19    for j in range(1,i):
20        #关键是找出下面这个,根据杨辉三角的概念用索引来构建!
21        a[i][j] = a[i-1][j-1] + a[i-1][j]
22#4-->最后打印出杨辉三角形
23for i in range(10):
24    for j in range(i+1):
25        print(a[i][j],end=' ')
26    print()

代码1:Python代码打印10行杨辉三角形

当然,你也可以做一个函数,传入一个参数k用来指定要打印的杨辉三角形的行数。这样你想打印多少行都行了。好了,下面仔细看下下面这个杨辉三角形的大图,也许你也会发现一些有关宇宙的秘密!

2101c93e1f48fd00649ef49cad705ee7.png

d4e49fe34bb71d72d4b9075b7f4d88bd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值