杨辉三角python代码 不要括号_关于杨辉三角python代码的问题
匿名用戶
1級
2017-09-02 回答
楊輝三角,是二項式系數在三角形中的一種幾何排列。
前提:每行端點與結尾的數為1.
每個數等于它上方兩數之和。
每行數字左右對稱,由1開始逐漸變大。
第n行的數字有n項。
第n行數字和為2n-1。
第n行的m個數可表示為 C(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。
第n行的第m個數和第n-m+1個數相等 ,為組合數性質之一。
每個數字等于上一行的左右兩個數字之和。可用此性質寫出整個楊輝三角。即第n+1行的第i個數等于第n行的第i-1個數和第i個數之和,這也是組合數的性質之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
(a+b)n的展開式中的各項系數依次對應楊輝三角的第(n+1)行中的每一項。
將第2n+1行第1個數,跟第2n+2行第3個數、第2n+3行第5個數……連成一線,這些數的和是第4n+1個斐波那契數;將第2n行第2個數(n>1),跟第2n-1行第4個數、第2n-2行第6個數……這些數之和是第4n-2個斐波那契數。
將各行數字相排列,可得11的n-1(n為行數)次方:1=11^0; 11=11^1; 121=11^2……當n>5時會不符合這一條性質,此時應把第n行的最右面的數字”1”放在個位,然后把左面的一個數字的個位對齊到十位… …,以此類推,把空位用“0”補齊,然后把所有的數加起來,得到的數正好是11的n-1次方。以n=11為例,第十一行的數為:1,10,45,120,210,252,210,120,45,10,1,結果為 25937424601=1110。
完整代碼:
#!/usr/bin/python
#coding=utf-8
# __author__ = 'cy'
#輸出楊輝三角數值表
def triangle(num):
#初始表值為[1]
triangle=[[1]]
#添加i個值([1])至triangle表,eg:[1]*3,triangle=[[1], [1], [1]]
for i in range(2, num+1):
triangle.append([1]*i)
#改變triangle表的值,eg:
#當num=5時,i取5,j取3
#triangle[4][1] = triangle[3][1]+triangle[3][0]
#triangle[4][2] = triangle[3][2]+triangle[3][1]
#triangle[4][3] = triangle[3][3]+triangle[3][2]
#相當于triangle表的第4位的值(這里的值為一個表)的第1,2,3位值等于第3位的值(這里的值也是一個表)的第1,2,3位值和0,1,2的值分別相加(即錯位相加)。
for j in range(1, i-1):
triangle[i-1][j] = triangle[i-2][j]+triangle[i-2][j-1]
return triangle
#格式化輸出(輸出的是一個表)
def printtriangle(triangle, width):
#列寬
column = len(triangle[-1])*width
for sublist in triangle:
result = []
for contents in sublist:
#控制間距
result.append('{0:^{1}}'.format(str(contents), width))
#控制縮進,{0:^{1}}:空格在兩邊補齊空位‘^’居中對齊,‘:’號后面帶填充的字符
print('{0:^{1}}'.format(''.join(result), column))
#啟動函數
if __name__ == '__main__':
#輸入整數
num = int(input('How many rows do you want:'))
#打印信息
print "The triangle rows as follows:"
triangle = triangle(num)
#列寬
width = len(str(triangle[-1][len(triangle[-1])//2]))+3
printtriangle(triangle, width)
總結
以上是生活随笔為你收集整理的杨辉三角python代码 不要括号_关于杨辉三角python代码的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络tcp/ip协议,UDP,HT
- 下一篇: 杨辉三角的几种 Python 实现方法