導航:首頁 > 編程語言 > python楊輝三角

python楊輝三角

發布時間:2022-02-24 21:55:11

1. 求教 楊輝三角的遞歸解法 python

1、九九乘法表

def multiplicationTable():
for i in range(1, 10):
for j in range(1, i):
print "%d * %d = %d\t" % (j, i, j * i),
print "%d * %d = %d\n" % (i, i, i * i),

if __name__ == '__main__':
multiplicationTable()
2、楊輝三角

def pascalsTriangle(n):
line = [1]
print "\t" * (n - 1),
print "%d\n" % line[-1],
for i in range(n - 1):
new_line = [1]
for j in range(i):
new_line.append(line[j] + line[j + 1])
new_line.append(1)
line = new_line
print "\t" * (n - i - 2),
for each in line[:-1]:
print "%d\t\t" % each,
print "%d\n" % line[-1],

if __name__ == '__main__':
pascalsTriangle(7)

2. 怎麼用python實現這樣的楊輝三角啊

按照你的要求用字元串類型編寫的楊輝三角的Python程序如下

defprintYangHui(n):

foriinrange(1,n+1):

ifi==1:

s="1"

ifi==2:

s="1,1"

ifi>2:

s1=""

begin=0;

forjinrange(0,(i-3)+1):

begin1=s.find(",",begin)

begin2=s.find(",",begin1+1)

ifbegin2==-1:

begin2=begin1+2

s1=s1+str(int(s[begin:begin1])+int(s[begin1+1:begin2]))+","

begin=begin2-(begin2-begin1-1)

s="1,"+s1+"1"

print(s)

n=int(input())

printYangHui(n)

源代碼如下(注意源代碼的縮進)

3. 如何用Python輸出一個楊輝三角

NUM=5
defprintLine(lineList):
lineList=[str(tmpNum)fortmpNuminlineList]
print("%s%s"%(""*(NUM-len(lineList)),"".join(lineList)))
foriinrange(NUM):
ifi<2:
yhList=[1]*(i+1)
else:
yhList[1:-1]=[(tmpNum+yhList[j])forj,tmpNuminenumerate(yhList[1:])]
printLine(yhList)

4. 新手求教:請問怎樣用python 顯示楊輝三角,任意輸入一個數N,輸出一個N+1層的楊輝三角。

我來試一下:

#!/usr/bin/python
#coding:utf-8
n=-1
whilen<0:
n=raw_input("Enteranonnegativeinteger>=0:")
try:
n=int(n)
except:
print"pleaseenterinteger!"
n=-1
tmppascal=[0,]*(2*n+3)
pascal=[]
foriinrange(n+2):
pascal+=[tmppascal[:],]
center=n+1
pascal[1][center]=1
x=y=0
foriinrange(2,n+2):
ifn%2==1:
ifi%2==0:
x=1
y=2*n+2
else:
x=2
y=2*n+1
else:
ifi%2==1:
x=1
y=2*n+2
else:
x=2
y=2*n+1
forjinrange(x,y,2):
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j+1]
ifn%2==0:
max=pascal[n+1][center]
else:
max=pascal[n+1][center-1]
maxlen=len(str(max))
forrowinpascal[1:]:
forcolinrow[1:-1]:
ifcol==0:
col=""
fm='{0:^'+str(maxlen)+'}'
printfm.format(col),
print

5. python新手 楊輝三角

1) enumerate(iterable) 是對一個可遍歷對象進行遍歷時添加遍歷序號的方法. 例如:

>>>alst=['%02d'%x*2forxinrange(7,3,-1)]
>>>alst
['0707','0606','0505','0404']
>>>fori,iteminenumerate(alst):
...printi,item
...
00707
10606
20505
30404
>>>

2) while True: 進入持續循環; 通常在循環體內有判斷邏輯, 當滿足條件時 break 或 return

6. 用Python輸出一個楊輝三角的例子

用Python輸出一個楊輝三角的例子
這篇文章主要介紹了用Python和erlang輸出一個楊輝三角的例子,同時還提供了一個erlang版楊輝三角,需要的朋友可以參考下
關於楊輝三角是什麼東西,右轉維基網路:楊輝三角
稍微看一下直觀一點的圖:
代碼如下:

楊輝三角有以下幾個特點:
每一項的值等於他左上角的數和右上角的數的和,如果左上角或者右上角沒有數字,就按0計算。
第N層項數總比N-1層多1個
計算第N層的楊輝三角,必須知道N-1層的數字,然後將相鄰2項的數字相加,就能得到下一層除了最邊上2個1的所有數字。 聽起來有點像遞歸的思想,我們不妨假設我們已經知道N-1層的數字,來計算一下N層的數字吧。
代碼如下:
def _yanghui_trangle(n, result):
if n == 1:
return [1]
else:
return [sum(i) for i in zip([0] + result, result + [0])]

上面代碼中,result表示N-1層楊輝三角的數字。實習上,我們在列表2端各補了一個0,然後計算相鄰項的和,就可以直接得到結果。
稍微完善一下代碼:
代碼如下:
def yanghui_trangle(n):
def _yanghui_trangle(n, result):
if n == 1:
return [1]
else:
return [sum(i) for i in zip([0] + result, result + [0])]
pre_result = []
for i in xrange(n):
pre_result = _yanghui_trangle(i + 1, pre_result)
yield pre_result
if __name__ == "__main__":
for line in yanghui_trangle1(5):
print line

_yanghui_trangle可以用lambda的方式簡寫,但是可讀性感覺會變差,所以還是保持現狀好了。
tips: 上面的程序並沒有考慮數據格式化的問題,也就是說輸出不是完美的三角形。
鑒於最近在學習erlang,補上一個erlang版本的,性能上沒有測試過,不過還是要驚嘆於函數式語言的表達能力:
代碼如下:

-mole(yanghui).
-author(lfyzjck).
-export([triangle/1]).
triangle_next(P) ->
lists:zipwith(fun(X, Y) -> X+Y end, [0|P], P ++ [0]).
triangle(1) ->
[[1]];
triangle(N) ->
L = triangle(N - 1),
[H|_] = L,
[triangle_next(H)|L].

7. python楊輝三角函數問題

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
執行你那個生成器,並生成6行楊輝三角的數據
經過觀察你就會發現這個列表推導式[L[i-1] + L[i] for i in range(len(L))]是產生每一行的楊輝三角數據的。

L[i-1]+L[i]是根據前一行指定索引位置的楊輝三角數據,產生新的一行的數據

8. 如何用python輸出楊輝三角

程序輸出需要實現如下效果:
[1]
[1,1]
[1,2,1]
[1,3,3,1]
......
方法:迭代,生成器def triangles() L = [1] while True: yiled L L =[1] + [L[i] + L[I+1] for i in range(len(L)-1)] + [1] n = 0 for t in triangles(): print(t) n += 1 if n == 10: break

實現邏輯:
1.由於yield為生成器中斷輸出,所以有了第一個次輸出為[1]
2.繼續while下面的yield後的循環,此時list長度為1,將其代入L中的len(L),得出[L[i]+L[i+1] for i in range(1-1)]得出為空值,所以yield L輸出為[1,1]
3.此時len(L)值為2,代入得出[L[i]+L[i+1] for i in range(2-1)]為[L[i]+L[i+1] for i in range(1)],i能取值為0,代入後為[L[0]+L[1]],而L[0]和L[1]的值均為1(有上面結果可知),所以輸出結果為[1,2,1]
4.由第三條可知此時len(L)值為3,代入得出[L[i]+L[i+1] for i in range(2)],i取值為0和1,通過循環輸出有兩個值,均為3,分別由[L[0]+L[1]],[L[1]+L[2]]
以此類推即可

9. python楊輝三角形原理

triangles里用到了yield,yield 的作用就是把一個函數變成一個 generator,帶有 yield 的函數不再是一個普通函數,Python 解釋器會將其視為一個 generator,調用 triangles(5) 不會執行 triangles函數,而是返回一個 iterable 對象!在 for 循環執行時,每次循環都會執行 fab 函數內部的代碼,執行到 yield L 時,triangles函數就返回一個迭代值,下次迭代時,代碼從 yield L的下一條語句繼續執行,而函數的本地變數看起來和上次中斷執行前是完全一樣的,於是函數繼續執行,直到再次遇到 yield。

1那個2去哪了

你看else語句L1 = [1,1]每次L都是基於這個L1生成的 比如L=[1,2,1] 那麼下一個L1就是[1,3,3,1],下一句L = L1 所以每次都是新的L1生成


2畫紅圈的地方應該是和L1.insert(i,L[i-1+i])意思一樣

不一樣,插入的值是兩個數的和

deftriangles(max):
L=[1]
n=0
while(n<max):
n=n+1
if(n==2):
L=[1,1]
yieldL
else:
i=1
L1=[1,1]
while(i<=n-2):
L1.insert(i,L[i-1]+L[i])
i=i+1
L=L1
yieldL


fornintriangles(5):
printn

10. 如何用Python實現楊輝三角和心

方法
ef printlove(start,length,midnumber=0,flag=31):
for i in range(31):
if i<start or i>start+length-1 and i<15-(midnumber-1)/2 or i>15+(midnumber-1)/2 and i<31-start-length or i> 30-start or i==flag:
print " ",
else:
print "*",
print ""
for i in range(16):
if i ==0:
printlove(4,3)
elif i==1:
printlove(1,9)
elif i>=2 and i<=5:
printlove(0,i+10)
elif i==6:
printlove(1,7,7,15)
elif i>=7 and i<=8:
printlove(i-5,6,5-(i-7)*2)
elif i==9:
printlove(5,6,1)
elif i==10:
printlove(8,6,1)
elif i==15:
printlove(15,1,1)
else:
printlove(i-1,16-i,1)

閱讀全文

與python楊輝三角相關的資料

熱點內容
伺服器如何創建站點 瀏覽:4
鄞州山姆附近啟蒙編程哪家好 瀏覽:98
解壓好玩的手工玩具 瀏覽:877
idea是c語言的編譯器嗎 瀏覽:545
單片機p4口優缺點 瀏覽:226
自動機學習演算法 瀏覽:422
為什麼源代碼顯示不出編譯 瀏覽:571
pdf的文件怎麼列印 瀏覽:56
安卓系統國產怎麼樣 瀏覽:69
端游命令方塊在哪 瀏覽:967
導數運演算法則構造函數 瀏覽:206
我的世界網易版伺服器怎麼導入 瀏覽:449
jpg圖片壓縮小 瀏覽:847
上饒公交app怎麼坐不了公交 瀏覽:475
廣西獲客系統源碼 瀏覽:137
張鐸程序員 瀏覽:420
全民解壓音樂60秒 瀏覽:525
當選定文件夾後 瀏覽:583
h3c和華為命令 瀏覽:367
加密空頭頭寸啥意思 瀏覽:304