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