python实现杨辉三角
生活随笔
收集整理的這篇文章主要介紹了
python实现杨辉三角
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在楊輝三角形中,有一個很大的規(guī)律:
就是每一行的第一個和最后一個都是1,那中間的數(shù)據(jù)是怎么生成的呢?
中間的數(shù)據(jù)其實就是一個公式:(假設(shè)n表示行,m表示列)
ist1[n][m] = list1[n-1][m-1] + list1[n-1][m]
- 楊輝三角會用到y(tǒng)ield
generator(生成器)和函數(shù)的執(zhí)行流程不一樣。函數(shù)是順序執(zhí)行,遇到return語句或者最后一行函數(shù)語句就返回。而變成generator的函數(shù),在每次調(diào)用next()的時候執(zhí)行,遇到y(tǒng)ield語句返回,再次執(zhí)行時從上次返回的yield語句處繼續(xù)執(zhí)行。 這里的楊輝三角代碼其實就是一個生成器,而yield的作用就是惰性生成一行楊輝三角并且輸出,對于生成器需要調(diào)用next()時,才會繼續(xù)執(zhí)行語句。但是實際操作過程中,我們通常用for循環(huán)來代替next(),讓生成器不斷生成下一行。
- 楊輝三角居中顯示
先把數(shù)據(jù)類型轉(zhuǎn)化為字符串類型,然后利用 ''.join() 來讓一個列表的字符串連接在一起中間空格
下接下來代碼實現(xiàn)
def triangle(): # 楊輝三角的計算N = [1]while True:yield N # generator特點在于:在執(zhí)行過程中,遇到y(tǒng)ield就中斷,并且返回值,下次又繼續(xù)執(zhí)行N.append(0) # 每次都要在最后一位加個0,用于后續(xù)的疊加N = [N[i] + N[i - 1] for i in range(len(N))]def print_triangle(x): # 楊輝三角的居中對齊和輸出a = 0for t in triangle(): # 這里可以每次調(diào)用一個N(得力于Yield函數(shù))new_list = []for i in range(len(t)):new_list.append(str(t[i])) # 將數(shù)字列表轉(zhuǎn)化為字符串列表string = ' '.join(new_list) # 字符串相連接中間一個空格width = x * 10 # 設(shè)置字符寬度print(string.center(width)) # 居中對齊并輸出a += 1if a == x: # 判斷輸入幾行breakline_number = int(input("請輸入打印幾行: ")) print_triangle(line_number) # 打印行 復(fù)制代碼?
總結(jié)
以上是生活随笔為你收集整理的python实现杨辉三角的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 82_Linux检测指定ip指定端口是否
- 下一篇: 打印杨辉三角python