Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。
Python中使用for while循环打印杨辉三角练习(列表索引练习)。
杨辉三角是一个由数字排列成的三角形数表,一般形式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
.......................
杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。
方法一:
__author__ = 'Brad'
n = int(input('请输入你想打印杨辉三角的行数:')
newline = [1]
oldline = []
print(newline)
for i in range(1,n):
oldline = new.copy()
oldline.append(0)
newline.clear()
for j in range(i+1):
newline.append(oldline[j-1]+oldline[j])
print(newline)
杨辉三角的特征:第n行有n个元素,从第三行起,newline[1]=oldline[0]+oldine[1]……杨辉三角可以在右侧扩展出一列全部为0,这样从第二行开始,newline[0]=oldline[-1]+oldline[0],并且newline[0]也可由oldline的元素计算得出。
1 0
1 1 0
1 2 1 0
1 3 3 1 0
1 4 6 4 1 0
1 5 10 10 5 1 0
1 6 15 20 15 6 1 0
#第一行的列表需要直接打印
#这个newline是经过计算
#通过对这个oldline的元素进行计算得出newline中的元素
#剩余n-1行,通过循环n-1次分别打印经计算出的newline,所以区间设为(1,n)
开始计算第二行,将第一行copy给oldline,用于计算。
oldline列表添加一个0,成为我们想要的杨辉三角变形。
做一个空行newline,里面的元素通过计算得出
oldline[0]+oldline[1],oldline[0]+oldline[1]索引顺序重复不好处理,可以尝试使用负索引oldline[-1]+oldline[0],oldline[0]+oldline[1]正好得出第二行的元素:[1,1],这时尝试将j的区间设为[0,1]即[i+1]
后面逐行也都符合要求。
结果为:
:6
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
方法二:
杨辉三角从第三行开始,triangle[1]到triangle[n-1]都可以由上一行的元素计算得出。
__author__ = 'Brad'
n = int(input('请输入你想打印杨辉三角的行数:')
triangle=[[1],[1,1]]
for i in range(2,n):
pre=triangle[i-1]
cur=[1]
for j in range(i-1):
cur.append(pre[j]+pre[j+1])
cur.append(1)
triangle.append(cur)
print(triangle)
triangle[0]和triangle[n-1]不计算,分别在第一个循环首尾定义和增加,只计算剩余的元素,将每一行的元素添加为triangle的元素,作为下一行cur计算的pre。
前两行不方便计算,直接列出。从第三行开始计算,i = 2 pre=tirangle[1],cur[1]=1+1即pre[0]+pre[1],所以将j的区间设置为(i-1),接下来计算顺利,直接打印即为杨辉三角。
结果为:
:6
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]
方法三:
__author__ = 'Brad'
n = int(input('请输入你想打印杨辉三角的行数:')
triangle=[]
for i in range(n):
row=[1]
triangle.append(row)
if i==0:
continue
for j in range(i-1):
row.append(triangle[i-1][j]+triangle[i-1][j+1])
row.append(1)
print(triangle)
在这个方法中row相当于方法二中的cur,每次计算初始都是[1].
当i==0时,triangle再添加[1]变为[[1],[1]],
当i==2时,row[1]增加triangle[1][0]+triangle[1][0],然后再增加[1],变为[[1],[2],[1]。
然后依次打印。结果为:
:6
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]
转载于:https://blog.51cto.com/13320196/1968250
Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。相关推荐
- java使用循环打印杨辉三角,for循环输出杨辉三角形(java)
for循环输出杨辉三角形(java) 杨辉三角形(java) 1.代码 代码如下(示例): public class YanghuTriangle { public static void main( ...
- Java打印杨辉三角
Java打印杨辉三角 打印杨辉三角首先要理清楚思路,找到其中的规律,,然后通过其中的规律用java循环的方法想办法解决掉.我们通过仔细的观察不难发现杨辉三角除每行最左侧和最右侧的数字外,每个数字等于它 ...
- python每行输出5个数_python打印杨辉三角及输出第m行第k个数
1.打印杨辉三角及输出第m行第k个数 1.计算到m行,打印出k项 第m行有m项,m是正整数,因此k一定不会大于m,这个需求需要保存m行的数据,那么可以使用一个嵌套结构[[],[],[]] m=int( ...
- 用python打印杨辉三角
杨辉三角的形式如下图(图片来自维基百科)所示: 用列表的形式呈现如下: [1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1] [1, 5, 10, 10, ...
- python杨辉三角居中_利用python打印杨辉三角
用python打印杨辉三角 介绍 杨辉三角,是初高中时候的一个数列,其核心思想就是说生成一个数列,该数列中的每一个元素,都是之前一个数列中,同样位置的元素和前一个元素的和. 正好在python中,也就 ...
- JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角
思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素.public ...
- python代码打印杨辉三角_python打印杨辉三角
原博文 2020-03-24 18:03 − python打印杨辉三角 ```python def transfor(fun): # 定义一个转换函数, def war(N): # 带参数的装饰器,把 ...
- php中怎样输出杨辉三角,php趣味编程 - php 打印杨辉三角
php趣味编程 - php 打印杨辉三角 /* 打印杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 1 $i 来代表行数 $j 来代表一行第几个数 数组 ...
- 多种语言多种方法打印杨辉三角(二项式展开式各项系数)
打印杨辉三角&二项式展开式各项系数 C语言实现 法一:数学排列组合公式法 法二:找规律法,二维数组,通俗易懂 法三:法二优化,一维数组 法四:递归 Java实现 Python实现 (a + b ...
最新文章
- Linux下PS1设置
- Widgets 整理
- php pkcs 1格式的公钥,解说--2--微信支付RSA公钥PKCS1格式转化成PKCS8格式的公钥
- 1字符集 iso latin_ISO-8859-1 、Latin-1 西欧编码介绍及应用
- matlab 把一个文件夹下的所有图片(可以包含在子文件夹下)考到指定文件夹下...
- 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
- Hexo错误_FATAL missed comma between flow collection entries at line
- boost::is_convertible相关的测试程序
- Enter Further Contact Person error message
- Picture POJ - 1177(矩形周长并))
- Idea创建简单Java Web项目并部署Servlet
- mysql语句1=1_mysql - “where 1 = 1”语句
- Logstash+elasticsearch+elastic+nignx
- 【java学习之路】(java框架)011.SpringMVC入门
- 音视频基础概念与流程
- 三度冲刺IPO,负债率超70%的喜相逢能否成功敲钟?
- java乘法口诀编程题_【视频+图文】Java经典基础练习题(二)输出9*9乘法口诀表...
- 软件性能测试的几种方法
- python2048游戏撤销上一部功能怎么实现_python 实现 2048 游戏 (一)
- 小白学Linux笔记(一)——安装虚拟机和Ubuntu
热门文章
- boost::geometry::convert用法的测试程序
- boost : has_to_string的用法测试程序
- boost::core模块cmath相关测试程序
- Boost:排序的bimap双图的测试程序
- C++类的Const数组的初始化
- VTK:可视化之Blow
- VTK:PolyData之IsoLines
- VTK:几何对象之Dodecahedron
- OpenCV Lucas-Kanade光流的实例(附完整代码)
- OpenCV delaunay三角剖分和voronoi镶嵌的实例(附完整代码)